{"version":3,"sources":["account-info-light-auth.js","account-info.js","account-summary-payment-options.js","account-summary.js","add-account-verify.js","application-error.js","auto-pay-controller.js","automatic-draft-taskInher.js","automatic-draft.js","budget-billing.js","change-account.js","deferred-payment-arrangement.js","delegation-intercept-table.js","disambiguation.js","display-iframe.js","energy-usage.js","equal-payment-plan.js","featured-offers-short-copy.js","fp-pdf-test.js","kubra-iframe.js","manage-profile.js","multiple-accounts.js","my-account-summary-controller.js","ohio-choice-calendar.js","ohio-choice-table.js","paperless-billing.js","paybill.js","payment-billing-history.js","payment-options.js","PBilling.js","pick-your-due-date.js","profile-settings.js","report-outage.js","sign-in-auth.js","tertiary-nav-auth.js","usage-analysis.js","components.auth.min.js","cc-accountSelector/cc-account-selector.js","cc-addAccount/add-account-missing-apt.js","cc-addAccount/add-account-multiple-address-suggestion.js","cc-addAccount/addAccount-container-success.js","cc-addAccount/addAccount-experienceSelector.js","cc-addAccount/addAccount-success-multipleAccount.js","cc-addAccount/addAccount-success-singleAccount.js","cc-addAccount/addAccount-track.js","cc-addAccount/addAccount.js","cc-accountSelectorPage/cc-accountSelectorPage.js","cc-balance/balance.js","cc-balance/speed-pay-iframe.js","cc-billingAndPaymentPrograms/billing-and-payment-programs.js","cc-budgetBilling/budgetBilling.js","cc-budgetBilling/budgetBillingEnrollmentSuccess.js","cc-budgetBilling/budgetBillingManageCredit.js","cc-budgetBilling/budgetBillingReviewQuarterly.js","cc-budgetBilling/budgetBillingReviewYearly.js","cc-budgetBilling/budgetBillingUnenroll.js","cc-budgetBilling/budgetBillingUnenrollmentSuccess.js","cc-budgetBilling/shellBudgetBilling.js","cc-budgetBilling/shellManageBudgetBilling.js","cc-care/cc-CARE.js","cc-dashboard/cc-balance-widget.js","cc-dashboard/cc-bpa-component-controller.js","cc-dashboard/cc-bpa-no-native.js","cc-dashboard/cc-dashboard.js","cc-dashboard/cc-prepaid-summary-widget.js","cc-dashboard/cc-widget-MB.js","cc-dashboard/notifications.js","cc-dashboard/widget-BPP.js","cc-dashboard/widget-due.js","cc-dashboard/widget-EnergyUsage.js","cc-dashboard/widget-manage-products-services-controller.js","cc-correspondence/correspondence.js","cc-delegate/account-permissions.js","cc-disconnectExtension/disconnect-extension.js","cc-disconnectExtension/disconnect-success.js","cc-disconnectExtension/shell-disconnect-extension.js","cc-dueDateExtension/due-date-extension-success.js","cc-dueDateExtension/due-date-extension.js","cc-dueDateExtension/shell-due-date-extension.js","cc-efi/cc-efi-errorModal.js","cc-efi/cc-efi-modal.js","cc-energyUsageGraph/cc-energyUsageGraph.js","cc-energyUsage/cc-energyUsage.js","cc-installmentPlans/cc-installment-plans-screen.js","cc-installmentPlans/cc-installment-plans.js","cc-autoPay/cc-auto-pay-add-account-controller.js","cc-autoPay/cc-auto-pay-cancel-modal.js","cc-autoPay/cc-auto-pay-landing-page.js","cc-autoPay/cc-auto-pay-payment-method-controller.js","cc-autoPay/cc-auto-pay-shell.js","cc-autoPay/cc-auto-pay-success-controller.js","CC-InviteUser/invite-user.js","cc-manageBankAccount/add-manage-bank-acount.js","cc-manageBankAccount/cc-edit-bank-nickname.js","cc-manageBankAccount/delete-bank-account.js","cc-manageBankAccount/manage-bank-account.js","cc-manageAutoPay/manage-auto-pay-main.js","cc-manageAutoPay/manage-auto-pay-unenroll-success.js","cc-manageAutoPay/manage-auto-pay-unenroll.js","cc-manageAutoPay/manage-auto-pay.js","cc-manageServiceOrder/service-order-detail.js","cc-manageServiceOrder/service-order-list.js","cc-manageServiceOrder/service-order-main.js","cc-manageProductAndServices/manage-products-services-controller.js","cc-manageProductAndServices/mps-one-time-purchases-controller.js","cc-manageProductAndServices/mps-subscriptions-controller.js","cc-notificationPreferences/confirm-notificaction-change-modal.js","cc-notificationPreferences/notification-preference.js","CC-OhioChoice/CC-ohioChoiceConsentController.js","CC-OhioChoice/CC-ohioTermsModal.js","cc-manageAccount/bpp-de-enroll-modal.js","cc-manageAccount/cc-send-my-letter-modal-controller.js","cc-manageAccount/manage-edit-mailing-address.js","cc-manageAccount/manage-edit-nickname.js","cc-manageAccount/manage-missing-apt.js","cc-manageAccount/manage-multiple-address-suggestion.js","cc-manageAccount/manager-account.js","cc-manageAccount/manager-modal.js","CC-Prepaid/cc-autoReload-track.js","CC-Prepaid/cc-statements-shell.js","CC-Prepaid/prepaid-shell.js","cc-paymentAssistanceOptions/payment-assistance-options.js","cc-profileSettings/manage-change-email.js","cc-profileSettings/profile-linking-new-user-yes-no.js","cc-profileSettings/profile-settings.js","CC-RecurringContributions/cc-recurring-contributions-manage.js","cc-rateAnalysis/cc-rateAnalysis.js","CC-ServiceOrder/cc-service-order-manager.js","CC-StartStopMove/cc-move-s2-1-MoveOutAddress.js","CC-StartStopMove/cc-move-s2-3-ScheduleMoveOut.js","CC-StartStopMove/cc-move-s2-4-LastBillAddress.js","CC-StartStopMove/cc-move-s3-1-MoveInAddress.js","CC-StartStopMove/cc-move-s3-2-Installations.js","CC-StartStopMove/cc-move-s3-3-scheduleMoveIn.js","CC-StartStopMove/cc-move-s4-1-NewBillAddress.js","CC-StartStopMove/cc-move-s4-2-Review.js","CC-StartStopMove/cc-move-step1-contact-info.js","CC-StartStopMove/cc-move-step1-delinquency-check.js","CC-StartStopMove/cc-move-step2.js","CC-StartStopMove/cc-ssm-shell.js","cc-third-party-search/cc-third-party-search-shell.js","cc-third-party-search/cc-third-party-search.js","cc-umc/cc-umc-modal-public.js","cc-umc/cc-umc-modal.js","cc-accountSelector/modals/cc-view-all-accounts-modal.js","cc-balance/howToPay/how-to-pay.js","cc-balance/howToPay/success-pay.js","cc-billingAndPayment/features/activity-shell.js","cc-billingAndPayment/features/balance-activity.js","cc-billingAndPayment/features/billing-and-payment-activity.js","cc-billingAndPayment/features/cc-cancel-onetime-payment-modal.js","cc-billingAndPayment/features/cc-cancel-payment-modal.js","cc-billingAndPayment/features/cc-manage-scheduled-payment.js","cc-billingAndPayment/features/pdf-not-found-modal.js","cc-bni/POCToastModalPage/POC-Toast-Modal-Page-Controller.js","cc-budgetBilling/components/cc-care-component.js","cc-cep/modals/fp-modal-accept-work-order.js","cc-cep/modals/fp-modal-advanced-filter.js","cc-cep/modals/fp-modal-assign-work-order.js","cc-cep/modals/fp-modal-bundle-work-order.js","cc-cep/modals/fp-modal-cancel.js","cc-cep/modals/fp-modal-decline.js","cc-cep/modals/fp-modal-dispatch.js","cc-cep/modals/fp-modal-invite-user.js","cc-cep/modals/fp-modal-multi-dispatch.js","cc-cep/modals/fp-modal-ready-for-invoice.js","cc-cep/modals/fp-modal-review.js","cc-cep/modals/fp-modal-save-changes.js","cc-cep/modals/fp-modal-schedule-assign.js","cc-cep/modals/fp-modal-user-administration.js","cc-cep/modals/fp-modal-work-complete.js","cc-dashboard/modals/cc-modal-delegation-invite.js","cc-correspondence/PaperlessBilling/paperless-billing-enroll.js","cc-energyUsage/component/cc-sso-component.js","cc-delegate/modals/cc-modal-account-permission-edit-user.js","cc-delegate/modals/cc-modal-account-permission-resend-invite-link.js","cc-delegate/modals/cc-modal-account-permissions-delete-user.js","cc-fixedBill/cc-enrollment/enrollment-manage-credit-fixedBill.js","cc-fixedBill/cc-enrollment/enrollment-manage-fixedBill.js","cc-fixedBill/cc-enrollment/enrollment-plan-details.js","cc-fixedBill/cc-enrollment/enrollment-success-fixedBill.js","cc-fixedBill/cc-enrollment/enrollment-terms-fixedBill.js","cc-fixedBill/cc-enrollment/enrollment.js","cc-fixedBill/cc-unenroll/unenroll-from-fixedBill-ARC.js","cc-fixedBill/cc-unenroll/unenroll-from-fixedBill-success.js","cc-fixedBill/cc-unenroll/unenroll-from-fixedBill.js","cc-fixedBill/cc-unenroll/unenroll.js","cc-installmentPlans/cc-manage-installment-plans/cc-manage-installment-plans.js","cc-installmentPlans/steps/cc-installment-plan-success.js","cc-installmentPlans/steps/cc-installment-type.js","cc-installmentPlans/steps/cc-review-and-submit.js","cc-manageAutoPay/modals/cc-manageAutoPay-add-bank-account.js","cc-manageAutoPay/modals/cc-modal-add-new-bank-account.js","cc-manageAutoPay/modals/cc-modal-update-deligate-bank-account.js","cc-manageAutoPay/modals/cc-unenroll-autopay.js","cc-manageProductAndServices/modals/cc-all-accounts-modal.js","cc-manageProductAndServices/modals/cc-cancel-product-modal.js","cc-manageProductAndServices/modals/cc-update-speedpay-payment-method-modal.js","cc-manageProductAndServices/modals/cc-upgrade-product-modal.js","cc-notificationPreferences/additionalOptions/additional-options.js","cc-notificationPreferences/billing/billing.js","cc-notificationPreferences/payments/payments.js","cc-notificationPreferences/outages/outages.js","cc-notificationPreferences/serviceOrders/serviceOrders.js","CC-Prepaid/AddFunds/cc-prepaid-add-funds-speedpay.js","CC-Prepaid/AddFunds/cc-prepaid-add-funds-success.js","CC-Prepaid/AddFunds/cc-prepaid-add-funds.js","CC-Prepaid/Auto-Reload/cc-autoReload-s1-1-when.js","CC-Prepaid/Auto-Reload/cc-autoReload-s2-1-amount.js","CC-Prepaid/Auto-Reload/cc-autoReload-s3-1-bancAcct.js","CC-Prepaid/Auto-Reload/cc-autoReload-s4-1-review.js","CC-Prepaid/Auto-Reload/cc-autoReload-succes.js","CC-Prepaid/components/cc-add-bank-account-prepaid-component.js","CC-Prepaid/components/cc-low-balance-component.js","CC-Prepaid/ManageAutoReload/cc-manage-auto-reload.js","CC-Prepaid/ManageAutoReload/manage-autoreload-success-modal.js","CC-Prepaid/ManageAutoReload/manage-autoreload-unenroll-modal.js","CC-Prepaid/Enroll/cc-prepaid-1-education-pg.js","CC-Prepaid/Enroll/cc-prepaid-2-terms-conditions.js","CC-Prepaid/Enroll/cc-prepaid-3-load.js","CC-Prepaid/Enroll/cc-prepaid-enroll-success.js","CC-Prepaid/Statements/cc-prepaid-1-statements.js","CC-Prepaid/unenroll/confirm.js","CC-Prepaid/unenroll/loose-benefits.js","CC-Prepaid/unenroll/security-deposit.js","CC-Prepaid/unenroll/unenroll-success.js","cc-profileSettings/emailSubscriptions/email-subscriptions.js","cc-profileSettings/manageEmail/manage-email.js","cc-profileSettings/manageEmail/modal-manage-add-email.js","cc-profileSettings/manageEmail/modal-manage-email.js","cc-profileSettings/managePhoneNumbers/manage-phone-numbers.js","cc-profileSettings/managePhoneNumbers/modal-manage-add-phone.js","cc-profileSettings/managePhoneNumbers/modal-manage-phone-numbers.js","cc-profileSettings/signInAndSecurity/sign-in-and-security.js","CC-RecurringContributions/cc-contribution-success/cc-contribution-success.js","CC-RecurringContributions/cc-contribution-success/cc-contribution-unenroll-success.js","CC-RecurringContributions/cc-contribution-type/cc-contribution-type.js","CC-RecurringContributions/cc-contribution-unenroll/cc-contribution-unenroll.js","CC-ServiceOrder/cc-service-order/cc-service-order.js","CC-RecurringContributions/components/cc-recurring-contributions.js","CC-ServiceOrder/cc-view-service-order/cc-view-service-order.js","cc-pyodd/pickYourDueDate/pick-your-due-date.js","cc-third-party-search/customer-search/cc-third-party-search-customer.js","cc-third-party-search/property-search/cc-third-party-search-property.js","cc-third-party-search/results/cc-third-party-search-view-details.js","cc-balance/howToPay/formToPay/form-to-pay.js","cc-balance/howToPay/formToPay/payment-amount.js","cc-balance/howToPay/formToPay/payment-date.js","cc-balance/howToPay/formToPay/payment-method.js","cc-balance/howToPay/formToPay/review-pay.js","cc-balance/howToPay/formToPay/submit-payment.js","cc-bni/banners/bp/bp-banner.js","cc-bni/banners/ca/ca-banner.js","cc-cep/features/dashboard/fp-dashboard.js","cc-cep/features/invoiceOrders/fp-company-invoices-controller.js","cc-cep/features/orderDetails/fp-order-details.js","cc-cep/modals/components/fp-technical-pricing-service-request.js","cc-cep/modals/components/fp-technical-pricing-work-order.js","cc-cep/layout/header/fp-header.js","cc-cep/features/orders/fp-orders-controller.js","cc-correspondence/PaperlessBilling/ReviewAndEnroll/reviewAndEnroll.js","cc-correspondence/PaperlessBilling/SelectAccounts/selectAccounts.js","cc-cep/features/dashboard/alerts/alerts.js","cc-cep/features/dashboard/analytics/fp-analytics.js","cc-cep/features/dashboard/companyOverview/fp-company-details-controller.js","cc-cep/features/dashboard/invoices/fp-company-invoices-widget-controller.js","cc-cep/features/dashboard/users/fp-all-users-controller.js","cc-cep/features/orderDetails/customerLogistics/fp-customer-logistics.js","cc-cep/features/orderDetails/technicalPricing/fp-technical-pricing.js","cc-cep/features/dashboard/alerts/serviceRequest/fp-company-alerts-service-request-controller.js","cc-cep/features/dashboard/alerts/workOrders/fp-company-alerts-work-order-controller.js","cc-cep/features/dashboard/analytics/serviceRequest/fp-analytics-service-request-controller.js","cc-cep/features/dashboard/analytics/workOrders/fp-analytics-work-orders-controller.js","cc-cep/features/orderDetails/technicalPricing/inspectReplace/fp-technical-pricing-inspection-replacement-controller.js","cc-cep/features/orderDetails/technicalPricing/installation/fp-technical-pricing-installation-program-controller.js","cc-cep/features/orderDetails/technicalPricing/removal/fp-technical-pricing-removal-program-controller.js","cc-cep/features/orderDetails/technicalPricing/resolutionDetails/fp-technical-pricing-resolution-details.js","cc-cep/features/orderDetails/technicalPricing/serviceRequest/fp-technical-pricing-ecn-controller.js","cc-energyUsage/cc-energyUsageDto.js","cc-notificationPreferences/notification-preferences-assets-service .js","directives/duke.account-selector.js","directives/fp-customer.js","forms/duke.checkbox-list.js","forms/duke.radio-button-auth.js","services/cc-bni-asset-service.js","services/fp-addendum-service.js","services/fp-alerts-service.js","services/fp-apigee-api-config-service.js","services/fp-app.service.js","services/fp-csv-service-orders.js","services/fp-data-models-config-service.js","services/fp-data-models-dto-service.js","services/fp-date-helper-service.js","services/fp-generic-helper-service.js","services/fp-grouping-pager-service.js","services/fp-indexedDb-service.js","services/fp-invite-user-factory.js","services/fp-invoice-service.js","services/fp-modal-service.js","services/fp-pager-service.js","services/fp-pdf-factory.js","services/fp-pdf-service.js","services/fp-service-order-service.js","services/fp-service-orders-factory.js","services/fp-token-service.js","services/fp-users-service.js","services/installment-payment-plans-and-eligibility-service.js","services/installment-payment-plans-extensions-and-eligibility-service.js","services/polling-web-worker-service-accepted-orders.js","services/polling-web-worker-service-invoice-orders.js","services/polling-web-worker-service-service-order.js","services/web-worker-service-accepted-orders.js","services/web-worker-service-addendum.js","services/web-worker-service-company-details.js","services/web-worker-service-invoice-orders.js","services/web-worker-service-users.js","cc-addAccount/services/cc-add-account-factory.js","cc-billingAndPayment/services/bpa-csv-service.js","cc-budgetBilling/services/budget-billing-factory.js","cc-budgetBilling/services/care-programs-factory.js","cc-dashboard/services/cc-dashboard-factory.js","cc-correspondence/PaperlessBilling/paperless-billing-factory.js","cc-correspondence/services/correspondence-factory.js","cc-energyUsage/service/cc-energyUsage-service.js","cc-energyUsage/service/cc-energyUsageexportService.js","cc-fixedBill/services/fixedBill-factory.js","cc-installmentPlans/services/installment-plans-factory.js","cc-notificationPreferences/services/notification-preferences-factory.js","cc-notificationPreferences/services/notification-preferences-helper.js","cc-third-party-search/services/csv-export-service.js"],"names":["AccountInfoControllerLightAuth","$scope","$window","$rootScope","$element","$compile","$timeout","vm","this","$el","accounts","singleMultipleName","accountSelected","singleMultiple","selectAccount","account","selectedAccount","JSON","stringify","accountNumberSelected","AccountNumber","$moreInfoPane","showMoreBtn","angular","element","showAllMsg","showLessMsg","currentShowMsg","find","setShowLabels","more","less","showIcon","toggleMoreInfo","toggleButton","preventDefault","currentToggleButton","currentTarget","attr","slideToggle","$watch","length","remove","$","document","width","element2","window","resize","querySelectorAll","closeModal","modal","AccountInfoController","$templateCache","$controller","indexOfSelected","selected","isSelectedArray","tooltip","container","indexSelected","index","i","IsPrimary","maxLength","clearSearch","accountVerificationForm","data","lastSsn","fedtax","analytics","value","selectType","event","type","onSelectItem","item","itemValueText","text","radioselected","push","innerWidth","insertBefore","insertAfter","onresize","back","forth","validations","validationsLength","errors","errorsLength","password","passwordLength","passwordField","letters","firstline","secondline","thirdline","numbers","symbols","stringReverse","evalRegex","regex","test","getStrength","errorCode","strength","exp","returnErrorCode","strengthRegex","setStrength","tooShort","$setValidity","$validate","checkWhiteSpaces","relativeURL","location","pathname","toggleMoreInfoOnKeyUp","keyCode","passwordStrengthIndicator","regexp_smallLetters","regexp_capitalLetters","regexp_digits","regexp_specialChars","regexp_3times","regexp_whitespace","str","out","start","pswrd","$name","val","p2","toLowerCase","substring","parseInt","indexOf","accountSummaryPaymentOptionsController","$sce","$document","$cookies","$http","myAccountFactory","focusout","linkPopover","hover","css","placementPositionStr","ready","context","source","$apply","pO","getJson","then","greeting","JsonAnalitycs","jsonAnalyticsPaymentOptions","poTrackings","getElementsByClassName","setAttribute","dataLayer","paymentLoader","paymentSatus","catch","reason","accountSummaryController","paybillMessage","on","isFunction","fn","popover","scroll","tooltipMessage","updateTooltipMessage","rv","Tooltip","ShowTooltipButton","Message","IsdeferredPayment","SecondButtonLink","SecondButtonLabel","PayNowButtonLink","PayNowButtonLabel","trigger","content","html","animation","_this","data-category","data-label","data-action","isMobile","mouseOverTooltip","orientation","func","isTooltipOpen","callViewBill","summarySatus","summaryLoader","StrJsonAnalitycs","jsonAnalyticsMyAccount","asTrackings","actionType","billDate","BillDate","HTTPStatus","ShowTooltip","error","console","addAccountVerify","applicationErrorController","postDataLayer","action1","action2","action","dataLayerFormat","event-category","event-label","event-action","vpv-name","autoPayController","$filter","selectedCount","automaticDraftInheritedTestController","extend","baseFormUtilitiesController","automaticDraftController","tooltipPlacement","changeAccountNumberLabel","master","e","blur","reset","resetValue","name","bankingInformationAutomaticDraftForm","accountNumber","$setViewValue","init","$setPristine","budgetBillingController","changeAccount","apiServices","invalidEmail","loadingSpinner","alreadyVerified","focusIn","emailChanged","closeBtn","primaryAccountSaved","userChoice","selectedRow","isCheck","available","setClickedRow","$index","$event","PrimaryAccount","prop","srcAcctId","SrcAcctId","srcAcctId2","SrcAcctId2","srcSysCd","SrcSysCd","isResidential","IsResidential","jurisdiction","Jurisdiction","dataLayerPush","saveOrCancel","undefined","backdrop","keyboard","serviceSuccess","ValidEmail","validationIcon","ReturnCodeIcon","validationMsg","ReturnCodeMessage","ReturnCode","fiveAttempts","ProfileDataForm","$setUntouched","serviceError","present","old","validateEmail","model","controller","$valid","dataObj","email","$viewValue","toTheTop","splice","table","el","deferredPaymentArrangementController","$q","formCtrl","forms","my_form","goTo","link","label","pageTitle","innerHTML","trim","message","concat","href","enroll","deferred","defer","method","url","headers","Content-Type","timeout","promise","resolve","reject","response","Success","enrollSuccess","scrollTo","RedirectUrl","log","eligible","vpvObject","displayModal","category","arguments","title","subtitle","successOrFailure","dataLayerObject","delegatedInterceptTableController","cookiesService","commongaTaggingService","getUrl","delegationList","hostname","getElementById","virtualPagePush","_len","theArguments","Array","_key","arrayElements","checkScrollHeight","agreementTextElement","getElementsByName","scrollTop","offsetHeight","scrollHeight","isDisabled","delegationRequest","updateRequest","suppliers","accountIDs","isLoading","isExpanded","totalAccounts","Collection","forEach","checkboxAll","checkedAccounts","classList","contains","checkboxClick","supplier","inter","form","id","checkall","accountDelegationRequestId","getCookie","deleteCookie","postConsentResponse","consentResponse","redirectUrl","getJsonParams","res","accountConsentPostDTO","consentUpdated","consentRevoked","err","submitForm","acceptTrue","postObj","accountIds","postHeaders","add","addEventListener","postService","userAcceptInvite","delegationSuccess","setCookie","userDeclineInvite","acceptTermsOfUse","getRedirectHandling","expandBtnText","toggleContent","expandBtn","consentText","expanded","getAttribute","consent","style","height","attributePush","_len2","_key2","newValue","disambiguation","disableTiles","theTiles","disableURL","pushDataLayer","act","getElementsByTagName","innerText","DisplayIframeController","success","theForm","submit","querySelector","onload","scrollIntoView","app","o","usageAnalysisControllerTest","newCalendar","exportData","exportFilename","grExportData","grExportFilename","userAgent","_print","export_url","grexport_url","chart_selector","graphText","changedGraph","newPeriodValue","meterLoaded","DailyAvgWeekException","isHourly","grexport","usage_table","loaded","grLoaded","grError","table_type","error_message_default","error_message","errorPanel","chartType","period_items","graph_items","chart","openModal","start_date","original_end_date","end_date","current_date","meter_certified","maxHeightChanged","showChart","dropDownChartItems","parse","isDayPeriod","hourlyDayTriggered","Date","formatedDate","recivedDate","dd","getDate","mm","getMonth","getFullYear","today","isIE","todayNoSpaces","jQuery","bind","ctrlKey","print","navigator","matchMedia","addListener","mql","matches","afterPrint","onafterprint","widget","swidget","options","seriesSettings","line","applyAnimation","bar","refresh","setTimeout","printClass","vendor","addClass","printPage","pushAnalytics","saveTextAs","exportXML","updateTableX","Status","Data","ErrorMsg","getErrorPanel","updateChartX","grChartObj","toPreviousDate","usageAnalysis","date","enableSelectors","dateValue","chartObj","MeterNumber","meter","Graph","graph","BillingFrequency","period","GraphText","status","config","temperatures","getDataGraph","meterData","Electric","Gas","getAllMeter","getElectricMeter","getGasMeter","updateChart","newData","usageData","axisX","categoricalValues","labels","axisY","plotLines","average","leftText","rightText","dataSeries","chartTitle","chartMessage","footer","chartFooter","shieldChart","timeOut","updateGraphFilters","graphItems","updateSelectors","extra","items","CalendarStartDate","CalendarEndDate","CalendarCurrentDate","_","updatePeriodFilters","updateOnlyChart","dataLabel","dataActionTag","meterTag","eventTag","electricdata","collectionAlias","color","seriesType","zIndex","unitOfMeasure1","unitOfMeasure2","gasdata","data_label_error","chartLegend","enable","theme","exportOptions","image","events","legendSeriesClick","tooltipSettings","chartBound","primaryHeader","drawWidth","drawColor","enale","ontWeight","fontSize","textAngle","fontWeight","swapLocation","axisTickText","enabled","min","dataPointText","borderColor","borderWidth","y","borderRadius","padding","backgroundColor","duration","selectors","removeAttr","fetchPreviousDay","interactGraph","triggerCalendarValidation","interactDate","dateForAction","$modelValue","yesterday","temp","setDate","$viewValu","scope","changeCalendarPointer","inputDate","isNaN","split","interactPeriod","ActiveDate","post","periodItems","changeDateFormat","replace","initSelectors","onMeterChange","analytics_value","dropdownInteraction","electricType","dataAction","meterDataAction","tableObj","gasType","_typeof","serviceType","certified","adjustTableMobile","EqualPaymentPlanController","form_controller","$invalid","$error","field","errorField","$setTouched","$inject","nsPopoverProvider","filter","nStr","x","x1","x2","rgx","xx","shortCopyOffersCtrl","features","FPPdfTest","apiConfigService","assetService","serviceOrdersFactory","sitecoreServices","commonService","dtoService","addendumService","pdfServiceOrder","serviceOrder","openPdf","open","kubraIframeController","setFormValues","xmlBlob","processForm","$watchGroup","newValues","oldValues","manageProfileController","defaults","confirmAnalytic","conversion","option","hasClass","multipleAccountsController","getDueDateAndAmountDue","currentPageAccounts","dataObject","newElement","srcsyscd","srcacctid","srcacctid2","pauseLoop","Amount","allDeferredPromises","dueDateAndBill","DueDate","ErrorCode","displayDisabled","checkPayNowLinkValidity","payNowService","ShowPayNow","pageChangeHighlight","pageChange","fiveHund","orderBy","disabled","reverse","filteredaccounts","groupedaccounts","accountsPerPage","pagedAccounts","currentPage","middle","propertyName","setActive","target","parent","removeClass","setAccounts","preSort","sortBy","updatedAccounts","errorText","loadPayNowLink","viewAccount","moreElement","toggleClass","thNumber","th1","th2","th3","th4","search","inputChangedPromise","myvar","Object","keys","needle","haystack","query","toString","groupToPages","cancel","page","Math","floor","range","end","ret","newEnd","prevPage","nextPage","setPage","mid","checkIfKeyExists","hasOwnProperty","every","slice","sort","a","b","amountA","Number","amountB","comparison","compare","MyAccountSummaryController","s","view","ohioChoiceCalendarCtrl","previousDay","past","disPrev","disNext","supplierId","dateSelected","addDays","endDateRange","dateSelectedMonth","dateSelectedMonthName","months","dateSelectedDay","getDay","dateSelectedDayName","days","single","disablePastDates","disablePrevMonth","disableNextMonth","CreateMonth","previousDayDate","long","short","holidays","presentMonth","presentYear","result","currentMonth","month","year","monthName","dates","firstDate","lastDate","weekStart","dateMonth","dateYear","dayPosition","show","compareDates","date1","date2","firstMonth","secondMonth","firstActualDate","secondActualDate","firstYear","secondYear","pastDate","endDate","Month","ActualDate","Year","endMonth","endActualDate","endYear","selectedID","day","currentDates","selectedIndex","newDate","fade","findDateIndex","SelectDate","checkPrevNext","currentMonthDates","copy","l","dateView","formattedDate","Day","formatMonths","formatDays","nextMonth","newMonthDate","newMonthDayDate","previousMonth","newMonthDay","toggleDate","dateWrapper","dateTick","ohioChoiceTableController","updateUrl","setHours","ohioList","octButtons","octTC","supplierRequest","SupplierDataList","authEndDateTime","authorized","oneYear","checkbox","attributes","checked","removeAttribute","checkboxes","prototype","call","check","checkboxChecked","updateSuppliers","supIndex","findSupplierIndex","openSuccessModal","leaveBtn","postData","encodeURIComponent","reload","paperlessBillingController","tableCurrentHeight","tableContainer","availableAccounts","accountsFilter","searchAccount","isShowMoreCollapsed","shownAccounts","isAllSelected","readyToSubmit","shownAll","dataActionReason","alreadyEnrolled","messages","disableAll","showMore","showLess","tableInitialHeight","initialShownAccounts","transitionEvent","t","createElement","transitions","transition","Otransition","MozTransition","WebkitTransition","getTransitionEvent","toggleShowMore","accountCheckboxes","failureTooltips","one","setTabIndex","radioSelected","checkboxChanged","toggleSelectAll","IsSuccess","enrollOnPaperlessBilling","selectedItems","modalNeededExist","ModalNeeded","elements","typeComplete","$on","stopPropagation","targetTable","payBillController","paymentBillingHistoryController","focusOut","activeElement","popModal","modalID","margin-top","paymentStatus","dataExport","each","dataTarget","not","collapse","hide","filename","paymentBillingHistoryControllerRefactor","historySelected","paymentOptionsController","destionationUrl","PBilling","PB_Description","PB_LinkText","PB_ClickEnroll","PB_BigPadding","PB_ToggleComponent","pickYourDueDateController","selectNumber","number","mySelectedNumber","pyddInput","dueDate","checkForm","formData","sendDueDateAndEmailService","enrollFailure","vpv","profileSettingsController","profileUpdated","formattedLabel","join","ReportAnOutageController","$location","$attrs","limitRows","hiddenattrs","selectedAcct","setClickedRadio","isDefault","checkDups","toggleShowAll","authSignInController","dataAttribution","attributionPush","pushData","attributionSubmitForm","formId","signInAccordion","menuItem","next","unavailable","noMatch","loggedIn","interceptActive","submitLogInForm","signInStatus","remember_data","is","rememberMe","username","user","userId","TertiaryNavAuthCtrl","accountToggleFactory","$log","isActive","disableBack","isTNavReady","getTNavFailed","checkitem","$this","children","carouselContainer","tabletColumns","viewBillElem","switchElem","iColumns","sliderItem","listItems","bodyHeight","body","toggleTertiary","tertiaryNavSubmenu","accountSelectorOpen","setCurrentAccountClick","tertWrapperToTopOfScreenHeight","position","top","outerHeight","innerHeight","carousel","interval","wrap","first","appendTo","ViewBillTertiary","IndexInList","after","getTNavData","stringId","clearCache","carouselItems","usageAnalysisController","ownKeys","r","getOwnPropertySymbols","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","String","TypeError","CCAccountSelector","broadcastService","genericHelperService","getUserAccountsService","sessionStorageService","CCDecryptionService","jurisdictionService","getToggleResponseService","errorHandlingService","getAccountBalanceForRegularAccountService","getAccountEnrollmentEligibilityStatusService","getInvoiceListService","globalAccountInfo","globalSelectedAccount","toggleResponse","addString","accountSelectorStrings","addAccString","addAccount","valueString","viewString","viewAllString","viewAll","contractAccountSelectedFromLogin","contractAccountSelectedIndex","addressAndAccounts","currentPageId","contractaccountSelectedCheck","globalUserType","toggleComponents","toggleSections","toggleSectionDetails","timeoutFourThousand","timeoutEightThousand","valueZero","valueOne","valueFive","valueMinusOne","valueFour","getToggleResponse","request","sitecore","setToggleResponseModel","RenderingName","Id","Visible","SectionName","icon","NotAvailableIcon","description","NotAvailableDescription","showNotAvailableComponent","comp","display","getAccountBalanceForRegularAccount","dataParam","accountBalanceResult","growl","getAccountEnrollmentEligibilityStatus","eligibilityStatusResult","getInvoiceList","invoiceListResult","isDashboardPage","isDashboard","URL","load","toggleReq","accountNo","pageId","promises","apiConfig","useLocalHost","businessPartnerId","emailId","cdpId","currentUser","accountNbr","decryptHex","decryptedValue","decryptionService","getUserAccounts","results","globalInfo","bpData","primaryEmail","primaryBp","numberOfAccount","residentialAccounts","resultAcc","experience","toUpperCase","numberOfResiAccount","nativeUser","strings","NATIVE_USER","nonNativeUserWithOutAccount","NON_NATIVE_USER_WITHOUT_ACCOUNTS","listOfAccounts","set","storageKeys","globalAccounts","info","dashboard","userType","executePromises","contractAccountSelectedFromLastSave","checkUserType","dashboardUserType","get","validUserType","setSelectedAddressData","isLoaded","globalSwitcherAccount","selectedAddressData","validateAccountPositionAndSet","ACCOUNT_SELECTED","accountNum","filteredAccounts","map","acct","nickname","isPrepaid","accountData","prepaid","address","role","roles","admin","viewer","capitalize","AccountStatus","INACTIVE","CLOSED","accountLoaded","dropdowns","selectedOptionValue","selectedOptionText","lastSelectedAccount","filteredAccountStorage","setSelectedProp","MASS_MARKET","urlDashboard","legacy","moreThanOneAccount","saveData","queue","executeService","firstTimeDashboard","accountList","contractAccountNumber","zipCode","contractAccountId","businessPartner","INVLIST_REQ_DASH","ONE","invoiceCount","serviceActions","INVOICE_COUNT","accountFormatted","userEmail","accountSelector","paramData","requestedBy","accountSearch","stateAbbreviation","emails","roleBase","_assetService$jurisdi","jurisdictionMapping","serviceKey","setJurisdiction","getException","contractAccountToValidate","findIndex","arrayMove","currentAccount","experiences","experienceSelected","historySelectedAccounts","preFilterAccs","prevListOfAccounts","toggleAccounts","newRouteParam","altId","alternateId","itemAcc","AccountNum","relationshipRole","isElectricMeter","isGasAccount","webObject","NumberOfAccounts","AccountStat","AlternateID","AlternateAccountID","ServiceType","EBillDirect","Segment","BudgetBilling","budgetBilling","BankDraft_AutoPay","bankDraft","EqualPaymentPlan_FixedBill","equalPaymentplan","EBillDistributed","eBillDistributed","DPA_InstallmentPlans","dpa","DueDateExtension","dueDateExtension","DisconnectExtension","disconnectExtension","CurrentDueDate","currentDuedate","PickYourDueDate","pickyourDueDate","Impersonation","impDetails","PrepaidAdvantage","prepaidAdvantage","RateComparison","rateComparison","webservicePush","_vm$analyticsTags","analyticsTags","viewAllAccounts","differentAccountSelected","newRoute","assign","legacyDashboardUrl","closed","sitePagesUrlPaths","MYACCOUNT_DASHBOARD","inetrnalId","selectedAccountNumber","IsAccountSelectorPresent","currentUserEmailId","currentUserCdpId","returnObj","accNumber","ModalAddAccountMissingApt","$state","createUserProfile","addAccountUpdateBpService","$modalInstance","getLoggedInUserDetailsService","accountSearchService","_individual","isDisable","newExperience","_organization","_addAccount","fedTaxId","currentAddress","manageAccount","apartment","continueWithAddress","updateAddress","go","goToEditAddress","enableUpdate","addAccountFedTaxId","orgName","addAccountOrgName","transfertypeAccount","chekLandLordFlowFromOptions","lanlordIndOrOrg","pageNotificationTriggered","close","chekLandLordFlow","dataSource","requestingFunction","ACCT_REG","tidNo","fullSSN","dob","accountSearchPublic","d","ReqToHResNav","HResToBp","BpNumber","primaryBP","ZDIG_Request_to_Response_Valid","RelatedBp","bpFlag","organizationname1","federaltaxid","businessPartnerType","firstName","lastName","housenumber","Apartment","street","StreetAddress","city","City","country","State","zipcode","ZipCode","bpRole","createProfileValues","OrgNewExp","updatebps","showAppErrors","bpId","relatedBP","houseNo","state","updateBpValues","sitecoreEndpoints","addresValidation","_missingHeadLine","getAuthUserDetails","Value","ModalAddAccountMultipleAddressSuggestion","_multipleMessage","addressRange","dataToPost","urlTokens","ISU","selectedNewAddress","updatedAddress","HouseNumber","unit","getAddress","selectedAddress","radioBtn","updateCustomerAccountDetails","UPD_MAILING","zipCd","streetaddress","addAccountContainerSuccess","ccAddAccountAssetService","getLoggedinBPDetailsAndAssociatedAccountsService","sewDashboardService","ccGetUserBPDetailsService","addAccountServices","tableSuccess","showBtn","accountsInfo","accountsToShow","errorRelationship","experienceValue","_cdpId","_emailId","newExperiences","contractAccount","_landlordExp","_commExp","_resiExp","_residential","IndividualOrg","grouped","RESIDENTIAL","zero","minusTableHeaders","column","ACCOUNT_NUM_COL","sortAsc","oneDigit","TEN","relatedBp","sortByColumn","ACCOUNT_NUM","virtualPagePushForSymbol","vpvName","appendValue","show24HrMessage","show24Hour","countOfAccts","expName","ownerBP","countLength","experienceType","experienceAccount","home","selectedAccounts","NON_NATIVE_USER_WITH_ACCOUNTS","headerSwitch","HEADER","NONN","FULL","acctGrp","GroupedAcc","grpAcct","Experience","OwnerBp","Count","accountsCount","primaryPartner","groupByJurisdiction","groupedSelectedAccounts","getBPDetailsRefreshCache","SIMPLE","masking","selectedAccountsData","delete","showSSADisclaimer","showAllAccounts","goToPage","sewDashboard","objectElements","attributeObject","workFlow","buttonText","addedSpec","addedEvent","returnCode","endpoint","msgHeader","headline","subheadline","addedHeadline","amountOfAccounts","multiAccountExperience","profileExperience","profileExperiences","multiAccountExp","userExperiences","sameExp","multiExperience","redirectToSew","indOrOrg","bpType","customerBpData","customerBpFirstName","customerBpLastName","customerBp","expToSend","ADD_PROPERTIES","cdp","Key","userBp","firstname","bpFirstName","lastname","bpLastName","customerBPType","customerBPOrgName","customerBPEmail","customerBPFirstName","customerBPLastName","mobileView","isMobileView","firsName","getUserBPDetails","currentUserLoginEmail","addAccountExperienceSelector","experienceData","findAccount","LANDLORD","addAccountTrack","addAccountRouteStates","LANDLORD_TRK","LANDLORD_RTO","ADD_ACCOUNT_TRK","WEBOBJECT","landlordSwitch","addAccountSuccessMultiple","maintainRelationshipService","maintainRelationship","CRE_REL","relatedBusinessPartnerId","cdpid","addAccountSuccessSingle","_createForOfIteratorHelper","u","_n","iterator","n","done","f","return","isArray","_unsupportedIterableToArray","F","_arrayLikeToArray","constructor","from","addTrack","profileExperiencesService","cookieService","landlordRtoNo","expType","expSubType","LANDLORD_RTO_NO","addAccCookieVal","cancelBtnPath","selectExperience","overideShell","internalIdentifier","paramObj","MessageText","replyCodes","SUCCESS","_step","_iterator","experienceEl","profileTypes","experienceName","CODE","saveExperience","getProfileExp","addAccountStates","moveStorage","mainPathStep","mainBtnActivate","btnType","apiValidation","addShellButtons","steps","addAccountSteps","setModels","startStopMove","pathStep","path","btnActivate","btn","classTrack","accountsTable","track","$broadcast","shellButton","direction","cyclePath","stepTrack","experienceSelector","changeTrackSelected","step","CCaddAccount","stateName","CCAccountSelectorPage","negOne","isuAccount","emptyAccountGatPush","heading","subHead","rc","errorMessage","GetLoggedinBPDetailsAndAssociatedAccounts","displayNumber","setRequestVerificationToken","vt","verificationToken","goToPrevious","history","closeSearch","handleInputEvent","parentElement","input","hasAttribute","focus","Balance","ccGetUserAccountsService","modalService","responseNotificationsService","_globalSelectedAcc","card","eBillEnrolled","autoPayEligible","accountNickname","messagePriority","cashOnly","payNowStatus","amount","balanceLoading","balanceSpinner","sumAll","atLeastOneValid","totalAmount","billsQuantity","balanceData","bills","bill","ALL","checkedBills","All","selectAllStatus","atLeastOneSelected","isCorrectSelection","msgCount","buttonContinue","selectedAccountsAmount","toFixed","storeAndGo","balanceStorage","accountStatusByCA","newTotalAmount","parseFloat","payerFirstName","payerLastName","reviewPay","totalNoWarmth","shareWarmth","formatTotalAmount","formattedAmount","formattedIntegerAmount","toLocaleString","lessThanZero","trustAsHtml","eligibilityStatusData","skipEligibilityStatusApiCall","getAccountAndBillingInfoResList","parseEnrollmentEligibilityStatusResult","Inp_Prog","errorResponse","vehicle","TOAST","PAY_MY_BILL","programs","Prog_Res","billingAndPaymentPrograms","ProgName","EligibilityStatus","code","ineligible","Account","autoPayEligibleByCA","autoPayExtendedDate","moment","EnrolledDateStr","format","eBillEnrollmentByCA","accountStatus","invoiceDate","dataRow","noCardsInd","noCheckDraftInd","totalDueDlrs","currentDueDate","priorDueDate","messageList","cashBills","accountsAmount","stopFormToPaySpinner","balanceRouteStates","BILLS","HOW_TO_PAY","paynow","accountDataSelected","payNowData","unqAccounts","uniq","accountLength","bpDataPayBill","balanceForRegularAccount","billOptions","checkUp","invoiceListByCA","pastDue","paymentDue","selectedDueDates","scheduled","msgPriority","fromBillsPage","beautifyStatus","balanceStatuses","PAST_DUE","PAYMENT_DUE","SCHEDULED","nextStep","FORM_TO_PAY","REVIEW_PAY","onCancel","redirectionLink","previous","loadBills","balanceEvents","EDIT_BILLS","CANCELLING","viewerRole","SpeedPayIframeModal","speedpayUrl","BillingAndPaymentProgramsController","getFixedBillDetailsService","checkEligibilityForPrepaidService","getBudgetBillingHistoryService","prepaidService","componentStateHandler","getPaymentHistoryService","_globalAccountInfo","_disable","_status","_newProgram","_prepaidData","_prepaid","NAME","_elbill","ELBILL","_fixbil","FIXEDBILL","program","enrolled","OrgName","orgBP","organizationBP","moveInDate","getTime","currentDate","ShowBudBil","bpNumber","owner","ownerRole","adminRole","invoiceId","EmailID","paynowStatus","failedState","planType","programId","ProgramId","budgetBillingHistory","numberOfMonths","budgetBillingAmount","ReqCA","Messages","ReplyCode","budgetBillingResponse","BudgetBillingDetails","last","BudgetBillingAmount","PlanType","recalculationDate","RecalculationDate","utc","billingAmount","BudgetBillAmount","enrolledDate","EnrolledDate","enrolledDateStr","pyddaDate","PyddaDate","ineligiblePaperless","fixedBill","enrolledInFixedBill","programsList","pyoddaProgram","billingAndPaymentProgramsCodes","PYODDA","enrolledPYDDDateChange","eligibleChangeDate","enrolledPYODD","getPaymentHistory","paymentsData","Req_Inp","Inp_Res","scheduledDate","Payment_Status","Payment_Method","Payment_Due_Date","isBillGenerated","nextDueDate","nextBillingInfo","qPromises","premiseId","param","getFixedBillDetails","fixedBillDetails","FixedBillAmount","fixedBillAmount","renewalDate","RenewalDate","premiseID","premiseNumber","checkEligibilityForPrepaid","HeaderToMessageNav","HeaderToResponseNav","MessageNum","ERROR","disable","enroll_unenroll","PAPERLESS_BILLING","DESCRIPTION","PB_ManageButton","MANAGE","dataTable","AUTPAY","DIRDEB","storageDeEnrollProgram","Billing_And_Paiment_Programs","deEnrollProgram","isEnrolledInBudgetBilling","some","BUDBIL","operation","validation","ebill","enrollment","manage","BUTTONTEXT","autoPay","pyodd","executeAnalyticsOnParent","paperlessBilling","BudgetBillingController","getProposedBudgetAmountForBBPService","enrollInBillingAndPaymentProgramsService","getProductRecommendationsCAREService","CareDeleteProductService","careFeedbackService","contractAccounts","BpToAcc","contractAccountNo","accountNickName","AccountNickname","mailingAddress","AccountMailingAddress","addressNo","AddressNumber","Zipcode","streetAddress","StreetName","HouseNum","poBox","PoBox","Unit","accountDetails","getProposedBudgetAmountForBBP","BdgAmtToMessage_Nav","Type","plans","GetBudgetAmtNav","BdgAmtDecimal","BdgAmt","$emit","buttonClicked","showMessage","selectPlan","selectedPlanDetails","plan","BdgAmtCyc","programName","selectedPlanAmount","selectedPlan","dataToEnroll","progName","budgetAmnt","enrollInBillingAndPaymentPrograms","dataCare","ReqToResNav","ProgramToMessage","S","requestCare","isCareComp","getProductRecommendationsCARE","careResult","removeProductId","ownerType","productExists","Care_Response","psFromList","COMMERCE_PRODUCT_ID","productId","PRODUCT_ID","regulated","numeric_Numbers","onee","acceptanceFlag","sendFeedback","globalAccountNumber","OWNER_RENTER_HEADER_LEVEL","REGULATED","commerceProductId","productName","PRODUCT_NAME","productPriceOffering","PRODUCT_PRICE_OFFERING","productHintsAndReminders","PRODUCT_HINTS_AND_REMINDERS","ownerRenterProductLevel","OWNER_RENTER_PRODUCT_LEVEL","score","SCORE","acceptReferralFlag","ACCEPT_REFERRAL_FLAG","lineOfBusiness","LINE_OF_BUSINESS","installationFee","INSTALLATION_FEE","eligibleFlag","ELIGIBLE_FLAG","rank","RANK","upgradeDowngradeFlag","Upgrade_Downgrade_Flag","ucVersionRequired","UC_Version_Required","productFamilyName","Product_Family_Name","filterProduct","recommendation","careRecFiilteredList","BBpageError","BnPpageError","planTypes","selectMessage","BudgetBillingEnrollmentSuccessController","planDetails","careLoad","care","BudgetBillingManageCreditController","getUsageComparisionService","setDataChart","labelsChart","datasetsCart","optionsChart","setchart","datasets","Chart","charts","accruedBalance","accuredAmountType","enrollmentEligibilityStatus","recalculated","settleUp","invoiceListData","datasetsChart","pointStyle","pointBackgroundColor","lineTension","fill","dataToGet","propertyValue","dataType","accountId","fromDate","toDate","monthNames","yearNames","tooltips","callbacks","tooltipItem","datasetIndex","scales","yAxes","scaleLabel","labelString","ticks","suggestedMax","suggestedMin","callback","xAxes","barPercentage","gridLines","autoSkip","maxRotation","minRotation","legend","usePointStyle","boxWidth","fontColor","onClick","reviewPlan","sessionData","unenrollPage","getChartQuarterly","typeEnd","notReferencesArrayObjects","AccruedBalance","DEBIT_BBH","CREDIT_BBH","NONE_BBH","creditOnAccount","description1","description2","maxValue","lastIndex","itemArray","subtract","findWithAttr","array","attr1","value1","Bill_Amt","yearBBA","monthABA","monthBBA","BBAmount","installationNumber","AccToProp","PropToInst","InstallationNumber","meterNumber","meterType","MeterType","division","Division","installation","divisions","ELEC","KWH","GAS","CCF","getUsageComparision","ReqToCA_Nav","CAToPremise_Nav","PremiseToInstln_Nav","InstlnToUsgMonth_Nav","Inp_Req","Account_Invoice","invoice","invDateStr","InvDateStr","BudgetBillingReviewQuarterlyController","previousPage","quarterly","BudgetBillingReviewYearlyController","annual","BudgetBillingUnenrollController","budgetBillingFactory","bBPlans","dataToDeEnroll","DEENROL","accuredAmount","decimalaccuredAmount","proceedToDeEnroll","BudgetBillingUnEnrollmentSuccessController","ShellBudgetBillingController","dataPage","pages","stageGo","loadingSpinnerSuccess","ShellManageBudgetBillingController","manageCredit","CCCAREComponent","getMultipleProductDetailsService","readConsentService","maxRecommendations","getCommerceProductDetails","productList","defaultProducts","isDefaultProducts","getProductDetails","productCode","fields","basic","productTitleText","slot","pageName","gatList","showComponent","isOnDashboard","failedStateDashboard","args","serviceDown","useDefaultSCProductsAndServices","currentAccountNum","productListData","careFiltering","UMCReadConsent","acceptedVersion","acceptedConsent","version","readConsentAcceptedVersion","readConsentCurrentStatus","currentStatus","ACC","ACCEPTED","DECLINED","showTimeoutError","defaultProductIds","originalOrderProductList","responseProductList","getRecommendationData","filteredData","CARE","PAGES","PREPAID_DASHBOARD","GATPAGENAME","PREPAID_DASHBOARD_PAGE","careRecommendations","LineOfBusiness","CARE_EE","MYACCOUNT_DASHBOARD_PAGE","ENERGY_USAGE","ENERGY_USAGE_PAGE","FIXED_BILL","FIXED_BILL_PAGE","CARE_BnP","CARE_ECS","BUDGET_BILLING","BUDGET_BILLING_PAGE","MANAGE_BUDGET_BILLING","MANAGE_BUDGET_BILLING_PAGE","AUTO_PAY","AUTO_PAY_PAGE","PICK_YOUR_DUE_DATE","PYDD_PAGE","additionalData","showproducts","ProductsDetails","filteredElement","allRecommentation","ProductDetail","list","dimension170","dimension171","dimension172","dimension173","line_of_business","owner_renter_product_level","propensity_score","ecommerce","impressions","orderIndex","_loop","prod","readConsent","declinededConsent","ignoredConsent","ReadConReqResNav","filteredResult","consentCode","AcceptConsentCode","consentStatus","AcceptConsentStatus","AcceptVersion","consentDate","AcceptConsentDate","ReadDeclineReqResNav","DeclineConsentCode","DeclineConsentStatus","DeclineVersion","DeclineConsentDate","ReadIgnoreReqResNav","IgnoreConsentCode","IgnoreConsentStatus","IgnoreVersion","IgnoreConsentDate","currentVersion","CurrentLatestVersion","CurrentStatus","disclaimerShortText","DisclaimerShortText","disclaimer","Disclaimer","getMultipleProductDetails","productsList","summary","finalLandingUrl","img","images","externalUrl","origin","nonProducts","showMoreFlag","isShowMore","isLoadCalled","businessFunctionval","headingval","impression","defaultProductList","documentElement","clientHeight","scrollBy","elem","elem1","offsetTop","off","redirect","landingUrl","productTitle","productid","prid","LofB","prrank","ORLevel","productIndex","redirectURL","workflowName","hdnfield","landingURL","click","actionField","products","landingURLPath","showMoreData","sessionStorage","key","CCBalanceActivity","balanceActivityService","dateHelperService","_dailyUsage","DAILY_USAGE","_payment","PAYMENT","_pending","PENDING","noOfDays","dailyUsageDetails","paymentHistoryDetails","paymentDetails","numberOfDays","balanceActivity","Balactivitytodailyusage","BalActivityToCharges_Nav","dataToMerge","dailyUsage","dailyElectricUsage","trunc","TotalKwh","dailyElectricCost","DailyUsageAmount","ToDateStr","dateForSort","miscAdjustments","MOCK_MISC_ADJ","meterReadNumber","MOCK_METER_READ_NUM","pendingText","paymentDetailsFees","Description","paymentItemFees","confirmationNumber","PostingDate","paymentMetod","paymentFees","paymentHistory","paymentItem","Confirmation_Code","PaymentDateStr","payment","Payment_Amount","deferredBalance","noBalanceActivity","balance","spread","union","numberOfWeek","getWeekNumber","dateId","dateLis","activity","second","balanceList","activitiesLimit","dropdownOptions","DATE","TYPE","AMOUNT","keyDates","limit","SORTBY_DATEFORSORT","orderPos","BPAComponentController","_dueDate","SORTBY_DUEDATE","_invoicesData","_invoicesDataSorted","_globalSelectedAccount","_mergedData","_paymentsData","itemId","Payment_Doc","active","Payment_Date","TYPE_PAYMENT","Payment_Account","dueAmount","confirmNumber","paymentMethod","routingNumber","Routing_No","InvId","TYPE_BILL","BillStartDate","BillEndDate","BillDays","InvTotAmtDue","errorFlag","PastDueFlg","prevAmountDue","paymentReceived","currentCharges","totalAmountDue","totalElectricUsage","avgDailyElectricCost","totalGasUsage","avgDailyGasCost","billsAndPayments","bpaLatestInvoice","BPAComponentNoNative","globalSelectedAccountEmail","_bpNumber","CCDashboardController","ccDelegationAssetService","umcModalService","efiModalService","impersonationService","getEnrollmentStatusOfExtensionPlanService","DELEGATION_MODAL","setEligibilityStatusModel","eBill","payodda","energyUsageWidth","isNonNativeWithAccounts","isNonNativeWithoutAccounts","nativeDashboard","UMCLoaded","efiLoaded","retrieveDelegation","replyCode","delegations","toSessionStorage","roleData","col1Class","col2Class","umcModalInstance","tracklink","managelink","landlordLink","careEnable","redirecting","URLSearchParams","relatedBusinessPartner","sessionNo","cancelServiceFailCount","channel","isPublicUmc","efiInterceptForUser","consentForUser","preferenceFlag","getImpDetails","userJurisdiction","getUMCLatestConsent","umcModal","UMCUpdateConsent","eligiblitycheck","efiModal","efiInterceptModal","opened","updateEligibility","parameters","Promise","simpleFormat","getEnrollmentOfExtensionPlan","DUEDATE","GetEnrollmentStatusOfExtensionPlans","dashboardWidget","gatAttributePush","buttontext","businessfunction","params","CCPrepaidAccountSummary","getPrepaidDetailsService","getAccountBalanceForPrepaid","getEligibilityForAutoReloadService","apiService","prepaidDetails","accountBalanceDetails","eligibilityForAutoReload","billingInfo","autoReloadEligibleText","dashboardLoaded","header","apiHeaders","authorization","postDataAsync","dirtyHtml","sanitizeValue","div","textContent","bankDetail","getPrepaidDetails","PrepaidToBP","BPToCA","PrepayCAToBAL_NAV","GET_ELIG","getEligibilityForAutoReload","AREligibility_NAV","billingInfoRes","cashOnlyStatus","autoReloadCashOnly","autoreloadFlag","CAToAutoReload","AutoReloadFlag","DeferredBalance","accountBalance","PrepaidBalance","isEnrolledInAutoReload","daysLeft","EstimatedDaysRemaining","showTurnOnAutoReload","showManageAutoReload","showAddFunds","Eligible","showDeferredBalance","showRemainingDaysTooltip","remainingDaysTooltip","messageInfo","messageCode","zeroBalInd","accountSummary","CCWidgetMB","getProductDetailsService","productCodesArray","productsCodes","DashboardNotifications","getAccountConditionService","displayedNotifications","remainingNotifications","accountCondition","notifications","ReturnCodes","notificationsPriority","dashboardNotifications","priorityMatch","notification","notificationsCode","notificationsData","ContractAccounts","Response","paymentArrangement","servicePriority","phoneNumber","outage","delincuency","cart","energyUsage","hideShowNext","includes","WidgetBPPController","hideBudBil","statusValue","statusAutopay","statusFixedpay","statusDueDate","showBPError","setInvoiceListModel","sortedData","fixedBillAmt","BillEndDateStr","FBAmount","budgetBillAmt","fixedBillamount","enrollDate","budgetBillAmount","setAccountBalanceModel","changueDataTable","changes","eligibleproducts","headerKey","iconTable","tipe","tableHeaderkey","all","checkTogglingStatus","bpTable","closest","visibility","row","cells","dashboardLoad","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","WidgetDueController","invoiceImageService","dateToSort","functionalityHeadLine","windowReference","isSafari","match","pushDL","accountDue","activateDetailsVar","toggleBPInfoVar","displayCPIMessage","showError","rule","activeError","latestScheduledPayment","guid","emptyState","closedOrInactive","getDocument","imageAvailable","isImageAvailable","documentNumber","invoceImage","MessageReply","hexValue","base64Value","btoa","fromCharCode","byteCharacters","atob","byteNumbers","charCodeAt","byteArray","Uint8Array","file","Blob","fileURL","createObjectURL","InvoiceImage","pdfNotFound","payNow","dueAmmount","toggleBPInfo","hideAccount","stringLength","convertedValue","visibleDigits","onCLickBPA","subAction","parsedDate","infoResList","closedAccount","accountBalRegSession","msg","dateToDisplay","installmentDueDate","parseSimpleDate","toLocaleDateString","InvArchieveId","InvAmt","IsImageAvlbl","DASH_PAY","_ref","scheduledPayment","updt","dueData","WidgetEnergyUsageController","isPrepaidAdvantage","isClosed","pushVPV","gaTagging","obj","Guid","widgetManageProductServicesController","getEnrollmentsService","_CANCELLED","CANCELLED","_Cancelled","Cancelled","_ENROLL","ENROLL","_Enrolled","Enrolled","_UPGRADE","UPGRADE","_Upgrade","Upgrade","_RECURRING","RECURRING","formatProducts","enrollments","productDefinitions","product","productFound","productDefinition","imageFound","alt","altText","bp","BusinessPartner","getEnrollments","ContractAccountArray","recurringPayments","take","EnrollmentArray","TypeOfTheCharge","price","Price","Substatus","fullAddress","Street","CityPostalCode","ProductCode","enrollmentCode","EnrollmentCodeContract","providerContract","ProviderContract","cancellationDate","CancellationDate","startDate","StartDate","recurringPayment","promisesResults","subscriptions","switch","enrollmentStatuses","CorrespondenceController","displayCommunicationHistoryService","apiApigeeConfigService","setModel","copyData","correspondence","corresponData","categoryDrop","displayCommunicationHistory","CORRESPONDENCE_NAV","CorrDate","Category","subject","LetterDesc","deliveryMethod","Delivery","selectInitial","dataDrop","userAccounts","categoryData","filterData","selectCategoryData","categoryDate","filterDate","selectCategoryDate","convert","findText","setMonth","filterDates","orderDate","orderDateDesc","orderDateAsc","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","AccountPermissionsController","getUserRolesAdministrationService","tableHelperService","retrieveDelegationService","updateDelegationService","dataModelsDTOProductsAndServices","FPBroadcastService","_fadeOut","UPD_REL","FADEOUT","FADEINOUT","globalUsersList","usersBeingShowed","noOfUsersToShowInTable","accountPermissionsTable","dropTable","calendarTable","tableData","tableRelations","statusTable","tableOptions","showCompareRolesTable","showInvitesTable","usersDelegations","updateRelationships","userRoles","pendingDelegations","sortArrow","defaultTable","getDateFromFullDate","delegationUpdates","users","selectedUser","showToast","showmessage","showMoreButtonActivate","activeUserCount","nonRegisteredDelegations","setTableFormat","arrayToDrop","getPendingDelegations","MANAGE_DELEGATION","updatePendingdelegations","updateExistingUsers","delegation","accountPermissions","getUserRoles","ZDIG_USERROL_REQ_TO_PBP","ZDIG_USERROL_PBP_TO_CA","ZDIG_USERROL_CA_TO_DELEGTED","DelegationStat","Relationship","AccountPermissions","toastNotification","messageOption","toastNotificationMessage","toastNotificationtime","accesUntil","accesUntilModel","updateUserAP","deleteUserAP","resendLink","deleteDelegation","relationship","deleteUser","resendDelegation","resendInviteLinkAP","editDelationInfo","sortTable","sortingTableData","closeToast","updateTableFormat","_vm$dataTable","dataTableLength","capitalizeName","transformName","activateDetails","checkPastDate","accessEndDate","accessEndDateVal","userDel","pendingUser","declineTimeStamp","isExpired","userName","relatedBusinessPartnerEmailAddress","roleName","update","delegationId","dateStr","userDelegation","DelegateUserName","CaAccessEndDate","DelegatedUserBp","DelegatedCdpId","DisconnectExtensionController","getEligiblePaymentPlansExtensionsService","setExtensionsService","_currentDate","_disconnectDateOne","_disconnectDateTwo","_disconnectAmount","testAccount","getEligiblePaymentPlansExtensions","Extensions","extension","DisconnectDateStr","Date1ForDisconnectStr","Date2ForDisconnectStr","getExtension","pageLoad","PAYMENT_ASSISTANCE_PROG","Installment","disconnect","nonAplicable","disconnectAmount","disconnectAmtDecimal","amountDue","disconnectDateOne","disconnectDateTwo","showDesctiptDetails","arrow","paymentAssistance","setExtensions","showDetails","extendedDisconnectDate","successDisconnectExtension","DisconnectSuccessController","ShelDisconnectExtensionController","_success","protocol","successPage","DueDateSuccessController","extnEligibleUptoDate","extnCount","firstExtendedDate","DueDateExtensionController","accountStat","camelCase","EMPTY","Prepaid","PrimaryBp","RbpNumber","DeferralDate","extendedDueDate","datePicked","disableDate","EndDate","actualDate","billDueDate","calendarDate","formattedCurrentDate","justForFirstPage","latestBill","lastButton","recentBills","returnTo","setExtension","successDueDateExtension","selectCalendarDate","replaceWith","ShellDueDateExtensionController","efiErrorModalController","efiInerceptController","ccEnergyUsageGraphController","ccMeterSelectorService","ccEnergyUsageDto","getInvoiceDetailsService","getWeatherInfoService","getEnergyUsageService","energyService","exportCsvService","getMeterNumberService","graphColors","lighting","meterObject","energyUsageArray","compareEnergyUsageArray","invoiceListArray","compareInvoiceListArray","invoiceDetailsArray","compareInvoiceDetailsArray","weatherInfoArray","ticksOverride","compareUsageComparisonList","usageComparisonList","downloadData","is_mobile","getEnergyUsage","meterSerialNumber","intervalFrequency","netmetering","netMeter","periodType","isDownload","exportEnergyUsage","bytes","TextEncoder","encode","blob","saveAs","isDownloadclicked","averageConsolidated","Series2","TickSeries","yearSelected","testDate","Series1","Series3","eligiblecompareToPrev","compareToPreviousYear","exportCompareEnergyUsage","tempTicks","result1","result2","tempResult","yoySeries1","yoySeries3","BillingEndDate","ConsolidatedEnergyUsageList","tempUsageComparison","itemIndex","result3","resultantArray","arr","final","loadUsageDataGraph","isMinMaxSet","isBlankState","usageComparison","transformUsageList","totalCost","totalUsage","Usage","totalCostDecimal","padStart","averageCost","AverageUsageAmount","averageUsage","AverageMonthlyUsage","unitOfMeasure","avgCostDecimal","averageUsageData","averageCostData","totalCostData","totalUsageData","ConsolidatedUsageList","averageCompareCost","averageCompareUsage","compareUsage","compareCost","shift","loadInvoiceDataGraph","loadGraph","isNetMeter","drawGraph","transformCompareInvoiceGraph","transformInvoiceGraph","graphArray","energyDataFail","transformCompareEnergyUsage","transformEnergyUsage","graphData","google","string","current","packages","corechart","setOnLoadCallback","visualization","arrayToDataTable","chartArea","left","displayAnnotations","annotations","alwaysOutside","point","textStyle","temperatureText","groupWidth","ignoreBounds","isHtml","series","chartSeries","hAxis","gridlines","textPosition","viewWindowMode","maximized","slantedText","slantedTextAngle","bold","italic","fontName","vAxis","Dollar","CostOfUnitsConsumed","paddingRight","marginRight","viewWindow","titleTextStyle","graphColumnCount","columnViewArray","calc","DataView","setColumns","columnDataArray","dt","dv","control","showTextEvery","focusTarget","graphDiv","ColumnChart","draw","ChartWrapper","containerId","ControlWrapper","controlType","filterColumnIndex","snapToData","ui","chartOptions","0","1","haxis","baselineColor","getState","setRows","getFilteredRows","minValue","getHours","Dashboard","drawAxisTickColors","visibleInLegend","lineDashStyle","averageLine","enableInteractivity","2","3","4","5","6","7","BillingCycle","periodTypeOption","Week","monthlyFlag","getWeatherInfo","ZDIG_Request_to_Response","accountInfo","Account Name","Address","Account Number","Graph Title","Meter Number","Selected Date","Selected Period","Primary Data Unit","Secondary Data Unit","Tertiary Data Unit","exportComaprisonList","exportToCSV","exportForNet","download","fromInit","getMeterObject","ccEnergyUsageController","getHistoricUsageService","meterText","depthChange","setValue","maxDate","minDate","viewUsageDetails","viewGraphOptions","isCalendar","accountSearchItems","accountSearchArray","meterDetails","showLoader","viewCalendar","showMinsView","isMovedOut","disableCalendar","showTable","isFailState","noInvoice","selectPeriod","selectUnitOfMeasure","setIntervalFrequency","setMeterObject","selectMeter","selectStartDate","selectEndDate","selectExport","selectPrint","toggleCompareToPreviousYear","tempArg","toggleViewUsageDetails","toggleBillCycle","billCycle","billStartDate","billEndDate","toggleGraphOptions","setFilter","toggleShowMinutesView","showMinutesView","checkMeter","MeterInterval","toggleNetMeter","downloadMyData","showCalendar","usageLoading","defaultEndBillingDate","usageDetailsList","details","BillingDate","BillingDays","ReadType","AvgUsg","showAllToggle","isShowAll","detailsArraytable","gasIcon","electricIcon","isElecticMeter","VALUE","dailyEnergy","Months","Days","hourlyEnergyUse","Hours","Min","quarterHourlyEnergyUse","tempObject","setDateValue","meterSelected","fromLoad","kWh","MoveOutDate","getMinDate","activeDate","getContractAccountId","getMeterNumber","_result$d2","Multiple_CA_Nav","CAToMeter_Nav","NetMeterFlg","getHistoricUsage","EnergyReqResNav","BillingStartDate","usageEndDate","ResetBlankStateValues","labelCalendar","invoiceArray","setMinMax","dateForMonths","crrentDateSuffix","currentYear","getEndDate","startDateSuffix","english_ordinal_suffix","endDateSuffix","textValue","newInvoiceDate","valueOf","promiseQueue","_result$d","transformInvoiceList","getInvoiceDetails","InvDate","transformInvoiceDetails","newInvoiceArray","updatedArrayTable","setContractAccountId","dataTemp","lookup","accountdetails","itm","accountSearchData","IsSmartGridMeterInd","activeStatus","values","reduce","tempresult","arrayresult","arraySearchList","imageUrl","createDropdownList","accountSearchList","defaultItem","InstallmentPlansScreen","installmentPlansRouteState","INSTALLMENT_PLANS","InstallmentPlans","securityDepositflag","failedStateNotificationTriggered","INSTALLMENT_TYPE","installmentPlansStepsName","REVIEW_AND_SUBMIT","actualStep","change","pathAlt","mainBtn","actualPath","buttonLoad","IPFailure","ipenrollmentfailed","IPEnrollmentFailed","trackNextComponent","manualNextComponent","CCAutoPayAddAccountController","ccAutoPayAssetService","$stateParams","manageBankAccountsForPrepaidService","SAPdueBalance","SAPdueDate","_accountIdGenerated","_businessPartnerId","BankAccountId","bankDescription","_DIRDEB","_selectedAddressData","_enrollmentFailed","statusIsProcessing","serviceErrorCode","_kwValue","showCPIMessage","CPIMessage","bankAccount","accountType","selectAccountType","accountTypeValue","bankAccounts","addBankAccountForm","formInstance","rountingNumber","accNumberConfirm","isProcessing","bankAccountPresent","buttonDisable","validate","accountTypeArray","autoPayDetails","accountAutoPayDetails","BalanceDue","DueDateStr","StatusCode","CpiMessage","relatedBPNumber","cancelBtn","$dirty","autoPayAgreement","cancelModal","cancelAutoPay","manageBankAccountsForPrepaid","manageBankAcc_NAV","ManageBankAcc_NAV","BankId","ACIMessageNum","ACIValidationFailed","ErrorMessage","ManageBankAccountsForPrepaid","ADD","extensionSet","RefObject","RefFieldName","RefFieldValue","bankId","enrollmentFailed","errorcode","tracks","ccAutoPayShell","toggleAutoPayAgreement","nicknameCheck","nicknameLimit","showNameError","nameError","accountCheck","accMaxLimit","showAccError","accountError","confirmAccCheck","showConfirmAccError","confirmAccError","getLimits","CCCancelModalController","dppPlan","planDesc","SelectedPlanDP","SelectedPlanDesc","dirdebenrolled","CCAutoPayLanding","cpiMessage","bankAccountsOriginal","CCAutoPayPaymentMethodController","AutoPayEnrollmentEligibilityCheck","autoPaySAPData","cpidetails","_bankAccountsOriginal","_BankAccountId","_bankDescription","_selectedEmail","NUM_OF_ASTERISK","goToAddBankAccount","manageAutoPayAddBankAccountModal","findAccountAndSelectIt","bankAccountId","accountFound","BankDescription","BankRoutingNumber","BankAccountNumber","BankAccountType","newBankAdded","newBankAccountId","previousBank","primaryButtonEnable","addAsterisk","add_Account","bankAccountNum","numOfAsterisk","substr","LAST_DIGITS","repeat","prepaidData","bankChanged","E","optionSelected","addNewBankAcccountIdGenerated","BPToBankDetail","manageAutoPay","accountIdGenerated","CCAutoPayShell","autopayenrollmenteligibilitycheckservice","eligibilityCheck","autoPayEnrollmentEligibilityCheck","eligibilityDetails","Accounts","BalanceInfo","autopayBankData","urls","CCAutoPaySuccessController","getDirectDebitDetailsService","nextBillingMonth","failure","highCPI","highCPIMessage","acctNickName","acctNo","acctAddress","successMessage","onManage","onDashboard","CpiMessagepriority","dueBalance","errorObject","InviteUserController","currentManagerFactory","FPInviteUserFactory","_url","_urlUser","userTableData","userTableRoles","allSelected","showHide","checkBoxSelected","endDateModel","Roles","userSetTableFormat","NewUser","dropChannel","roleModel","developUrls","getDefaultRolesUrl","getDefaultNewUserUrl","getServiceUser","getServiceNewUser","getRole","AddManageBankAccount","$interval","getBankIdUsageService","accountConfirmNumber","accountRouting","ACIValidationErr","accNameEmpty","accRoutingEmpty","accNumEmpty","accConfirmNumEmpty","accTypeEmpty","bankAccountAddResponse","addBankDetails","loader","manageBankAccount","toastNotificationMessageAdd","userEmailId","newBankData","bankAddedSuccess","reloadAfterAddBankAccount","showErrorMessage","checkNickname","getNameLimit","noNameError","checkAcctNum","getAccLimit","noAccError","checkConfirmAcctNum","noConfirmAccError","orgBPpresent","accountTypeArrayValue","CHK","SAV","BCK","BSV","contractAccNum","EditBankAccountNickname","modalParameters","returnCodeMapping","editBankNickname","newParamData","EDIT","RoutingNumber","reloadManagebankAccount","nameLength","DeleteBankAccount","bankAccountDetails","bankInfoAccountDetails","showChevron","deleteAccount","DELETE","ManageBankAccountController","getDeepLinkedPrimaryBPService","fromDeleteAccount","fromAddBankAccount","showChevronDetails","propertyCount","customerName","activeDetails","accountTypeDetails","toastData","message1","message2","isShowMoreVisible","remainingAccs","bankMobileData","deleteBankAccount","bankDetails","bankInfoDetails","editNickName","addManageBankAccount","showAll","showVPVChevron","bankAccountIds","BankAccountID","BankIDToCA_NAV","CAToPayments_NAV","BankIDToMsg_NAV","getBankIdUsage","bankIdDetails","BPToBankID_NAV","bankItem","showLandlord","showResidential","landlordMessage","customername","getDeepLinkedPrimaryBP","remainingAccounts","tempLength","afterTen","showTen","BpFirstName","BpLastName","dataItem","accountNumberLimit","accountNicknameLimit","bankAccountType","accountNumLimit","nickNameLimit","manageAutoPayMain","_startedFromWatcher","_startedFromScope","manageAutoPayUnenroll","billingAndPaymentsLandingPage","cpiInfo","manageAutoPayUnenrollSuccess","_accountSelected","_SUCCESS","viewShow","deEnroll","deEnrollFromProgram","DE_ENROLL","routingNo","bankAccountNo","bankName","enrolledPrograms","enrollSAPData","BankAccountName","_newBankAccountIdGenerated","_UPDATE","UPDATE","showModal","updateDelegateUserBankAccount","defaultBankAccount","addBankAccount","bankID","delegateUserAccountDetails","showAgreement","getOrgBPFromAccountSearch","setDropdowns","showDrops","accountWasNotSelected","enrolledInKubra","manageAutoPayForm","paymentDate","daysBeforePaymentDate","maximumPaymentAmount","maximumPaymentAmountCheckbox","isBPACancel","autoPayAgreementCheck","lowCpiMessage","highCpiMessage","dueInFuture","initCalled","errorTrue","modalAddNewBankAccountClosed","modalUnenrollClosed","save","manageAutoPaySuccess","$setDirty","unenrollFromAutoPay","unenrollAutoPay","toggleAgreement","backToPrograms","billingAndPaymentActivity","managedScheduledPayment","requestFields","cpiMessagePriority","statusCode","_results","_results$","$parent","sapdueDate","ccServiceOrderDetailController","getServiceOrderDetailsService","updateServiceOrderService","manageOrderService","goBack","fromGoBackLink","manageServiceOrderRouteState","SERVICE_ORDER_LIST","telFormat","phone","convertTime","time","removeFormat","phoneValue","order_number","getServiceOrderDetails","OrderNumber","PrimaryContNumber","phoneNumberToEdit","EquipmentNumber","EmailId","completionDate","CompletionDate","OrderTypeDescription","serviceOrderStatus","manageServiceOrder","statusList","scheduled_date","ScheduleDate","scheduled_time","ScheduleTime","completed_time","CompletionTime","primaryPhone","ReqToMesNav","accountSearchResponse","BpToEm","Primary","EmailAddress","BpToPh","PhoneNumber","GATTagging","editDescrition","dataPost","orderNumberFromManageService","orderNumber","serviceorderdetailtores_nav","isResponseSuccess","updateServiceOrder","reply","modalLoadingSpinner","enableUpdateButton","phoneNumberChange","enteredPhoneNumber","oldPhoneNumber","workflow","toastWorkflow","toastAddedSpec","toastButtonText","UPDATE_SO","requestedPhone","remarks","Remark","timeOutValue","contactUs","taggingElements","subHeadline","populateGATagging","ccServiceOrderListController","getServiceOrderService","currentContractAccountNumber","numberOfServiceOrders","dataShown","sortStatusAsc","showStatusSort","showDateSort","sorting","listIndex","LIST_INDEX","getData","editClicked","SERVICE_ORDER_DETAIL","dataArray","SOHeaderToItem_NAV","rootItem","SOItemToSO_NAV","orderType","OrderType","ContractAccount","dataValue","sortType","prev","localeCompare","object","ccServiceOrderMainController","serviceOrderStatusList","manageProductServicesController","ccProductAndServicesAssetService","getCardDetailsService","updateCardDetailsService","getUpdateCardDetailsService","accessRightString","ACCESSRIGHT","allowedString","ALLOWED","digitalString","DIGITAL","cancelString","CANCEL","cancelledString","pendingString","rejectedString","REJECTED","unEnrolledString","UNENROLLED","billingSetupString","BILLING_SETUP","upgradeString","_originUrl","_originHref","_urlProductsAndServicesDetails","SHELL_URL","productDetails","_globalAccountsStorage","bpNotFound","kwCancel","kwEnroll","kwPending","recurring","nonRegulated","billingTimeString","kwCreditCard","kwISUBilling","kwLegacyBilling","kwUpgrade","superAdminRole","noRole","dateGroups","enrollmentData","enrollmentsObj","managePSSpinner","noData","showNoContent","cardDetailsForCA","allCardsDataForBp","cardIdForCA","dropdownaccounts","dropdownaccountKeys","showallaccountData","showaccount","showDropdown","selectedCAforSpeedPay","selectedBP","nonAuthBp","invalidDate","nonAuthEnrollmentCode","isEnergywiseProduct","cancelServiceFailedProduct","toggle","updateCancel","prodName","psname","replaceAll","productInfo","providerContractAccountNumberList","saleBillingStatus","saleStatus","saleSubStatus","statusReason","pscode","quantity","productGroup","psgroup","typeOfTheCharge","manageProductsServices","cancelProductService","upgradeProductService","updateUpgrade","nodeHostName","upgrade","order_id","charge_type","prodURL","upgradeRedirectionUrl","showSpeedPayMessage","currentCA","currentBP","managePSBPNumber","updateSpedpayPaymentMethod","amountValue","twoo","IsEnergywiseProduct","EnergywiseProductList","EnergywiseProductArray","IsCreditBaseProgram","dropdownClicked","getDropdownAccounts","showallaccounts","MPSviewAllAccounts","PnSRedirect","checkBillGat","speedpayGAT","CA","billSectionType","generateProductGAT","productname","contractorAccount","modalvalue","groupBy","subsCard","address2","haveproduct","contractValue","addressCheck","HouseNumberSupplement","POBox","allStates","Region","PaymentMethod","totalPerGroup","Salestatus","curr","Quantity","productTypes","CreditCard","CreditBase","actionButtonCancel","enableCancel","ActionArray","Action","UserGroup","actionButtonUpgrade","enableUpgrade","ProductName","ImageUrl","P_UPGRADEURL","pricePerItem","BillingStatus","isCreditBase","ProductGroup","billingTime","BillingTime","billingStatus","minQty","MinQty","maxQty","MaxQty","sourceOfEligibility","SourceOfEligibility","shoppingcartrelevant","Shoppingcartrelevant","transferable","Transferable","productCategory","ProductCategory","productPK","ProductPK","goToPDP","objectkey","findCa","bpToCaData","caData","tempData","getEnrollmentErr","updateCardDetails","cardid","updateCardData","cardID","updateresult","updateCardDetailsErr","validateExternalCardId","expirationDate","externalCardId","externalId","redirectFromSpeedpay","redirectionURL","externalCardDetail","cardDetails","CreditCardNumber","expire","getCardData","creditCardNumber","creditCardType","getUpdateCardDetails","allCardResult","CredCard_Res","Msg","creditCardID","CreditCardID","CreditCardType","CreditCardAccountName","ExpirationDate","ExpirationDateStr","getUpdateCardDetailsErr","addedcard","updateStatusForNewCard","successResponse","updateStatusForExistingCard","isNonNative","STOP","expirationDateArr","monthEndDate","managePSData","uniqueBp","bpValue","enrollResult","filteredEnrollment","uniqueArray","Set","relatedNonNativeData","relatedNonNativeEnrollmentData","isEmpty","nonNativeErr","LOGO","nonAuthData","nonAuthEnrollmentData","nonAuthErr","CreditBaseProductList","CreditBaseProductArray","initError","mpOneTimePurchasesController","updateCancelEnrollmentService","oneTimeCards","oneTime","noEnrollments","subscriptionCards","isuBPID","mpSubscriptionsController","speedpayService","continueMPS","paymentMethodUpdate","ManageProductAndServices","speedpay","subscription","getSpeedpayUrl","login","speedframeCallbackUrl","openPopup","ModalManageNotificationPreference","changeNotification","preference","closeModalChange","NotificationPreferenceController","readAndDerivePreferencesService","getLatestConsentService","notificationHelper","notificationPreferencesAssetsService","sessionStorageAddedInterval","_strings","tab","notificationPreferencesReady","autoReload","autopay","gatConstants","UniLatestVersion","paperlessCTA","_ineligible","Ineligible","_autopay","_dirdeb","_enrolled","_serviceName","Paperless_Billing","tabs","outages","billing","additionalOptions","serviceOrders","currentTab","outagePreferences","billingPreferences","paymentsPreferences","serviceOrdersPreferences","additionalOptionsPreferences","groupById","preferences","subGroupId","subId","transformedPref","SGIdCollection","groupId","SubGroupID","SubID","currentPhone","lastPos","Comm_Medium","PrefID","Autoenrolled","RATE_REVW","BILLPRINT","Medium_Val","currentChannel","BILL_DEL","checkedPDFOption","channels","EBLP","MAIL","PREPAY","Pref_Remaining_Days","remainingDays","NumberOfDays","prefId","PMT_RMDR","SubThersholdvar","subThersholdvar","subThersholdvarModel","subThersholdvarText","rateReviewType","RateReview","FontSize","font_size","DETA","billFormatType","font_type","detailed","COND","condensed","LARG","large","METR","braille","communication","previousEnrolled","isCardAutoEnrolled","dataTransformation","accountDataInSession","notifPref","currentPref","Partner_Preference","AssociatedBP","BILLPAY","BILL_NOTIF","PAY_CONFRM","PPY_AUTO","OUTAGE","ACTIVE_OUT","SRVO_APPT","SRVO_NOT","APPT_REM","PPY_DISC","PAPERLESS","AUTOPAY","APP_SCHED","APP_UPDT","PMT_UPDT","updatePreferencesave","PAY_REMIND","ACCT_MGMT","ENRL_PRCHS","getPreferences","readAndDerivePreferences","phoneNumbers","Partner_Contact","addressNumber","AddrNumber","commOpt","notifPhones","payments","servOrd","addOpt","getCommMedium","accountDataCpy","notReferenceObjects","emailAccount","phonesRoot","phonesTxt","phonesVal","ConsNumber","phonesTextEnabled","TextEnabled","emailsTxt","emailsVal","currComm","phones","createDrop","addNewComm","getPBEligibleStatus","allPrograms","isEligible","serviceName","newMajorVersion","latestVersion","umcVersions","consentDateTime","AcceptConsentDateStr","AcceptConsentTime","consent_type","Accept","DeclineConsentDateStr","DeclineConsentTime","Decline","IgnoreConsentDateStr","IgnoreConsentTime","Ignore","DEC","IGN","lastEvent","pop","umcCard","tabId","fromOhioChoice","isSet","selectedTab","paperlessSaveErrorCount","paperlessBillingStatus","billingData","realStatus","outagesBanner","billingBanner","optionsBanner","umcBanner","ohioBanner","updateError","billingError","optionsError","setGatConstants","businessFunction","tabTitle","sharedCtrl","dataCodeTreatment","h1","gatTabNavigation","sendEventAttribute","getCurrentstatus","refreshPreferences","ohioChoiceConsentController","updateSupplierDetailsService","getSupplierDetailsService","ohioPageItems","numberOfCheckboxesChecked","currentDatePlusOne","updateSupplierList","showAuthButton","showButton","selectedDate","authSuppliers","numberOfAuthCheckboxesChecked","disableSave","tcAccept","checkauthall","isOhio","headLine","successHeadline","errorHeadline","btnTxt","tcTxt","tcHeadline","blankStateTxt","elementPos","SupplierID","SupplierName","popitem","enableSave","tcAcceptbutton","defaultDate","contractAccountNum","ReadSuppToSuppList_NAV","supplierAuth","ReadSuppToEnrlList_NAV","rowLimit","authRowLimit","startingRecord","startingAuthRecord","endingRecord","endingAuthRecord","currentAuthPage","totalPages","ceil","balancePages","constEndDate","totalAuthPages","balanceAuthRecord","currentSupplierName","CurrentSupplier","ohioUser","PreviousRecordsShow","PreviousAuthRecordsShow","NextRecordsShow","NextAuthRecordsShow","fnChangeRowLimit","fnChangeAuthRowLimit","checkboxAuthClick","checkboxauth","checkboxall","checkboxAuthAll","ohioTermsConditionModal","updatesupplierList","readConsentCode","_result$ReturnCodes$","ReturnCode1","readConsentMessage","_result$ReturnCodes$2","toastMessage","ohioToast","ohioTermsController","CCBPPDeEnrollModal","deEnrollFromProgramService","SendMyLetterModalController","updateCorrespondenceService","scrollPosition","mailingAddresses","selectMailingAddress","sendLetter","mailAddress","updateCorrespondence","ZDIG_CRE_REQTORES_NAV","refreshSendMyLetter","showAdd","emailValue","addEmail","emailValid","isdropDownSelected","updateCorrespondens","dropMailingAddress","cacheAccountSearch","ModalManageAccountEditMailingAddress","updateCustomerAccountDetailsService","addressValidationService","manualResponseNotificationDefinitionsAssetService","stateList","showEditForm","mailingForm","mailingData","displayStreetRangeError","isAddressSelected","isAddressSelectedInEdit","mailingAddressData","ownProperty","mobileHome","installations","isAddressInValid","checkForExistingAddress","addressFromManage","streetName","saveMailingaddress","roomNo","apartament","count","addressEntered","addressValidation","flag","addr","mailingaddress","HouseNo","RoomNo","ZipCd","manageAccountMailingAddressObject","addressSelectedFlag","broadcastData","refreshManageAccountMailingAddress","streetRangeFound","floorAptRangeFound","addressObject","Addr_List","Country","Addr_Msg","addrList","AddressLine","splitAddress","returnCodeHandler","errorNotification","manageMissingApt","manageMultiAddressSuggestion","attributeForDataLayer","isLoggedIn","singleMailingAddressSuggestion","isMailingAddress","isPremiseAddress","isAddressfromDQM","isAddressfromPremiseSearch","suggesstedAddresses","tabName","subHeadLine","missingAptGatError","TEXT","manageAccountMailingAddress","mailingDropdownData","manageAccountMailingAddressDropdown","AddMailingDropdownData","unshift","addressObj","addAddress","mailingAddressChange","mailingAddressChangeInEdit","onClickContactUs","onChangeMailingFormValues","mailingAddressForm","singleSuggestedAddress","ModalManageAccountNickName","nickName","isSameName","nameLengthError","manageAccountNickName","saveNickName","mydata","isRefresh","cdpUserId","accName","AcctNickname","refreshManageAccountNickName","UPD_NICK","acctNickname","duplicateNickName","ModalManageMissingApt","enteredAddress","manageAccountEditMailingAddress","ModalManageMultipleAddressSuggestion","splittedAddressArray","radioButton","isPOaddr","splittedAddressArrayCheck","dataForAddress","ManagerAccountController","removeProfileExperienceService","_successToast","_delAction","DEL_REL","_succes","_fadeInOut","stateGo","route","disabledDropdown","housNoAndAddressOrPoBox","IntlAddressLine1","IntlAddressLine2","IntlAddressLine3","hasDelegations","accountOverviewTabs","formModel","disabledSave","unenroll","accountsList","testData","_accountsList$account","multiAccounts","_errorToast","keysDropdown","formBtn","getY","addFunction","formChange","cancelAdding","newMailingAddress","doModal","sendMyLetterModalOpen","scrollY","sendMyLetterModal","saveChangesForm","onbeforeunload","parsedAddress","parsedCurrentAddress","NICKANDADDR","nickNameChangue","addressNoChangue","sendAttributionPush","analyticsToPush","showEditNickNameModal","manageAccountEditNickName","showEditMailingAddressModal","ACC_SEARCH_MANAGED","BpToAdd","housNoAndAddressOrPoBoxDrop","streetSuffix","StreetSuffix","County","addresText","doChanges","roleID","relatedBPEmail","caAccessEndDate","noOfAccounts","ZDIG_ROLESDELEGATION_RESSet","removeProfileExperience","accountForm","validateObj","_vm$newMailingAddress","ManagerModalController","showCheckboxAlert","vp1","vp2","vp3","vp4","vp5","at1","at2","at3","at4","checkboxConfirmChecked","CCAutoReloadTrack","warningMsg","storage","autoReloadTrack","virtual","loading","averageCostPerDay","AverageCostPerDay","urlParams","showShellButtons","fourth","editBtn","stepsShow","paths","reloadWhen","altPath","nameBtn","vpvNameError","reloadAmount","reviewAndEnroll","succes","ELIGIBLE","ENROLLED","GetEligibilityForAutoReload","CCStatementsShell","prepaidRouteState","STATEMENTS","CCPrepaid","unEnrollSuccess","UNENROLL_CONFIRM","ENROLL_EDUCATION_PG","PaymentAssistance","installmentpaymentplansandeligibilityservice","getActiveInstallmentPlansService","SecurityDepositFlag","manageInstallmentPlans","showCPI","installmentPlan","extendedDueDateNew","extendedDatePlusOneYear","getCpiAndCashOnlyData","downPayDueAmount","installmentAmount","pendPmtDlrs","getActiveInstallmentPlans","numberOfInstallments","NumberOfInstallments","installmentsRemaining","NumberOfInstallmentsRemaining","DownPayment","instalmentPaymentPlansAndEligibilityCheck","PaymentPlan","DisconnectDate","getEnrollmentStatusOfExtensionPlan","DISCDATE","ExtendedDueDate","DisconnectionDate","ExtendedDisconnectionDate","gatGenerate","IPAnalytics","ModalManageProfileChangeEmail","newEmail","profileSettingNewEmail","profileLinkingNewUserYesNoController","ProfileSettings","getRelatedBpforRegistration","_allEmails","accSearchRequest","readDerivePreferencesRequest","emailAccounts","emailSubscriptions","restToBp","interimMessage","showexperiance","isLegacyAccount","profileSettings","accUniq","addrNumber","consNumber","primary","doNotUse","DoNotUse","isNew","CustomerName","_allPhones","consumeNumber","notDisturbStart","DND_Start_TIime","notDisturbEnd","DND_Stop_Time","preferredPhone","multipleBpPresent","showPreferenceLink","navigateToAddAccountPage","refreshPSLandingPage","refreshPreferredPhone","sessionDataValue","requestData","relatedBpPayload","searchISUByEmail","GET_BP_A","payload","EXPERIENCES","SC_RESIDENTIAL","MYDUKE_LARGE_BUSINESS","GetRelatedBp","RequestToMessagesNav","RequestToResponseNav","RecurringContributionsManage","$anchorScroll","customerAssistanceStorage","customerAssistance","recurringContributionsRouteState","CONTRIBUTION_TYPE","isEnrolled","recurringContributionsButtons","NOT_ENROLLED","hideHeader","RECURRING_CONTRIBUTIONS","REDIRECT_TO","SCROLL_TOP","HIDE_HEADER","bool","ccRateAnalysisController","getRateComparisonService","getRateComparisonPdfService","currentRateCategory","rateHistory","rateHistoryText","rateHistoryArray","rateHistoryItems","rateAlternate","rateAlternateText","rateAlternateIndex","rateAlternateArray","rateAlternateItems","rateSpinner","isNoAltRate","isBlankStateNonAMI","isTileDescriptionElig","altSubhead","pdfText","currentSubhead","erorContent","meterSelector","getRateComparisonDetails","alternatePlan","getRateComparisonResponse","RateAnalysis","MonthYear","CurrentPlan","altItem","TotalCost","CurrentRateCategory","rateData","CurrentPlanDetails","valu","Name","Consumption","AlternatePlan","altData","AltRateType","comparer","otherArray","other","AlternatePlanDetails","onlyInrateAlternate","onlyInrateHistory","tempInRate","value2","tempInAlt","temprateHistoryTile","currentTilePos","itemPostion","xxxx","setBlankState","blankStateList","blankListArray","getRateComparison","isAlternateTileEligible","AlternativePlan","AltRatePlan","tempAlternate","rateHistoryDate","selectRateHistory","eligibleDate","Messagev1","outData","selectDownloadPdf","getRateComparisonPdf","arra","inte","selectRateAlternate","rate","csrAttribute","ServiceOrderManager","serviceOrderRouteState","SERVICE_ORDER","ccMoveS2MoveOutAddress","objectEventDrop","Select Address","AddressDatTemp","AddressData","loadDataMoveOutAddress","move","moveOutAddress","addressSelect","generateAddress","eventDrop","ccMoveS3ScheduleMoveOut","scheduleMoveOut","hourStop","dateStop","comments","selectButton","nameAccount","saveHour","ccMoveS2LastBillAddress","showNewAddress","lastBillAddress","cities","cityState","convertArraytoDukeDropDownValues","states","stateDefault","loadDataLastBillAddress","_urlCities","getCitiesAndStatesUrl","getServiceManager","ccMoveStep3","moveInAdrressData","objectEventRadio","AFSL","service","ccMoveS3Install","services","numberAccount","ccMoveS3ScheduleMoveIn","scheduleMoveIn","ccMoveStep4NewBil","newBillAddress","loadDataNewBillAddress","ccMoveStep4Review","weekday","addressStop","addressStart","totalPrice","prices","ccMoveStep1ContactInfo","phoneType","contactPref","evt","moveSteps","contactInfo","stepOne","ccMoveStep1DelinquencyCheck","ccMoveStep2","ccSsmShell","stepTwo","stepThree","vpvError","moveComponent","mainpathStep","saveDataTriggered","ShellThirdPartySearchController","thirdPartySearchCustomer","noExperience","getSelectorResponse","getBpInfo","showAccountSearch","Bpdet","AccountSearch","showPropertySearch","PropertySearch","enableBacktoPrevBtn","customerSearch","propertySearch","thirdPartySearch","startIndex","thirdPartySearchController","setTab","umcPublicModalController","updateConsentService","consetValues","revoke","accept","EXPAND_BTN_VAL","umc","activeAgreeButton","activeCloseButton","latestConsent","consentValue","closedFrom","GATAction","updateConsentPublic","UMCUpdated","changeButton","CONSENT_TEXT","juris","accNum","chnl","busFn","textarea","scrollSize","round","closeModalUMC","UMCModalController","umcErrorOnToggle","reloadAdditionalOptions","CCViewAllAccounts","accountSel","allAccountsStorage","selectOneAccount","selectedFromModal","modalChangeAccount","HowToPay","jurisdictionsContent","deProgress","jurisdictions","deCarolinas","deFlorida","deKentucky","deOhio","deIndiana","ebillEnrollment","enrolledStatus","howToPaySpinner","EASILY_ENROLL","singleAccount","disableBankAccount","disableSpeedPay","showContinue","formToPaySpinner","enrolledNotif","speedpayRedirect","alternateAccountId","UserID","returnUrl","speedpayAuth","speedpayAltID","START","SuccessPay","ccSitecoreGenericCachingService","currESTDate","timeZone","displayDate","bankData","ele","confirmationCode","totalDonationAmount","billAmount","paymentSpinner","accountForPay","lastFourDigits","subscript","formatLastFourDigits","ActivityShellController","BalanceActivityController","bpacsvService","pageCase","fileName","ExportedData","fullPayment","TEXT_ALLACTIVITY","usageDates","payDates","filteredByCategory","filterName","showPrevWeek","filterWeek","valueName","usageDateList","actvity","usages","fullList","presentList","payDateList","dateList","usageDateLis","payDateLis","onlyUsageList","onlyPaymentList","exportCSV","printData","BillingAndPaymentActivityController","invoiceTransformImageService","ccBPAInvoiceSelectorService","getBillingSummaryService","invoiceDetailsData","invoiceCommonListData","mergedData","invoiceListDataModified","paymentDescription","TEXT_BILLS","TEXT_PAYMENTS","SORTBY_DESC","SORTBY_DUEAMOUNT","hasGasAccount","hasElectricMeter","editPayment","cancelPayment","contractAccountID","editOnetimePayment","editScheduledPayment","cancelOnetimePayment","setInvoiceObject","showEditPaymentToastEvents","contributionProgram","dropdownSelected","relatedBPInSession","warn","archieveId","payBillVisible","PastDueAmt","TotalAmount","Charges","bpName","billDays","paymentDateLabel","Payment_Desc","accountNumberExpand","contributionMethod","ContributionProg","energyNeighborFund","ContributionAmount","isConrtributionEligible","totalAmountPaid","kubra","oneTimePayment","excludedContributionAmount","ExcludedContributionAmount","contributionStatus","getTheDate","dateString","currentTime","_dueAmount","businessCustName","allActivityData","showPDFModal","windowTitle","fromEditScheduledpayment","fromCancelpayment","fromCancelOnetimepayment","reloadBillingAndPaymentAct","detailsPromise","getBillingSummary","listElement","InvoiceDetails","invID","InvoiceId","PaymentRecieved","CurrentCharges","TotalKwhqt","DailyKwhCost","TotCcfqt","DailyCcfCost","elemDetails","mergedBillData","counter","attributeElement","CCCancelOnetimePaymentModal","cancelScheduledPaymentsKubraService","makeOneTimeMonthlyContributionService","returnApplicableProgramsService","_documentId","_premisseId","_cancel","makeOneTimeMonthlyContribution","Cancel","_onePayment","ONE_TIME_PAYMENT","cancelOneTimeContribution","_dataToPostContributionCancel","_contractAccountId","donationAmount","reqObj","monthly","numberMonths","makeContributionPaymentResponse","ZreplyCode","isContributionEligible","dataObjApplicableProg","paymentData","returnApplicablePrograms","_temporalProgram","Programtores_nav","ProgramName","getInvoiceObject","paymentId","cardType","cancelScheduledPayment","reloadBPActivity","CCCancelPaymentModal","toastNotificationsService","_block","BLOCK","kubraPayment","CCEditPayment","payNowOrScheduledService","_bankAccountId","_notEnrolled","_donation","Donation","Update","_toFixed","isSetDate","isSetAmount","isSetPayment","showSpinningLoader","samePaymentError","bankbpnumber","currentDayFormat","makeContributionObj","calendarTouched","selectDate","lastSelectedDate","disableSaveButton","contributionAmountCheck","contributionAmount","contribution","showContriError","showContriLimitError","paymentObj","isRedirect","paydata","showToastForEdit","m","makeContributionPayment","BankBp","checkAmoutPaid","savePaymentModal","checkPayment","showSaveModal","showBankError","showBanner","paymentAmount","showAmountError","lengthError","_paymentDate","_paymentAmount","getFullAmount","otherAmount","isSameAmount","language","clientReferenceId","paySource","unEnrolled","payType","routing","mode","payer","payerName","eMail","sapWalletProfile","sapBankAccountId","sapBankBp","payNowOrScheduled","errorResult","_dataToPostContribution","charAt","kubraDuplicateError","getTheDue","getDueAmt","fullAmtDue","checkDueDate","totalDueAmt","paidAmount","totalAmtToPay","checkForError","canPay","addNewBankAccount","dataObjPrepaid","disableBtn","creditAmount","abs","newAmountsArray","tempArray","amountSelected","displayDueDate","amountToPay","amountLength","submitFullAmount","otherAmounts","checkAmount","amtLimit","savePayment","checkAmtLimit","getAmountLimit","amountLimit","extraAmountLimit","updateSavedPayment","closePaymentModal","changeDate","dateEnd","validateForm","cardName","dateRequiredError","CCPDFNotFoundModal","POCToastModalPageController","validUnenroll","typeResponse","DeEnroll_Bill_Pay_Message_Nav","ReturnCodeTreatment","successDeEnrollRes","ccCareComponentController","ccCareProgramsFactory","getCarePrograms","careProgramasData","carePrograms","FPModalAcceptWorkOrder","indexedDbDataService","updateCEPServiceOrdersService","_activeOrdersUrl","pageUrls","activeOrders","_baseUrl","_dataToPatch","_putAcceptedOrders","_getSelectedOrders","selectedOrders","serviceOrderId","soStatus","soStatusName","soType","soTypeName","serviceOrderLoaded","updateSelectedServiceOrders","acceptWorkOrder","patchEventStarted","patchWrapper","so","putSO","transformServiceOrder","updateCEPServiceOrders","putAcceptedOrders","FPModalAdvancedFilter","allTechnicians","reloadServiceOrder","sessionServiceOrder","_getSelectedOrder","merge","oldValue","onChange","FPModalAssignWorkOrder","activeOrdersUrl","_allTechnicians","_assignedTechnician","baseUrl","dataToPatch","kwCdpId","CDPID","kwName","kwValue","assignedTechnician","badgeId","totalOrderCost","totalBundleWorkOrders","total","getTotalOfSelectedOrders","widgetsData","PENDING_ACTIVE","technician","assignWorkOrder","assignedTechnicianIndex","getStatusCode","dataToPatchSO","originalSO","DISPATCHED","FPModalBundleWorkOrder","_acceptedOrdersToDelete","_putInvoiceOrders","woorSRTypeServiceRequest","woorSRType","SERVICE_REQUEST","woorSR","orderCostTimeDetails","regularLaborCost","entitlementLaborCost","partsCost","tripFee","laborCost","materialCost","contractorInvoiceNumber","ruleValidationsMessages","duplicateInvoiceId","errorMsg","readyForInvoice","READY_FOR_INVOICE","batchDataSet","chunk","batchData","wrappedDatat","putInvoiceOrders","serviceOrderIds","deleteAcceptedOrders","FPModalCancel","kwCode","cancelledReason","cancelReasonType","reasonComments","getCancelledReasonTypes","cancelledReasonTypesList","formInvalid","reasonTypeOther","OTHER","cancelWorkOrder","CONTRACTOR_CANCELLED","deleteAcceptedOrder","FPModalDecline","getDeclinedReasonTypes","declinedReasonTypesList","declinedReasonTypes","declinedReason","declineReasonType","declineWorkOrder","CONTRACTOR_DECLINED","ars","FPModalDispatch","currentUserService","roleTechnician","userTypes","TECHNICIAN","orderDetailsUrl","ORDER_DETAILS","badgeNumber","effectiveDate","multipleTechnicianRequired","assignedOtherTechnician","cdpIdAssignedTechnician","dispatchWorkOrder","patchServiceRequest","INSTALLATION","patchInstallation","INSPECTION_REPLACEMENT","patchInspectReplace","REMOVAL","patchRemoval","deserializeSO","putAcceptedOrder","getUserRole","FPModalUsersController","addCEPUsersService","rolesOptions","validationMessages","group","email2","setUser","generateRandomNumbers","addCEPUser","usersReloadRequired","FPModalMultiDispatchController","dropdown","assignedTechnicianCdpId","warning","setServiceOrder","FPModalReadyForInvoice","errorDuplicateInvoiceId","readyForInvoiceWorkOrder","putInvoiceOrder","FPModalReview","typeServiceRequest","finishReview","CONTRACTOR_REVIEWED","FPModalSaveChanges","saveChanges","isAcceptedOrder","acceptedOrdersStatuses","FPModalScheduleAssign","scheduledStartDateHour","hoursOptions","scheduledEndDateHour","firstAttemptDateHour","customerContactHistory","createdDateDukeCalendar","createdDate","createdDateHour","getHourFromFullDate","scheduledStartDateDukeCalendar","scheduledStartDate","scheduledEndDateDukeCalendar","scheduledEndDate","noOfContactAttempts","firstAttemptDateDukeCalendar","firstAttemptDate","customerContactPreferences","notifyCustomerWhenInRoute","validationPatterns","scheduleWorkOrder","concatDate","FPModalScheduleAssignForm","FPModalUserAdministration","FPDateHelperService","pagerService","workingUsers","_role","widgetUsers","pagination","pager","createPager","acceptedOrdersPager","noWorkUsers","noWorkingSetUsers","usersLoaded","contractor","userRoleLabels","startRow","endRow","changePage","FPModalWorkComplete","kwDeviceCode","DEVICE_CODE","kwDeviceName","DEVICE_NAME","kwMeterId","METERID","kwText","meterNotAtPremise","resolutionTypes","repairTypeOptions","resolutionTypeOptions","subDays","resolutionDetails","resolutionDateDukeCalendar","getSRRepairTypesByProduct","getSRResolutionTypesByProduct","getWOResolutionTypesByWOType","dropDownList","meterNumbers","resolutionType","equipmentOptions","repairType","typeInstallation","serviceAddress","meterId","equipmentDetails","deviceCode","typeInspectReplace","replacementDeviceName","descriptionOfWorkQtyParts","descriptionOfWorkQtyPartsCovered","preferredEmailAddress","convertArrayToString","resolutionDate","surveyReceivedByCustomer","installationEquipDetails","deviceName","deviceSerialNumber","replacementNeeded","replacementDeviceSerialNo","deviceOperational","repairTypes","customerSurveyMethods","currentTodayDate","checkInstallation","workComplete","COMPLETED","foundOption","isMeterRequired","checkResolutionType","CCModalDelegationInvite","_accept","_decline","decline","_successfullyUpdated","Successfully_Updated","invites","multiple","updateDelegation","invite","acceptDeclineDelegation","accountDeleagtionRequestId","messageText","delegationInvite","correspondencePaperlessBillingController","paperlessBillingFactory","setFormatAddress","doEnrroll","keyName","managerData","isEqual","setData","mailingAddres","residential","isSuccess","restructArrayObjDropdown","paperlessBilding","getPaperlessBillding","getServicePaperlessBilling","getDefaultPaperlessBilldingUrl","CCSSOComponentController","ProgramStartDate","ProgramEndDate","dollarAmount","DollarAmount","contributionName","userresults","dataAccount","enableSso","virtualPagePushSSO","CCModalAPEditUser","_action","setToast","isSusccess","disableUpdateButton","userRole","updatedRole","updatedendDate","saveDelegations","accessEndDateValue","isDefined","updateDelegationManage","changeRelationship","formUpdated","editUser","calendar","$touched","CCModalAPResendInviteLink","resendEmailService","_index","resendEmail","cancelResendInviteLink","resendInviteLink","CCModalAPDeleteUser","deleteDelegationService","_delRel","_succesDeleteDelegation","success_delete_delegation","Pending","_declined","Declined","_expiredInvite","expiredInvite","_selectedAccount","removeUser","bussinesPartner","cancelDeteteUser","resendDeleteUser","Cdpid","accountDelegationRequestIdList","CCEnrollmentFixedBillManageCredit","CCEnrollmentFixedBillManage","elemChart","getChartData","aProps","getOwnPropertyNames","fixBillAmount","fixedBilling","CurrentDifferenceAmount","FIXBIL","unenrollFB","CCEnrollmentPlanDetails","_fixedBillStorage","pageError","fixBillPageError","fixedBillStore","getJurisdiction","decimals","dateOfRenewal","enrollmentFB","enrollmentTerms","CCEnrollmentSuccess","CCEnrollmentTerms","enrollmentDetails","enrollmentPlan","CCEnrollmentFB","getServicesService","fixedBillStorage","saveAndGo","abbreviatedReg","toStorage","processCode","getServices","MOVE_OUT","contract","GetServ_Ins","Head_Ins","Contract","reachedSuccess","enrollmentSuccess","nonNative","txtTermsConditions","termsAndConditions","CCUnenrollFixedBillARC","unenrollSuccess","CCUnenrollFixedBillSuccess","CCUnenrollFixedBill","CCEnrollUnenrollInFixedBill","unenrollARC","unenrollManage","enrollUnenrollFixedBill","tempAccounts","CCUnenrollFB","ManageInstallmentPlans","PLAN_TYPE_ARREARS","PLAN_TYPE_DOWN_PAY","PARTIAL_PAID","UNPAID","progressBarSteps","installmentPlanDetails","isDownPayDue","downPayStatus","isArrears","downPayDueDate","isPartialDue","onClickPayNow","onClickPayAssist","onClickPayLocations","gatOnError","yyyy","messageTypeCode","isCashOnly","cpiMesg","totalDueAmount","cpiPriority","_$map","amountPerInstallment","InstallmentAmount","downPayment","installmentAmountRem","RemainingInstallmentAmount","numberOfInstallmentsRem","installmentsPaid","_ref2","_ref3","GetActiveInstallmentPlans","failedStateNotificationTriggeredWithoutGAT","totalInstallments","progressArr","cpiData","IPDetails","InstallmentPlanSuccess","isDownPayment","installmentPlanStorage","installmentYear","installmentMonth","installmentDate","installmentDueAmount","installmentAccount","payLocationBtn","selectedPlanType","InstallmentType","PAYMENT_ASSISTANCE","ANALYTICS","BOTH","DEPOSIT","UTILITY","openAmount","PaymentPlans","downPaymentPlanOne","downPaymentPlanTwo","arrearsPlan","EligibilityMessage","minNoInstallment","getInstallmentPlans","nextpage","selectedPaymentPlan","paymentPlan","PlanTypeDescription","OpenAmount","minNoOfInstallment","ReviewAndSubmit","createInstallmentPlanService","installmentpaymentplansextensionsandeligibilityservice","_UTILITIES","amtPerInstallment","remainingAmount","installmentsNumber","installmentSelected","downPaymentSelected","installmentPlanData","enrollStatus","selectPlanType","selectedState","isContactVisible","TypeOfCharge","plandetails","IPTypes","IPTypesInfo","installment","localStorage","getItem","dropDownChanged","saveInstallmentPlan","installmentPlanType","typeOfCharge","numberOfInstallment","createInstallmentPlan","CreateInstallmentPlan","INSTALLMENT_PLAN_SUCCESS","contactRedirect","contact_url","reloadPage","CCManageAutoPayAddBankAccount","addBankDetailsKubraService","enrolledProgram","getAccountLimit","accLimit","nameLimit","_vm$form8","ShowError","showerror","subheadScraped","_vm$form","_vm$form2","_vm$form3","_vm$form4","_vm$form5","_vm$form6","_vm$form7","buttonTextForGAT","subheadForGAT","checkAndContinue","CCModalAddNewBankAccount","accNumLimit","deleteGlobalGAT","bankAccountNumber","transitNo","ccModalUpdateDelegateBankAccount","accType","getBankAccountsSAP","SAVE_SUCCESS","selectAccountForDelegate","CCUnenrollAutoPay","_DEENROLL","DEENROLL","CCMPSAllAccountModal","$animate","currentSelectedAccount","allAccountData","allaccountsData","pagedData","curPage","numberOfPages","pagenumbers","pageSize","radioChecked","selectAddress","selectedAccountObj","onAccountClick","gotoPage","CCCancelProductServiceModal","upgradeCancelStore","productService","cancelProductServiceService","refund","enrollmentResponseList","cancelledSuccessfully","errMsg","imgToDisplay","uniqueClass","GatRequired","updateCancelEnrollUrl","CCUpdateSpeedPayPaymentMethodModal","currentCASP","updatePayment","goToSpeedpay","upgradedSuccessfully","allcards","getCardDetails","getresult","errVal","CCardId","cardDetailForCA","cardIdDetailsForCA","externalWalletId","disableACH","CCUpgradeProductServiceModal","AdditionalOptionsPreferencesController","currentCommunication","notifId","inlineVPV","editConsentStatus","umcVersion","newConsentStatus","UMCActions","generateGATEvents","getCode","getMsg","preferenceAction","updateDndPreferenceUrl","CreatePreferences","upgradeConsent","openUMC","cardsModel","chan_opt","comm_opt","channelItemsDDList","preferencesReady","notificationPreferences","emailToDelete","phoneToDelete","notificationToConfirm","notificationDropdowns","currentNotifModal","notifIdModal","channelIdModal","toastOpt","toastTimeout","gatActiveCard","modalValue","isvalidSubmit","isDuplicate","clickedSave","typeError","errorDelete","addCommVPV","len","errorModalVPV","req","duplicate","pattern","phoneInvalid","cancelChange","deleteNotification","dropDownIndex","globaldata","deleteValue","communicationText","channelType","notif","isIdentical","dropdownFilter","communicationOptions","enrolledPref","addNotification","channelChange","dropCommunication","addNew","communicationChange","indexNumb","cards","modelSelected","phonesTypes","phonesTypesMobile","modalForm","communicationModel","showModalLoader","indexToCardTitle","cancelChanges","dataModel","checkPlaceholder","cardIndex","madeChanges","currentData","deleteFlag","oldData","indexNew","lenOld","indexOld","showType","_result$0$ReturnCodes4","_result$0$ReturnCodes5","prefError","_result$0$ReturnCodes6","_result$0$ReturnCodes7","notifNew","notifOld","confirmButton","loadingChanges","compareChanges","noChanges","changeFormatDetailed","currentNotif","getCurrentNotification","format_condensed","format_detailed","handleEnrollment","saveNewCommunication","button","resetChanges","AddCommunication","modalInputValue","createNewCommunication","emailErrorModal","phoneErrorModal","tempNotificationPreferences","_result$","_result$2","_result$0$ReturnCodes","_result$0$ReturnCodes2","_result$0$ReturnCodes3","sendNotification","stringToConcat","lowerCasesAndDashesThenConcat","sendAdditionalOptions","flagToggle","sendEditPayments","concatEdit","activateUmc","umcError","umcRevokeModal","getSuccessMessage","isUnique","updateDisableSave","enteredPairs","getPairs","currentPairs","sendEditAdditionalOptions","channelText","classError","initGatConstants","enrlPrchs","sendAddNotification","sendDelete","channelTxt","gatNewComm","verify","communicationVal","cardId","displayOptions","commChange","addNewCommunication","updateNotif","umcActionConsent","readConsentUMC","umcMessage","umcReturnCodeRead","umcMessageRead","updateConsentUMC","umcReturnCode","umcType","updateConsentType","returnCodeUMC","messageUMC","endpointUMC","UpdateConsent","ReadConsent","currPref","abbreviation","ohioCardEligible","setNotifications","deleted","setCommunicationValue","returnCodeOH","errorMessageOH","stringBase","comms","BillingPreferencesController","ebillEnrollKubraService","createPreferencesService","_paramDataToEnrollPB","paperlessInfo","_paramDataToUpdate","lowBalanceDays","lowBalanceDaysBackup","isPaperlesBilling","defaultEmail","disablePaperlessEnroll","toggleClicked","toggleClickedCopy","getLowBalanceDaysText","notifPos","prepaidChanels","continueSaveChanges","typeOption","gatAction","gatCard","recordRadioGatAction","newNotif","rr","optoutEdit","pdfBill","checkboxPDF","PaperlessEnrollmentFailed","floridaUser","currentNotifModalIndex","UNENROLL","paperlessStatus","ebillEnrollKubra","setPaperlessStatusUnEnroll","paperlessBillingInelegible","cancelModalDelete","dayAlert","j","band","remDay","pushDay","sendBilling","sendEditBilling","checkboxSave","promiseE","SUBGROUPIDS","SUBIDS","reqby","created","COMM_MEDIUMS","EBIL","createPreferences","successEnrollRes","gatAddDeleteEvent","checkedPDF","enrollmodal","OPTOUT","notifyStatus","notifyPrefer","indexId","paperlessEnroll","billingNotifications","paymentConfirmations","lowBalAlerts","titleTxt","paymentUpdates","billPrint","bilDel","billNotif","payConfrm","payUpdt","prePay","ppyAuto","gatRadioToggle","gatContinuePaperless","sendToastEvents","gatRRLearnMore","callReadandDeriveService","notifsId","divId","cardError","ebillEnrollmentUrl","productRecommendationsCARE","billNotify","curPref","newStatus","editionMode","newstatus","createsaveChanges","_result$0$ReturnCodes8","FL01","decUser","NC01","SC01","paperlessTriggerFromPage","labelflag","autopayInelegible","autoReloadInelegible","subThersholdvarDropdown","triggerOn","updateSave","triggerOff","unEnrollNotification","enrollNotification","PaymentsPreferencesController","sendPayment","OutagesPreferencesController","sendOutage","sendEditOutage","disableModalSave","outageAlerts","Appointments","ElectricConnectDisconnect","ActiveOut","ServoNot","ApptRem","PPYDesc","ServiceOrdersPreferencesController","ccPrepaidAddSpeedPay","dtaUsers","showFailedState","costPerDay","ccPrepaidAddFundsSuccess","previousAccountBalance","currentAccountBalance","addedAmount","showSuccessMessage","ErrorPageUrl","ccPrepaidAddFunds","ADDFUNDS_LP","CCAutoReloadWhenController","when","formatNewAmounts","ident","bindedAmounts","sub","formCompleted","whenOption","daysRemaining","stepPosition","nextComponent","trackName","gotoStep","CCAutoReloadAmountController","CCAutoReloadBancAcctController","bankList","banckAccounts","dropdownT","dropdownV","dropdownKeys","creditOrDebitCardWithSpeedpay","showAddbankAccountLink","doNotAcceptCheck","getaccountNumLimit","getNicknamelimit","clearAutoReload","dropText","ServiceErrorCode","banckAccountId","hideBankForm","autoReloadForm","bankAccountInfo","addBA","paymentOptions","CreditOrDebitCardWithSpeedpay","BankAccount","showBankDetailsForm","newBA","banckAccount","paymentOption","copyTBD","accountBalanceRes","indicatorStatusCurrentAccount","getAccountType","BankAccountDefaultText","speedFrameUrl","speedframeCallBackUrl","gatEvents","bankAccountNickname","routingNumber2","confirmAccountNumber","addnew","bankAcc","onSelectItems","onSelectAccountType","previousComponent","CCAutoReloadReviewController","enrollUnenrollInAutoReloadService","findDetails","order","actioEnroll","enrollUnenrollInAutoReload","ENRL_AUTO","dataOject","displayAction","addAction","enrollRequest","DISPLAY","detailCreditCardPromise","DaysRemainingThreshold","BalanceThreshold","daysRemainingThreshold","accountBalanceThreshold","updateCreditCardPromise","getDetailCreditCardPromise","Speedpay","requestedOn","requestedTime","CCAutoReloadSuccesController","subHeadline2","ccAddBankAccountPrepaid","populateAccountTypes","getAccountNumLimit","getNicknameLimit","addNewBankAccountToSAP","SAVE_MANAGE_AUTORELOAD","addedBankAccount","CCLowBalanceComponent","ccManageAutoReload","manageAutoReloadService","FPModalService","saveInfo","activeBank","reloadWhenOption","balanceAmountRW","bankAccounForm","dropdownBP","bankBP","manageAutoReloadUnenroll","selectedBankAccountResponse","bankListResponse","selectedWhen","selectedAmount","selectedMethod","reloadBalanceOption","reloadDaysOption","paymentoptionBank","paymentOptionSpeedPay","enrolledWithCreditCard","actioUnenroll","manageAutoReloadRequest","creditCardDetails","UpdateAutoReload","reloadWhensumAll","reloadWhenSelected","reloadAmountsumAll","newTotalReloadAmount","reloadAmountSelected","UNENRL","autoReloadDetails","isPresentInTheList","ReloadAmount","populateBankList","hideComponentDashboard","createDropdownListManageAutoReload","bankAccountText","saveManageAutoreload","saveAutoreloadRequest","manageAutoReload","AutoReloadManage_NAV","autoreloadUnenrollNotification","attributeDataValues","confirmation","saveInfoAutoreload","ADD_BANK_ACCOUNT_PREPAID","changeReloadWhen","BALANCE_OPTION","goSpeedpay","paymentTypes","selectedPaymentType","autoReloadAddNewBankAccount","paymentMethodSelected","ManageAutoReloadSuccessModal","ManageAutoReloadUnenrollModal","enrollContinueModal","Prepaid1EducationPg","balanceThreshold","totalDueDlls","ENROLL_TERMS_CONDITIONS","Prepaid2TermsConditions","TERMS_TEXTAREA","TERMS_CONDITIONS","ENROLL_LOAD","previousStep","Prepaid3Load","createContractAccountInPrepaid","enrollIntoPrepaidService","PREPAID","createContractAccount","enrollIntoPrepaid","averagePerDay","thresholdAmount","dataCreateContractAccount","dataPrepaidDetails","CreateCAToMessageNav","CreateCAToCANav","balanceAmount","ccPrepaidEnrollSuccessController","balanceBeforePay","EnrollPrepayToMessageNav","CCStatements","setFullYear","uniqueData","BillStartDateStr","uniqueKeys","diff","documentId","billYear","filterYear","showPrevYear","yearList","statements","noDataFound","goToDocument","getInvoiceImage","platform","previousYear","confirmUnPrepaid","UNENROLL_SECURITY_DEPOSIT","UNENROLL_LOOSE_BENEFITS","LooseBenefits","tempDate","convertDateToFormatApi","generateDateNormal","securityDepositUnPrepaid","delinquencyCheckService","unenrollIntoPrepaidService","orderDeterminationService","_delinquencyCheckData","_orderDeterminationData","todaysDate","datetrans","Installation","PID_DELINQ_FLAG","CA_DELINQ_FLAG","PREM_DELINQ_FLAG","delinquencyCheckForPremise","anlage","sparte","partner","orderDetermination","H_ReqToFrontEndNav","deposit","securityDeposit","ActToMatcode","MatcodeToAppt","serviceCharge","SERVICE_FEE","totalpay","unEnroll","matCode","MatCode","generateDateNextDay","tempNextDay","isFailure","premise","miAmount","miSecurityDepositAmt","unenrollIntoPrepaid","moMatCode","moPremise","moInstallation","moAppointmentDate","moMeterNumber","equipmentNo","moDivision","moveOutDate","moContract","miPremiseId","miUserName","miWaiveDate","miMatCode","miPremise","miInstallation","miAppointmentDate","miMeterNumber","moveOutDateInMoveIn","UnEnrollToMessageNav","failureState","UNENROLL_SUCCESS","ccPrepaidUnenrollSuccessController","EmailSubscriptions","manageEmail","maintainUserProfileService","profileTypesAssetService","_sessionData","addingEmail","addNewEmail","deleteIcon","showPreferenceContent","temporaryEmails","fromDeletePhonemodal","isShowMoreEmailVisible","remainingEmailCount","toastMessages","FADEINFINITE","manageAddEmail","saveEmail","newEmailAddresses","addEmailAddresses","EmailNew","CUDFlag","maintainUserProfile","mantainUserProfile","MaintainProfileReqCA","cancelEmail","deleteEmail","viewMoreEmail","emailArray","clone","manageEmails","toastMessageTxt","refreshManageEmail","ModalManageAddEmail","duplicateMail","newEmailObj","ReturnCode2","errorsWithMapping","noMapping","accountSearchRequest","onEmailBlur","ModalManageEmail","emailToCheck","deleteEmailAddresses","Consnumber","EmailCurrent","dataToDelete","ManagePhoneNumbers","updatePhoneNumberService","_kwText","_updPhn","updatePhoneNumber","UPD_PHN","_remPhn","REM_PHN","_addPhn","ADD_PHN","_dndRem","updateDndPrefence","DND_REM","_defaultTime","managerPhone","DEFAULT_TIME","_home","HOME","_mobile","MOBILE","_other","_textDnd","_startTime","_endTime","remainingPhoneCount","edidPreference","convertToISOTime","newTime","PhoneSrcToAction_NAV","PhoneActionToRes_NAV","phoneArray","resetAddPhoneRow","hideAllEditRow","rowToEdit","temporalPhoneRow","activeNotDisturbTime","startTime","endTime","ph","originalData","preferredFlag","notDisturbTimes","preferredPos","typeSelection","mobileType","startTimeFormat","endTimeFormat","doNotDisturbEnabled","checkboxFlag","phoneTypeItems","dropDowns","phoneTypes","selectStartNotDisturbHours","selectEndNotDisturbHours","allBullets","notDisturbTime","phoneOptions","rowToAdd","savePhoneControls","tooltipPreferred","tooltipDisturb","checkUpPhone","preferencePhoneRow","typeOfContact","newPhone","sequenceNumber","dndStartTime","dndStopTime","beautifyPhone","hideEditPhone","preferenceupdate","hidePhoneOptions","hideTooltip","showAddPhone","edit","manageAddPhone","showEditPhone","showPhoneOptions","hideAllEditPhoneOptions","showRemovePhone","managePhoneModal","managePhoneNumbers","showTooltip","editPhoneNumber","viewMore","refreshManagePhoneNumbers","managePhoneNumber","ModalManageAddPhone","startdt","enddt","startPeriod","endPeriod","hoursOptionsForProfile","selectStartNotDisturbHoursPeriod","hoursTimePeriodOptionsForProfile","selectEndNotDisturbHoursPeriod","startTimePeriod","endTimePeriod","originalModalState","dndChecked","duplicatePhoneFlag","isDropDownChanged","checkboxFlagAddNew","addEditPhoneNumberData","duplicatePhone","onChangeDropDown","changeCheckBoxState","ModalManagePhoneNumbers","updatePhoneNumbers","deletePhoneNumber","_contactType","dataToPostPhoneNumber","SignInAndSecurity","changeEmailService","changePasswordService","isRegisterEmail","noneColor","greenColor","_successPasswordChanged","changeEmail","changePassword","confirmPassword","newPassword","oldPassword","passwordReq","passwordCharacter","passwordLowercase","passwordNumber","passwordUppercase","passwordSpecial","threeRequirements","confirmEmail","mailPassword","overChangeEmail","overChangePassword","infoAccount","emailTemporary","onChangePassword","ErrorNewPassword","ErrorCurrentPassword","_fadeinfinite","checkUpTitle","isEmailAssociated","isEmailRegistered","isEmailChanged","showEditEmail","newEmailForm","hideEditEmail","editEmailForm","emailAddress","CHANGE_EMAIL_ADDRESS","newEmailAddress","signoutEmail","showEditPassword","changePasswordForm","hideEditPassword","passwordRequirements","required","onEmailFieldsBlurred","checkProfileExists","datarequest","IsEmailRegistered","RegistrationStatus","onEmailFieldsChanged","ContributionSuccess","roundUp","ContributionUnenrollSuccess","defaultProgramName","ContributionType","donation","monthlyDonationAmount","MONTHLY","roundUpMyBill","ROUND_UP_MY_BILL","changeContributionPayment","onError","SAVE_ERROR","redirectTo","CONTRIBUTION_SUCCESS","formStartingValues","dataCustomerAssistance","valuesChanged","unenrolledData","showLimitedError","enableButton","saveStep","toUnenroll","goToUnenrollProgram","CONTRIBUTION_UNENROLL","defaultValuesChanged","defaultType","defaultAmount","currentType","currentAmount","enrollSaveGAT","unenrollGAT","ContributionUnenroll","isPageLevelError","unenrollProgram","CONTRIBUTION_UNENROLL_SUCCESS","CCServiceOrder","noOfServiceOrders","Premise","VIEW_SERVICE_ORDER","RecurringContributionsController","customerAssistanceData","ViewServiceOrderManager","_completed","viewServiceOrderStatus","_incompleted","INCOMPLETED","_splitedRemarks","ERROR_OCCURRED","SoRemarks","PrimaryContact","_splitedRemarks3","additional_comments","reported_time","ReportedTime","verifyReadOnlyAndDoVirtualPagePush","ordinal_suffix_of","k","currentDueDateDateFormat","currentDueDateWithSuffix","firstPage","selectedDueDate","selectedDueDateWithSuffix","pickYourDueDate","firstStatePage","secondStatePage","buttonDisabled","PYDDPageError","backToPage","CustomerSearchController","csvExportService","noDataFoundErrorMessage","serviceDownErrorMessage","customerTabId","streetTabId","phoneNumberTabId","accountNumberTabId","businessTabId","premiseTabId","MAX_RECORDS","getTabNameFromTabId","clearForm","addressSearchForm","accountNoSearchForm","premiseNoSearchForm","customerNameSearchForm","telephoneNoSearchForm","businessNameSearchForm","searchResults","showResults","telephoneNo","customerZipCode","customerState","customerCity","advPhoneNumber","advStreet","phoneNo","advCustomer","businessName","businessCity","businessState","businessZip","advBusiness","submitBtnDisabled","showAdvancedFormInputs","tpstSearchCriteria","getThirdPartySearchCustomer","showAdvanced","error_response","error_code","MessageList","isMaxResults","IsMoreData","Records","showAdvancedFields","record","isNonReg","SrcSysCode","isMidWest","PremiseState","PremiseUnit","PremiseHouseNum","PremiseStreet","PremiseCity","PremiseZipCode","CustomerTelephone","redirectAccountNumber","updateCustomerFormData","telephone","updateStreetFormData","updatePhoneNumberFormData","updateAccountNumberFormData","updateBusinessFormData","sendVirtualPagePushSubmit","isNotBusinessTab","sendVirtualPagePushResult","selectStatesList","enableBackToPrevButton","tabNumber","disableAdvancedSearch","searchPageItems","concatTab","pageToPush","searchType","validateSearchCriteria","onClickAdvancedSearch","sendVirtualPagePushDetails","PropertySearchController","thirdPartySearchProperty","getThirdPartySearchProperty","customerBillingName","customerLastName","BP_Last_Name","customerFirstName","BP_First_Name","streetAddress1","streetAddress2","submitFormNoParse","ThirdPartySearchViewDetailsController","thirdPartySearchDetails","customer","serviceAgreement","usage","eepp","checkNullFields","valueArray","hideDetails","getThirdPartySearchDetails","hideAcctDetails","hideCustDetails","hidepremiseDetails","hideserviceAgreementDetails","hidemeterDetails","hideusageDetails","hideeeppDetails","electricUsages","gasUsages","nonDateProducts","listProducts","NamePrefix","FirstName","MiddleName","LastName","DoingBusinessAs","AreaCode","TelephoneArray","TelephoneNumber","PhoneType","TelephoneTypeCode","SourceSystemCode","BusinessPartnerID","BPID","GenerationID","GenID","AccountHUBID","StatusDescription","AccountStatusDescription","AccountStatusCode","StatusEffectiveDate","AccountStatusEffectiveDate","AccountType","AccountAddressLine1","AccountAddressLine2","AccountAddressLine3","AccountAddressLine4","AccountCity","AccountState","AccountZIP","AccountZipCode","PreferredLanguage","UniversalMarketingConsent","UniversalMarketingConsentVersion","UMCVersion","PowerManager","CurrentYearPowerManagerIncentiveAccount","CurrYrPwrMgtIncvAmt","SourcePremiseID","SrcPremiseId","PremiseAddressLine1","PremiseAddressLine2","PremiseAddressLine3","PremiseAddressLine4","PremiseZIPCode","EffectiveDate","TaxCounty","RenterIndicator","LandlordName","PremiseType","transformer","Longitude","Latitude","ServicePointArray","SourceServicePointID","SrcServicePointID","TypeCode","TypeDescription","PriceName","PriceScheduleName","PriceEffectiveDate","RateScheduleCode","getMeterDetails","MeterArray","SourceMeterId","SrcMtrId","SerialNumber","ManufacturerTypeCode","ManufacturerTypeName","ManufacturerName","MeterStatus","SurgeInstalled","_result$ServicePointA","_service$MeterArray","_service$TypeDescript","UsageArray","TransactionDate","EEParticipationArray","_result$EEParticipati","ProductEnrollmentStartDate","ProgramCancelDate","ProductCancelDate","ProgramMeasureID","ProgMeasId","ProgramMeasureName","MeasNm","PoductCode","ProductDescription","ProductsDescription","EnrollmentStatus","Qty","sendVirtualPagePushDetailsExpansion","eventAction","eventLabel","fireEvent","onClickBackToResults","expand","addSpaceBetweenWord","word","answer","curLetter","prevLetter","FormToPay","activeAccountsDetails","activeTab","submitButtonText","isNewAmount","multipleAccount","balanceStepsName","stepTitle","FormValidationStatus","FormErrMsg","activateAccountsDetails","isInteger","SAVE_STEPS","savePaymentInfo","SAVE_DATA","FORM_VALIDATION","ShowErrorForm","CHANGE_STORAGE","SET_STEP","conflictMessage","PaymentAmount","acceptWarmth","amountSection","copySelectedAccounts","inputAmount","warmthValue","negativeAmountSection","multipleAmountInput","zeroDueAmount","enableError","singleAccLength","checkSaved","checkSavedPayment","amtCheck","checkVal","checkSingle","checkLimit","amountCheck","filterAmountCheck","zeroAmountCounter","zeroAmountError","newAmounts","zeroDueFlag","warmth","WARMTH","contributionForm","validateAmount","fullBalance","payAmount","filterAmt","singleAmtToPay","singleAmtlength","amtTotal","sElement","sIndex","pElement","pIndex","donationValue","tempNewAmountsArray","toggleSection","radioBtnIndex","changeAmount","refreshPaymentPage","addValidation","submitOtherAmount","singleAmountCheck","filterCheck","PaymentDate","_payOnDueDateValue","_plusOne","calenarDate","disableContribution","correctFormatDate","dateLimit","newDateSelected","payOnDueDate","payOnOtherDate","showPotentialFeesWarning","selectPaymentDate","updatePotentialFeesWarning","isCalendarDateLaterThanDueDate","PAY_NOW","PAY_DUE_DATE","PAY_OTHER_DATE","checkCalendarDate","payNowDate","BANK_ACCOUNT_ID","BANK_DESCRIPTION","BANK_ACCOUNT_NOT_ADDED_SUCCESSFULLY","_bankAccountAddResponse","tempTag","opti","isPayMyBill","addedBankResults","displayAccounts","newBankAccount","selectedBankAccount","showAddNewAccount","saveForFuturePayments","addAccountLabel","bankAccountsDropdown","selectBankAccount","maskedAccNo","bankTransit","addDataToSitecoreCache","addToSitecoreCache","saveBankDetails","newAccountAdded","disableSaveBankerror","aci429","aci278","aci734","aci739","cachedParamData","tempBankData","loadBankDetails","bpid","noSavedACH","addBankAccounts","savedACH","noSavedBank","mnberror","disableSubmitButton","formActive","showAddAccount","defaultBankAccountDropdown","changeBankAccount","onSelectBankAccount","onSelectAddBankAccount","ReviewPay","_otherDateValue","NOT_SUCCESSFUL_PAYMENT","invalidError","inputAmountvalue","contributeOptions","contributeOptionsArray","makeContributionsPayment","newPaymentAmount","isPayNow","tempTotalAmount","otherPaymentDate","payStep","programsContributions","successPayment","viewRoutes","PAYMENT_DATE","PAYMENT_AMOUNT","PAYMENT_METHOD","SUBMIT_BUTTON_MODAL","SUCCESS_PAY","paramDataTemp","donationTotal","showContribution","showValidation","showDonationValidation","sucessStatus","countButtonClick","displayAmount","accountAddress","kubraerror","payBillPageError","paymybillpage","singleAccNegative","multiAccZeroAmount","disableSubmit","addProgramContribution","secValFromCDP","tempContributeOptions","tempCheckbox","tempCheckDonationValue","schedulePayment","jurisCode","processedResult","cpiMessageDisplay","metaData","cpiPostMessage","Error","makeContribution","tempContriArray","o1","newAmount","getJurisdictions","accJurisdiction","businessArea","retrieveDataFromSitecoreCache","retrieveFromSitecoreCache","myAccount","savedOtherAmt","checkSavedAmnt","saveAmount","getFullDue","returnToStep","backToBills","checkContribution","formIndex","paymentAmountModal","enableInputAmountBox","paymentDateModal","paymentMethodModal","submitPayment","amountPaid","checkSubmitPayment","checkAmountChange","submitAmount","isOnBlur","tempcontriarray","itemValue","elementValue","notifHeaders","notif_error","notifMessage","primaryCtaLink","primaryCtaLabel","secondaryCtaLabel","secondaryCtaLink","EN","BANK_ACCOUNT","STANDARD","WEB","NONE","cacheId","payNowstatus","ACIvalidationErr","bankError","kubraDuplicateErrorPayBill","errorVal","SubmitPayment","makePayment","paymentSubmit","submitPaymentButton","savePaymentButton","bpBannerController","displayBPBanner","ctaLink","messageType","informationalMsg","informational","successMsg","msgType","caBannerController","displayCABanner","acountInfoRestSelected","FPDashboardController","appService","indexedDbService","acceptedOrdersWebWorkerService","invoiceOrdersWebWorkerService","getCEPAddendumService","getCEPCompanyDetailsService","getCEPUsersService","_addendum","_roleContractor","errorPage","_roleTechnician","_user","_users","initDataLoad","getCEPAddendum","validateFullAddendum","addendum","parseFullAddendum","getCEPCompanyDetails","companyDetails","setFlag","toggleFlags","getCEPUsers","setUserName","toggleFlag","isContractor","currentUserRole","CONTRACTOR","setUserRole","UNAUTHORIZED","userNotAuthorized","companyDetailsLoaded","parseAddendumIndexedDb","_dataObj","getDataLoad","validateDataLoad","setDataLoad","addendumLoaded","getAcceptedOrders","acceptedOrders","getCEPAcceptedOrdersUrl","callWebWorker","acceptedOrdersLoaded","getInvoiceOrders","invoiceOrders","getCEPInvoiceOrdersUrl","invoiceOrdersLoaded","clearIndexedDb","serviceHost","sessionCdpUserId","showOrdersRequest","workOrderHeader","getCdpUserId","ensureDb","clear","clearAcceptedOrders","clearInvoiceOrders","clearCompanyOverview","clearUsers","clearCancelledReasonTypes","clearDeclinedReasonTypes","clearStatusTypes","clearSRResolutionTypes","clearSRRepairTypes","clearSRStatusTypes","clearWOResolutionTypes","clearWOStatusTypes","getApigeeAccessInfo","ServiceHost","getCdpId","FPCompanyInvoicesController","invoiceService","invoiceOrdersPollingWebWorkerService","screenSize","_filterFields","_ordersUrl","ORDERS","_refreshDataButtonLabel","btnLabels","REFRESH_DATA","loadInvoiceOrders","originalServiceOrders","transformServiceOrders","companyInvoices","statusBarSelector","statusTrackerInvoices","statusSelector","applyGrouping","showRefreshBanner","invoicesReady","sortColumn","col","columnSelected","buttons","refreshData","tableCols","invoices","invoiceTotal","orderCount","statusBarValue","isLastRange","filtersApplied","workingSetServiceOrders","serviceOrdersCollection","DataCollection","fieldFilterKeys","_serviceOrdersCollect","applyFilter","gotoDetails","selectedFilters","selectedAssignedTechnicianFilter","selectedContactForAppointment","selectedCustomersFilter","selectedInvoiceNumbersFilter","selectedInvoiceStatusFilter","selectedJurisdictionFilter","selectedPostalCodesFilter","selectedProgramsFilter","selectedRushOrderFilter","selectedStatusesFilter","selectedSLAFilter","selectedTypesFilter","takeStatus","exportPdf","refreshInvoiceOrders","FPOrderDetailsController","FPPdfFactory","serviceOrderPollingWebWorkerService","getCEPServiceOrderService","_serviceOrderId","_kwCode","_serviceOrders","initialize","actualStatusId","lastStatusFromStatuses","endTrackerFiller","currentStatusIndexId","currentOrderStatus","getStatusObject","statusTrackerOrderDetails","setTracker","workOrderId","workOrderStatuses","workOrderStatus","orderDetailsStatus","statusTracker","startTrackerFiller","setWorkOrderFooterLabels","getCEPServiceOrder","notAnInvoiceSession","orders","currentServiceOrder","configureServiceOrder","stateRoutes","customerLogistics","startPollingOrderDetails","appLoaded","rescheduledStartDateDukeCalendar","_setSelectedOrder","_setSelectedOrders","workOrderFooterActions","btn3","EXPORT_PDF","SENT_TO_CONTRACTOR","btn1","DECLINE","modalTarget","declineModal","visible","btn2","ACCEPT","acceptWorkOrderModal","SAVE_CHANGES","saveChangesModal","disableSaveBtn","SCHEDULE","scheduleWorkOrderModal","DISPATCH","dispatchModal","COMPLETE","workCompleteModal","REVIEW","reviewModal","readyForInvoiceModal","INVOICE_READY_FOR_REVIEW","APPROVED_FOR_INVOICING","INVOICE_SUBMITTING_FOR_PAYMENT","INVOICE_APPROVED","APPROVE","bundleWorkOrderModal","getCEPServiceOrderUrl","CUSTOM_ROLE_HEADER","isInvoiceSession","showModalAssignWorkOrder","showModalDispatch","showModalWorkComplete","showModalReview","showModalReadyForInvoice","showModalBundleWorkOrder","statusSentToContractor","statusAccepted","statusScheduled","statusDispatched","statusCompleted","statusReviewed","statusReadyForInvoice","statusInvoiceApproved","btn1ClickAction","btn2ClickAction","btn3ClickAction","_downloadServiceOrder","refreshAcceptedOrders","orderid","_deleteSelectedOrder","FPTechnicalPricingServiceRequest","serviceOrderBalance","formatCurrency","programEntitlementBalance","descriptionOfWorkQtyPartsNonCovered","regularLaborHours","laborCostNotCovered","entitlementLaborHours","partsCostNotCovered","formLoaded","coveredRepairsDescription","groundingRepairsNeededOptions","yesNoOptions","noncoveredRepairsDescription","singlePointGroundingOptions","typeEntitlement","ENTITLEMENT","totalLaborCost","totalUncoveredCost","FPTechnicalPricingWorkOrder","FPHeaderController","roleContractor","homeUrl","DASHBOARD","invoiceOrdersUrl","INVOICE_ORDERS","ordersUrl","checkAllOrders","clearSession","goHome","FPOrdersController","acceptedOrdersPollingWebWorkerService","csvServiceOrders","serviceOrderService","_assignButtonLabel","ASSIGN_BUTTON","ASSIGNED_TECHNICIAN","_customer","CUSTOMER","_defaultSortOption","sortByOptions","_dispatchButtonLabel","DISPATCH_BUTTON","postalCode","invoiceNumber","invoiceStatus","rushOrder","isCompleteWorkOrder","isContactWorkOrder","isInvoiceWorkOrder","isNewWorkOrder","isScheduleWorkOrder","isCompleteServiceRequestOrder","isContactServiceRequestOrder","isInvoiceServiceRequestOrder","isNewServiceRequestOrder","isScheduleServiceRequestOrder","contactForAppointment","_invoiceButtonLabel","INVOICE_BUTTON","_invoiceField","fieldNames","CONTRACTOR_INVOICE_NUMBER","_invoiceStatusFilters","_noAcceptedOrders","NO_ACCEPTED_ORDERS","_program","PROGRAM","_resetFiltersButtonLabel","RESET_FILTERS","_statusFilters","_statusAccepted","_statusScheduled","_statusReviewed","_searchableFields","assignedTechnicianFilter","customerNameFilter","invoiceNumberFilter","statusFilter","typeFilter","programFilter","workOrderIdFilter","_serviceAddress","SERVICE_ADDRESS","SO_STATUS","_type","SO_TYPE","applyFilters","_serviceOrdersCollect23","executeFlag","filterList","_serviceOrdersCollect2","intersectionObjects","item1","item2","_serviceOrdersCollect3","_serviceOrdersCollect4","_serviceOrdersCollect5","_serviceOrdersCollect6","_serviceOrdersCollect7","_serviceOrdersCollect8","_serviceOrdersCollect9","_serviceOrdersCollect10","_serviceOrdersCollect11","_serviceOrdersCollect12","_serviceOrdersCollect13","_serviceOrdersCollect14","_serviceOrdersCollect15","_serviceOrdersCollect16","_serviceOrdersCollect17","createMappingsForCollection","_serviceOrdersCollect18","_serviceOrdersCollect19","_serviceOrdersCollect20","_serviceOrdersCollect21","_serviceOrdersCollect22","initializeOrders","searchInput","applySorting","fieldToSortBy","sortFields","calculateButtonsCounter","itemCountable","canBeInvoiced","canBeDispatched","dispatch","canBeAssigned","collection","createMapping","slaOptionsFilter","WORK_ORDER","isNewOrder","isContactOrder","isScheduleOrder","isInvoiceOrder","isCompleteOrder","removeSelectedFilter","selectedFilterList","selectedFilter","idx","setFilters","uniqCustomers","removeFilters","resetcheck","chain","compact","customersFilterList","uniqPostalCodes","customers","postalCodesFilterList","programsFilterList","postalCodes","statusFilterList","uniqBy","typesFilterList","statuses","invoiceNumbersFilterList","types","uniqAssignedTechnicians","invoiceNumbers","assignedTechniciansFilterList","invoiceStatusFilterList","assignedTechnicians","rushOrderFilterList","invoiceStatuses","slaFilterList","rushOrders","boolOptions","uniqJurisdictions","slaOptions","jurisdictionFilterList","contactForAppointmentFilterList","contactForAppointments","selectAllModel","statusObj","showBundleOrdersOption","selectedSortField","noWorkOrders","searchFilterKeys","serviceOrderFounded","getAllOrders","resetOrders","ACCEPTED_ORDERS","loadAcceptedOrders","redrawLeftNav","resetFilters","filteredCustomers","filteredInvoiceNumbers","filteredPostalCodes","filteredPrograms","filteredStatus","filteredTypes","noAcceptedOrdersVerbiage","noWorkingSetWorkOrders","ordersPerPage","refreshFilters","refreshAcceptedOrdersComplete","refreshInvoiceOrdersComplete","showAssignOption","showMoreFilters","showRefreshDataAlert","assignOrders","triggerSelectedServiceOrdersUpdate","assignWorkOrderModal","addSelectedAssignedTechnician","addSelectedContactForAppointment","addSelectedCustomer","addSelectedInvoiceStatus","addSelectedInvoiceNumber","addSelectedJurisdiction","addSelectedPostalCode","addSelectedProgram","addSelectedRushOrder","addSelectedSla","addSelectedStatus","addSelectedType","bundleWorkOrders","changeSort","dispatchOrders","multiDispatchModal","displayFilter","showFilter","fadeOut","fadeIn","exportButton","exportType","ACCEPTED_INVOICE_ORDERS","orderDetails","_serviceOrder","removeSelectedAssignedTechnician","removeSelectedContactForAppointment","removeSelectedCustomer","removeSelectedInvoiceStatus","removeSelectedInvoiceNumber","removeSelectedJurisdiction","removeSelectedPostalCode","removeSelectedProgram","removeSelectedRushOrder","removeSelectedSla","removeSelectedStatus","removeSelectedType","checkboxList","selectAll","currentPageWorkingSetServiceOrders","endIndex","toggleFilters","correspondenceReviewAndEnrolleController","correspondenceSelectAccountController","selectEnroll","changueSelect","changeAll","FPCompanyAlertsController","serviceRequestAlertsLoaded","workOrderAlertsLoaded","FPAnalyticsController","workOrderAnalyticsLoaded","serviceRequestAnalyticsLoaded","FPCompanyDetailsController","formattedAddress","billingAddress","line1","line2","town","region","isocode","fieldCoordinator","contactNumber","companyDetailsReady","triggerCompanyDetailsReady","numberOfAdmins","numberOfTechnicians","usersReady","allUsers","FPCompanyInvoicesWidgetController","companyInvoicesReady","getOrderCount","FPAllUsersController","refreshCEPUsersService","triggerUsersReady","showInviteUserModal","showUserAdminModal","inviteUser","inviteUserModal","maintainUsers","userAdministrationModal","apigee","refreshUsers","FPCustomerLogisticsController","customerLogisticsForm","alternatePhone","primaryEmailAddress","county","subDivision","directions","contactName","bestTimeToCall","serviceComments","isRushOrder","dukeInvoiceNumber","internalInvoiceNumber","contractorInternalRefNumber","returnTripRequired","rescheduledStartDate","rescheduledStartDateHour","rescheduledEndDateHour","rescheduledEndDate","contactComments","contactForAppointmentComments","conversionToStandardTime","militaryTime","removeSelectedProp","propToDelete","currentPropValue","newList","currentSelectedIndex","props","generalKeys","indexNotFound","FPTechnicalPricingController","typeRemoval","typeInspectionReplacement","FPCompanyAlertsServiceRequestController","alertsService","_acceptedOrders","_woorSRTypeWorkOrder","setSLAFilter","slaFilter","newOrders","contactOrders","scheduleOrders","completeOrders","companyServiceRequestAlertsReady","goToNewOrders","goToContact","goToInvoice","goToSchedule","goToComplete","goToViewAll","calculateContactOrders","calculateScheduleOrders","calculateInvoiceOrders","calculateCompleteOrders","calculateNewOrders","FPCompanyAlertsWorkOrderController","companyWorkOrderAlertsReady","FPAnalyticsServiceRequestController","_invoiceOrders","responsive","analyticsServiceRequestReady","sumBy","iteratee","acc","arrs","FPAnalyticsWorkOrderController","analyticsWorkOrdersReady","FPTechnicalPricingInspectionReplacementProgram","FPTechnicalPricingInstallationProgram","groundingDetails","singlePointGrounding","groundingRepairsNeeded","FPTechnicalPricingRemovalProgram","FPTechnicalPricingResolutionDetails","_kwName","_repairTypeOptions","_resolutionTypeOptions","resolutionTypeList","repairTypeList","regexp_email","FPTechnicalPricingECNProgram","factory","currentAccountClick","getValidDate","createTooltip","net","consumed","generated","billedDates","showDate","weatherData","graphFilter","colors","p","formatDate","startEndDate","billedDays","temperature","dataSeriesOne","AverageTemprature","MeanTemp","dataSeriesThree","tickDate","intervalData","gasBar","electricBar","data1","data2","data2SeriesThree","data1SeriesThree","data1SeriesOne","data2SeriesOne","billingDays","invDate","SrvType","otherCharges","OthCharges","taxes","Taxes","BilledDays","totalKwh","totalKwhMetered","TotKwhqtMetered","totalCcf","dailyKwhCost","dailyCcfCost","averageDailyKwh","AvgDailyKwh","averageDailyCcf","AvgDailyCcf","readType","ReadTyp","tempWeatherData","BillingDateStr","C","channels_type","preferences_actions","PREF_DELETE","PREF_CREATE","PREF_UPDATE","PT00H00M00S","rate_review_type","A","prefChannelFilterConfig","cardToggleMapping","autoEnrolled","unEnrollable","directive","restrict","accountImg","searchImg","placeholder","accountText","noResultMessage","arrowText","actionUrl","require","transclude","templateUrl","attrs","ngModel","getService","SelectedAccount","ArrowText","dashboardUrl","DashboardUrl","TrackingInfo","collapseContent","slideDown","tel","regexObj","parts","onlyChecked","checkboxListSelected","$render","checkboxBooleanValue","temporalCheckbox","checkboxLength","checkboxArray","priority","myModel","radioId","radioGroupName","innerValue","onSelected","disabledOn","radioInput","radioChange","temporalRadioValue","contractAccountBannersPriorityMessageCodes","FPAssetService","FPGenericHelperService","FPIndexedDbDataService","deleteCancelledReasonTypes","cancelledReasonTypes","deleteDeclinedReasonTypes","deleteSRRepairTypes","srRepairTypes","deleteSRResolutionTypes","srResolutionTypes","deleteSRStatusList","srStatusList","deleteWOResolutionTypes","woResolutionTypes","deleteWOStatusList","woStatusList","getSRRepairTypes","getSRResolutionTypes","getSRStatusList","getWOResolutionTypes","getWOStatusList","setCancelledReasonTypes","setDeclinedReasonTypes","setSRRepairTypes","setSRResolutionTypes","setSRStatusList","setWOResolutionTypes","setWOStatusList","putCancelledReasonTypes","putDeclinedReasonTypes","generateIds","putSRRepairTypes","putSRResolutionTypes","putSRStatusTypes","putWOResolutionTypes","putWOStatusTypes","putStatusTypes","FPServiceOrderService","FPCurrentUserService","getServiceHost","setServiceHost","apigeeEnvs","tst","deleteServiceHost","getAcceptedOrdersUrl","includeLastModified","ts","apigeeServiceEndpointsUrls","beginParameters","default","appendParameters","now","timestamp","getAddendumUrl","cdpUsers","getApigeeAccessInfoUrl","GetApigeeAccessInfo","getCCAccessTokenUrl","ccoauth","getCompanyDetailsUrl","getDefaultServiceOrderUrl","getDefaultServiceOrdersUrl","getFullServiceOrderUrl","full","getFullServiceOrdersUrl","getInvoiceOrdersUrl","invoiceOrdersStatuses","getOAuthTokenUrl","oauth","getUsersUrl","getUserAccessUrl","GetUserAccess","logExceptionUrl","LogException","patchServiceOrder","deleteDataLoad","dataLoad","dataLoaded","FPSitecoreServices","FPDataModelsDTOService","formatAndSaveAsCSV","serviceOrdersFormatted","workOrders","serviceRequests","Number ID","Date Assigned","Last Modified Date","lastModifiedDate","Program","Service Request Type","Service Address","Meter","printValueFromArrayPositionKey","Subdivision","Directions to Service Address","Contact Name","Contact For Appointment","Contact For Appointment Comments","Best Time To Call","Primary Phone","Alternate Phone","Email Address","Service Comments","Rush Job?","Technician","Multiple Technician Required?","Other Technician","Contractor Internal Invoice Number","Contractor Invoice Number","Duke Invoice Number","Schedule Start Time","Schedule End Time","Notify Customer When In Route","Return Trip Required?","Reschedule Start Time","Reschedule End Time","Number of Contact Attempt","First Attempt Date","First Attempt Hour","Preferred Customer Email Address","Service Order Balance","Entitlement Balance","Covered Description of Work, Quantity, Parts","Regular Labor Hours","Regular Labor Cost","Entitlement Labor Hours","Entitlement Labor Cost","Total Labor Cost","Parts Cost","Trip Fee","Total Cost","totalLaborPartsCoveredCost","Not Covered Description of Work, Quantity, Parts","Labor Not Covered","Parts Not Covered","Total Not Covered","totalDueFromCustomer","Resolution Type","printValueFromObjectKey","Repair Type","Resolution Date","Customer Received Survey?","Work Order Type","Equipment Name","Equipment Serial Number","Device Operational/Re-add to Inventory","Replacement Required?","Replacement Equipment Type","Replacement Equipment Serial Number","Single Point Grounding","Repairs Needed","Description of Work, Quantity, Parts","Labor","Material","filteredServiceOrders","acceptedOrInvoiceOrders","saveAsCSV","dataFormatted","csvFile","Papa","unparse","FullAddendum","allContractorAdmins","allContractorTechnicians","cancelledReasonWsDTO","cdpUserWsDTO","codeNamePair","customerContactHistoryDTO","customerPreferredSurveyOption","customerContactPreferencesWsDTO","bestTimeToCallStart","bestTimeToCallEnd","customerWsDTO","middleName","declinedReasonWsDTO","declinedReasonType","deviceOptionsWsDTO","equipmentDetailsWsDTO","equipmentOptionsWsDTO","flatServiceOrder","invoiceReceivedDate","programAnnualCoverageLimit","soDbStatus","groundingDetailsWsDTO","nameValuePair","orderCostTimeDetailsWsDTO","priceWsDTO","resolutionDetailsWsDTO","serviceAddressWsDTO","countryIso","serviceRequestRepairType","serviceRequestResolutionType","workOrderResolutionType","woType","FPDataModelsConfigService","isInValidString","deserializeServiceOrder","jsonObj","mergeFromStorage","cancelledReasonType","deviceOptions","dataSet","soToggleFlag","newServiceOrder","definedObj","defaultValueToReturn","getTimezoneOffset","addZeroDate","hour","splittedDate","splittedTime","minutes","dateConversion","HH","MM","getMinutes","intersectionObjects2","areEqualFunction","aElement","bElement","arrayList","property","stringArray","arraySource","valueKey","textKey","dropdownList","valueAsString","newItem","size","generate","max","pow","random","filteredObj","lastArgument","arrayCount","propToSearch","propValueToSearch","_pager","totalRows","pageSizeByRows","startPage","endPage","_totalRows","_currentPage","_pageSizeByRows","setPager","getPager","_db","Dexie","stores","companyOverview","srStatusTypes","woStatusTypes","statusTypes","cleanAcceptedOrders","where","filterCol","equals","cleanInvoiceOrders","bulkDelete","deleteDb","deleteInvoiceOrder","deleteInvoiceOrders","filterInvoiceOrders","anyOfIgnoreCase","toArray","getCompanyOverview","productFilter","getStatusByStatusCode","getSRStatusByStatusCode","getUsers","woTypeFilter","getWOStatusByStatusCode","getStatusList","put","bulkPut","putCompanyOverview","putUsers","getDataAsync","fault","detail","faultstring","statusText","unknownError","groupSets","groupInvoicesInformation","contractorInvoiceNo","totalOrderCostValue","$modal","modalsObj","CANCEL_WORK_ORDER","windowTemplateUrl","windowClass","controllerAs","ASSIGN_WORK_ORDER","SCHEDULE_WORK_ORDER","WORK_COMPLETE","BUNDLE_WORK_ORDER","ACCEPT_WORK_ORDER","MULTI_DISPATCH","INVITE_USER","USER_ADMINISTRATION","totalItems","_getPager","storageKey","_setPager","_storageKey","_totalItems","_pageSize","FPPdfService","_openServiceOrder","_printServiceOrder","FPPdfServiceRequest","FPPdfWorkOrderInstallation","FPPdfWorkOrderRemoval","FPPdfWorkOrderInspectionReplacement","getPdfContent","_getPdfContentServiceRequest","_getPdfContentWorkOrderInstallation","_getPdfContentWorkOrderRemoval","_getPdfContentWorkOrderInspectionReplacement","pdfMake","createPdf","isAfter","FPTokenFactory","_deleteAppViewsLoad","appViewsLoad","_getHeader","token","getToken","Authorization","selectedWorkOrder","selectedOrder","_deleteSelectedOrders","selectedWorkOrders","_getAppViewsLoad","_getAddendum","_getServiceOrders","_setAppViewsLoad","viewsObj","_setServiceOrders","getAddendum","getCompanyDetails","getDefaultCompanyInvoicesWidget","getServiceOrder","getServiceOrders","getAllUsers","patchServiceOrders","patchDataAsync","postServiceOrders","putServiceOrders","putDataAsync","workingServiceOrder","triggerServiceOrderUpdate","validateAppLoad","FPApigeeApiConfigService","FPApiConfigService","clientUsername","clientSecret","getAccessTokenUrl","ajax","async","xhr","logException","getCCToken","grant_type","beforeSend","setRequestHeader","access_token","getOAuthToken","deleteUsers","setUsers","postUser","tokenFactory","Source","targetEndpointUrl","requestPayload","datamodel","RequestedBy","RequestedOn","RequestedTime","IPMessage","InstallmentPlanType","getinstallmentpaymentplansextensionsandeligibilityservice","cachedServiceOrders","putOrders","apiUrl","workerUrl","webworkersUrl","pollingWebworkerMedium","getHeader","worker","Worker","onmessage","triggerRefreshAcceptedOrders","onerror","postMessage","pollingWebworkerLong","triggerRefreshInvoiceOrders","pollingWebworker","webworker","setAddAccount","getAddAccount","getAddAccountMultiple","getAddAccountSingle","Due Date","Previous Amount Due","Payment Received","Current Charges","Total Amount Due","Total Electric Usage (kWh)","Avg. Daily Electric Cost (/Day)","Total Gas Usage (CCF)","Avg. Daily Gas Cost (/Day)","Confirm Number","Payment Method","Routing Number","Payment Status","BP Name","Bill Days","Bill Date","Total Amount Paid","Energy Neighbor Fund","balanceReturn","Daily Electic Usage","Daily Cost","getServicePlans","getAccount","getMonthsAmounts","getDashboarDdueDataUrl","getDashboarBPPUrl","getDefaultProgramsUrl","getServiceCorrespon","averageEnergyByDayOfWeek","halfHourlyEnergyUse","grayBar","temperatureBubble","WEEKS","currency","gray","select","onmouseover","onmouseout","rect","rx","ry","formattedData","averageArray","Total","Average","","Consumed","Generated","startDateFormatted","concatinatedString","getInstallmentPlansData","liveApi","getInstallmentPlansBillDate","postInstallmentPlan","getInstallmentPlansToManage","getCommOpt","readAndDerivePreferencesUrl","updatePreferences","paymentPreferences","updatePreferencesService","dropObj","dropObjEntry","textEnabled","createDrop1","dropObj1","dropObjEntry1","commTypeText","notifDrop","commType","channelComm","availableChannels","availableChannelsTxt","channelItems","channelItemsText","dropDown","commText","communicaiton","communications","findComm","toLocaleLowerCase","disableUnEnroll","updateDisableToggle","phoneItems","defaultcommunicationChannelTextMobile","defaultcommunicationChannelText","channelModel","defaultChannelText","findError","emailText","phoneText","notifFind","errorMesage","gatModal","gatError","buttonAction","_result$ReturnCodes$9","_result$ReturnCodes$10","_result$ReturnCodes$11","_result$ReturnCodes$12","_result$ReturnCodes$13","_result$ReturnCodes$14","updateCreatePreferences","notificationAction","_result$ReturnCodes$15","_result$ReturnCodes$16","_result$ReturnCodes$17","_result$ReturnCodes$18","_result$ReturnCodes$19","_result$ReturnCodes$20","create","updated","_result$ReturnCodes$21","_result$ReturnCodes$22","_result$ReturnCodes$23","_result$ReturnCodes$24","_result$ReturnCodes$25","_result$ReturnCodes$26","notifModel","channelId","notifCurrent","updatePrefId","newPrefIds","NotificationActionPaperless","notifNewData","notifCurrentData","updateBillingPDF","updateRemainDays","delNotif","curNotif","inNewPref","optout","isUpdated","currentElement","actionUElement","actionCElement","dataSecond","dataFirst","dataPaperless","updateResult","chanel","notifElement","communicationTextData","optoutModel","addPrefId","currStatus","updateStatus","modalData","phoneNumberRaw","_result$ReturnCodes$3","_result$ReturnCodes$4","UpdatePhoneNumberUrl","reqTime","dataForEmail","_result$ReturnCodes$5","_result$ReturnCodes$6","_result$ReturnCodes$7","_result$ReturnCodes$8","MaintainUserProfile","_result$3","_result$4","voiceChannelStr","communicationValue","newComm","SequenceNumber","TypeOfContact","toLocaleUpperCase","voice","groupVal","enrolledComms","allEmails","allPhones","emailPresent","phonePresent","mailLength","emailLength","phoneLength","textPresent","showSelections","showPhSelections","dataReturn","modalUpdate","newPref","pref","chanels","mediumChannel","setCardCommunication","optionsCopy","filteredOptions","objParams","tempA","tempB","Street Address","Zip Code","Telephone","Billing Name","First Name","Last Name","Street Address1","Street Address2","Account Status"],"mappings":"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CA,SACA,UACA,eACA,qBACA,uBACA,2BACA,wBACA,sBACA,gBACA,sBACA,2BACA,aACA,uBACA,yBACA,4CACA,+CACA,yBCnBFlO,IAAI9I,WAAW,4BAA6By/B,yBAAAA,EAC5CA,0BAA0BzoB,QAAU,CAClC,OACA,SACA,eACA,wBACA,oBACA,4BACA,aACA,iBACA,gCACA,uBACA,yBACA,oBCbFlO,IAAI9I,WACF,2CACAokC,wCAAAA,EAEFA,yCAAyCptB,QAAU,CACjD,OACA,SACA,wBACA,eACA,oBACA,4BACA,aACA,iBACA,uBACA,gCACA,yBACA,oBChBFlO,IAAI9I,WAAW,6BAA8BqlC,0BAAAA,EAE7CA,2BAA2BruB,QAAU,CACnC,OACA,SACA,YACA,wBACA,eACA,2BACA,gCACA,mDACA,mBACA,sBACA,UACA,4BACA,qBACA,yBACA,cCjBFlO,IAAI9I,WAAW,+BAAgCysC,4BAAAA,EAE/CA,6BAA6Bz1B,QAAU,CACrC,SACA,SACA,aACA,wBACA,eACA,mBACA,2BACA,yBACA,iCCXFlO,IAAI9I,WAAW,4BAA6BotC,yBAAAA,EAE5CA,0BAA0Bp2B,QAAU,CAClC,OACA,wBACA,eACA,8BACA,iCCPFlO,IAAI9I,WAAW,0BAA2B0tC,uBAAAA,EAE1CA,wBAAwB12B,QAAU,CAChC,UCHFlO,IAAI9I,WAAW,WAAYyuC,QAAAA,EAE3BA,SAASz3B,QAAU,CACjB,OACA,SACA,SACA,aACA,YACA,eACA,wBACA,4BACA,2BACA,gCACA,iBCbFlO,IAAI9I,WAAW,eAAgB2xC,YAAAA,EAE/BA,aAAa36B,QAAU,CACrB,SACA,aCJFlO,IAAI9I,WAAW,wBAAyB6xC,qBAAAA,EACxCA,sBAAsB76B,QAAU,CAC9B,SACA,UACA,WACA,QACA,UACA,eACA,mBACA,0BCTFlO,IAAI9I,WAAW,UAAWkzC,OAAAA,EAE1BA,QAAQl8B,QAAU,CAChB,YACA,aACA,OACA,SACA,SACA,eACA,gBACA,4CACA,wBACA,gCACA,2BACA,eACA,+CACA,UACA,+BACA,oBClBFlO,IAAI9I,WAAW,sBAAuBy6C,mBAAAA,EACtCA,oBAAoBzjC,QAAU,CAC5B,iBACA,eCHFlO,IAAI9I,WACF,sCACA26C,mCAAAA,EAEFA,oCAAoC3jC,QAAU,CAC5C,eACA,gBACA,+CACA,4CACA,6BACA,oCACA,iCACA,wBACA,iBACA,wBACA,gCACA,aACA,SACA,gBACA,UACA,yBACA,YACA,wBACA,2BACA,wBCxBFlO,IAAI9I,WAAW,0BAA2BoiD,uBAAAA,EAC1CA,wBAAwBprC,QAAU,CAChC,OACA,SACA,aACA,eACA,uCACA,wBACA,uBACA,gBACA,UACA,2CACA,yBACA,gCACA,uCACA,2BACA,uBChBFlO,IAAI9I,WACF,2CACA0oD,wCAAAA,EAEFA,yCAAyC1xC,QAAU,CACjD,SACA,eACA,wBACA,mBACA,UACA,0BCVFlO,IAAI9I,WACF,sCACA8oD,mCAAAA,EAEFA,oCAAoC9xC,QAAU,CAC5C,OACA,SACA,eACA,iCACA,uBACA,wBACA,uBACA,gBACA,6BACA,+CACA,yBACA,WACA,UACA,gCACA,wBACA,oBCpBFlO,IAAI9I,WACF,yCACAqvD,sCAAAA,EAEFA,uCAAuCr4C,QAAU,CAC/C,OACA,SACA,aACA,eACA,2CACA,wBACA,uCACA,2BACA,uBCbFlO,IAAI9I,WACF,sCACAwvD,mCAAAA,EAEFA,oCAAoCx4C,QAAU,CAC5C,OACA,SACA,aACA,eACA,2CACA,wBACA,uCACA,2BACA,uBCbFlO,IAAI9I,WACF,kCACA0vD,+BAAAA,EAEFA,gCAAgC14C,QAAU,CACxC,OACA,SACA,aACA,eACA,gBACA,mBACA,uBACA,2CACA,wBACA,UACA,yBACA,gCACA,oBCjBFlO,IAAI9I,WACF,6CACAkwD,0CAAAA,EAEFA,2CAA2Cl5C,QAAU,CACnD,SACA,eACA,mBACA,wBACA,yBACA,WCVFlO,IAAI9I,WAAW,+BAAgCmwD,4BAAAA,EAC/CA,6BAA6Bn5C,QAAU,CACrC,SACA,eACA,SACA,iBCLFlO,IAAI9I,WACF,qCACAwwD,kCAAAA,EAEFA,mCAAmCx5C,QAAU,CAC3C,SACA,eACA,SACA,iBCRFlO,IAAI9I,WAAW,kBAAmB0wD,eAAAA,EAClCA,gBAAgB15C,QAAU,CACxB,OACA,SACA,YACA,eACA,gBACA,wBACA,mCACA,uCACA,qBACA,sBACA,yBACA,aACA,UACA,yBCfFlO,IAAI9I,WAAW,oBAAqBq6D,iBAAAA,EACpCA,kBAAkBrjD,QAAU,CAC1B,SACA,aACA,eACA,yBACA,oBACA,iBACA,wBACA,gBACA,wBACA,2BACA,0BCZFlO,IAAI9I,WAAW,yBAA0Bs+D,sBAAAA,EAEzCA,uBAAuBtnD,QAAU,CAC/B,OACA,SACA,eACA,2BACA,wBACA,wBACA,sBCTFlO,IAAI9I,WAAW,uBAAwB2gE,oBAAAA,EAEvCA,qBAAqB3pD,QAAU,CAC7B,SACA,eACA,2BACA,wBACA,wBACA,qBACA,yBCTFlO,IAAI9I,WAAW,wBAAyB8gE,qBAAAA,EACxCA,sBAAsB9pD,QAAU,CAC9B,OACA,SACA,eACA,2BACA,eACA,wBACA,+CACA,aACA,kBACA,kBACA,wBACA,uBACA,yBACA,WACA,6CChBFlO,IAAI9I,WAAW,0BAA2BykE,uBAAAA,EAC1CA,wBAAwBztD,QAAU,CAChC,SACA,eACA,wBACA,2BACA,8BACA,gBACA,UACA,OACA,qCACA,4CACA,wBACA,yBACA,aACA,KACA,cChBFlO,IAAI9I,WAAW,aAAc2nE,UAAAA,EAC7BA,WAAW3wD,QAAU,CACnB,eACA,SACA,2BACA,wBACA,gBACA,yBCPFlO,IAAI9I,WAAW,yBAA0B+nE,sBAAAA,EACzCA,uBAAuB/wD,QAAU,CAC/B,SACA,aACA,6BACA,eACA,wBACA,yBCPFlO,IAAI9I,WAAW,sBAAuBupE,mBAAAA,EACtCA,oBAAoBvyD,QAAU,CAC5B,OACA,SACA,+CACA,4CACA,eACA,gBACA,wBACA,mBACA,aACA,wBACA,wBACA,2BACA,oCACA,kBCfFlO,IAAI9I,WAAW,sBAAuB2rE,mBAAAA,EACtCA,oBAAoB30D,QAAU,CAC5B,SACA,eACA,sBACA,eACA,wBACA,4CACA,wBACA,2BACA,gBACA,UACA,OACA,aACA,wBACA,oBACA,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B79E,QAAU,CAAC,eAAgB,SAAU,SAAU,aAAa,wBAAwB,eAAe,oBCFpHlO,IAAI9I,WAAW,gCAAiC81F,6BAAAA,EAEhDA,8BAA8B9+E,QAAU,CACtC,OACA,aACA,SACA,eACA,wBACA,wBACA,2CACA,eACA,mBACA,uBACA,UACA,sCACA,SACA,gCACA,uCACA,sBACA,eACA,YCnBFlO,IAAI9I,WAAW,0BAA2By6F,uBAAAA,EAG1CA,wBAAwBzjF,QAAU,CAChC,SACA,aACA,SACA,eACA,wBACA,wBACA,mBACA,kBCXFlO,IAAI9I,WAAW,mBAAoB+6F,gBAAAA,EAGnCA,iBAAiB/jF,QAAU,CACzB,SACA,SACA,eACA,wBACA,wBACA,mBACA,aACA,WCZFlO,IAAI9I,WACF,mCACAk7F,gCAAAA,EAGFA,iCAAiClkF,QAAU,CACzC,OACA,aACA,SACA,eACA,2BACA,wBACA,uBACA,wBACA,2BACA,mBACA,SACA,UACA,eACA,2CACA,uCACA,yBACA,sBACA,gBCpBFlO,IAAI9I,WAAW,iBAAkBu9F,cAAAA,EAEjCA,eAAevmF,QAAU,CACvB,OACA,SACA,SACA,eACA,wBACA,wBACA,2CACA,2BACA,aACA,gDCdFlO,IAAI9I,WAAW,6BAA8Bg+F,0BAAAA,EAE7CA,2BAA2BhnF,QAAU,CACnC,mBACA,+BACA,wBACA,eACA,yBACA,SACA,WACA,aACA,WCZFlO,IAAI9I,WACF,uBACA++F,oBAAAA,EAGFA,qBAAqB/nF,QAAU,CAC7B,SACA,OACA,wBACA,gBACA,mBACA,uBACA,qBACA,sBACA,eACA,yBCfFlO,IAAI9I,WAAW,uBAAwBqgG,oBAAAA,EAEvCA,qBAAqBrpF,QAAU,CAC7B,aACA,SACA,eACA,uBACA,wBACA,2BACA,sCACA,iBACA,mBACA,YACA,WACA,wBACA,wBACA,WChBFlO,IAAI9I,WAAW,0BAA2ByiG,uBAAAA,EAC1CA,wBAAwBzrF,QAAU,CAChC,OACA,eACA,wBACA,iBACA,sCACA,aACA,yBACA,kBACA,oBACA,gCCXFlO,IAAI9I,WAAW,oBAAqBkjG,iBAAAA,EACpCA,kBAAkBlsF,QAAU,CAC1B,OACA,eACA,wBACA,iBACA,sCACA,aACA,yBACA,kBACA,oBACA,gCCXFlO,IAAI9I,WAAW,8BAA+BwjG,2BAAAA,EAE9CA,4BAA4BxsF,QAAU,CACpC,YACA,SACA,aACA,eACA,gCACA,eACA,wBACA,2BACA,wBACA,gCACA,2BACA,wBACA,uBACA,0BCZFlO,IAAI9I,WAAW,oBAAqBwmG,iBAAAA,EAEpCA,kBAAkBxvF,QAAU,CAC1B,SACA,SACA,eACA,wBACA,wBACA,cCZFlO,IAAI9I,WAAW,+BAAgC8mG,4BAAAA,EAE/CA,6BAA6B9vF,QAAU,CACrC,yBACA,wBACA,mBACA,eACA,aACA,WCLFlO,IAAI9I,WAAW,wBAAyB2mG,qBAAAA,EAExCA,sBAAsB3vF,QAAU,CAC9B,OACA,SACA,eACA,wBACA,wBACA,2CACA,wBACA,+CACA,mBACA,yBACA,cCZFlO,IAAI9I,WAAW,gBAAiBq9F,aAAAA,EAEhCA,cAAcrmF,QAAU,CACtB,OACA,SACA,SACA,wBACA,uBACA,wBACA,2BACA,+CACA,eACA,2CACA,aACA,mBACA,eACA,uBACA,gBACA,2CACA,WCvBFlO,IAAI9I,WACF,iCACAwqG,8BAAAA,EAGFA,+BAA+BxzF,QAAU,CACvC,eACA,gBACA,uBACA,gCACA,wBACA,4BACA,SACA,aACA,SACA,UACA,qBACA,yBACA,WACA,uBACA,uBACA,QCrBFlO,IAAI9I,WAAW,+BAAgC4uG,4BAAAA,EAE/CA,6BAA6B53F,QAAU,CACrC,SACA,SACA,aACA,eACA,wBACA,yBACA,gBACA,yBACA,qBACA,wBCZFlO,IAAI9I,WAAW,+BAAgCswG,4BAAAA,EAC/CA,6BAA6Bt5F,QAAU,CACrC,SACA,qBACA,wBACA,gBCLFlO,IAAI9I,WACF,kCACAwwG,+BAAAA,EAEFA,gCAAgCx5F,QAAU,CACxC,aACA,UACA,OACA,YACA,SACA,SACA,UACA,OACA,eACA,gBACA,wBACA,2BACA,eACA,wBACA,mCACA,gCACA,2BACA,yBACA,wBACA,2BACA,gCACA,8BACA,2B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AAAA,EACxCA,sBAAsBv/G,QAAU,CAC9B,OACA,eACA,eACA,wBACA,sCACA,aACA,SACA,WACA,iBACA,yBACA,4BCZFlO,IAAI9I,WAAW,uCAAwC02H,oCAAAA,EACvDA,qCAAqC1/G,QAAU,CAC7C,OACA,eACA,wBACA,eACA,sCACA,oDACA,+BACA,2BACA,aACA,iBACA,yBACA,SACA,YCXFlO,IAAI9I,WAAW,2BAA4Bg3H,wBAAAA,EAC3CA,yBAAyBhgH,QAAU,CACjC,SACA,SACA,UACA,aACA,uBACA,eACA,gBACA,wBACA,sCACA,uBACA,eACA,gCACA,8BACA,yBACA,wBACA,iCACA,2BACA,qCCxBFlO,IAAI9I,WAAW,yBAA0Bg7H,sBAAAA,EACzCA,uBAAuBhkH,QAAU,CAC/B,SACA,wBACA,eACA,0BCLFlO,IAAI9I,WAAW,oBAAqB47H,iBAAAA,EAEpCA,kBAAkB5kH,QAAU,CAC1B,OACA,SACA,SACA,aACA,eACA,wBACA,2BACA,qCACA,yBACA,aCXFlO,IAAI9I,WACF,oBACAo9H,iBAAAA,EAEFA,kBAAkBpmH,QAAU,CAC1B,SACA,SACA,eACA,kBCRFlO,IAAI9I,WAAW,YAAau9H,SAAAA,EAC5BA,UAAUvmH,QAAU,CAClB,SACA,SACA,wBACA,eACA,kBCJFlO,IAAI9I,WAAW,oBAAqB29H,iBAAAA,EAEpCA,kBAAkB3mH,QAAU,CAC1B,OACA,SACA,eACA,+CACA,4CACA,4CACA,aACA,wBACA,mCACA,gBACA,gBACA,yBACA,iCChBFlO,IAAI9I,WAAW,gCAAiCw/H,6BAAAA,EAChDA,8BAA8BxoH,QAAU,CACtC,iBACA,wBACA,eACA,0BCPFlO,IAAI9I,WAAY,uCAAwC2/H,oCAAAA,EACxDA,qCAAqC3oH,QAAU,CAC3C,WACA,SACA,WACA,WCHJlO,IAAI9I,WAAW,kBAAmB4/H,eAAAA,EAElCA,gBAAgB5oH,QAAU,CACxB,SACA,UACA,OACA,YACA,eACA,gBACA,uBACA,kCACA,wBACA,mDACA,gCACA,2BACA,4BACA,2BACA,uBACA,uBACA,yBACA,4BACA,gCACA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I,WACF,mCACA6hL,gCAAAA,ECtLF/4K,IAAI9I,WAAW,eAAgBgiL,YAAAA,EAC/BA,aAAahrK,QAAU,CACrB,OACA,SACA,eACA,yBACA,wBACA,sBACA,oBACA,iBACA,wBACA,eACA,0BCbFlO,IAAI9I,WAAW,mBAAoBijL,gBAAAA,EAEnCA,iBAAiBjsK,QAAU,CAAC,SAAU,kBCFtClO,IAAI9I,WACF,gBACAojL,aAAAA,EAEFA,cAAcpsK,QAAU,CACtB,SACA,iBACA,wBCPFlO,IAAI9I,WAAW,2BAA4BwjL,wBAAAA,EAC3CA,yBAAyBxsK,QAAU,CACjC,OACA,gBACA,SACA,SACA,wBACA,eACA,yBACA,uBACA,oCACA,6BACA,iBACA,6BC+BFgwK,mCAAmChwK,QAAU,CAC3C,aACA,iBACA,SACA,eACA,wBACA,SACA,mBACA,8BACA,iCAGFlO,IAAI9I,WACF,qCACAgnL,kCAAAA,EC3DFl+K,IAAI9I,WAAW,qBAAsBinL,kBAAAA,ECErCn+K,IAAI9I,WAAW,cAAeknL,WAAAA,EAC9BA,YAAYlwK,QAAU,CACpB,OACA,wBACA,eACA,gBACA,6BACA,eACA,SACA,aACA,2BACA,yBACA,gBACA,4BCdFlO,IAAI9I,WAAW,sBAAuBipL,mBAAAA,EACtCA,oBAAoBjyK,QAAU,CAC5B,OACA,iBACA,eACA,gBACA,6BACA,wBACA,aACA,2BACA,uBACA,yBACA,oBACA,gCCbFlO,IAAI9I,WAAW,mBAAoBypL,gBAAAA,EACnCA,iBAAiBzyK,QAAU,CACzB,OACA,iBACA,eACA,gBACA,6BACA,wBACA,aACA,yBACA,SACA,oBACA,gCCXFlO,IAAI9I,WAAW,qBAAsB+pL,kBAAAA,EAErCA,mBAAmB/yK,QAAU,CAC3B,OACA,eACA,uBACA,wBACA,2BACA,eACA,aACA,SACA,kCACA,yBACA,+BACA,gBACA,4BChBFlO,IAAI9I,WAAW,sBAAuBsvL,mBAAAA,EACtCA,oBAAoBt4K,QAAU,CAC5B,OACA,iBACA,eACA,uBACA,gBACA,6BACA,wBACA,aACA,2BACA,uBACA,2BACA,kCACA,yBAC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wBACA,eACA,SACA,SACA,OACA,aACA,UACA,uCCVFlO,IAAI9I,WAAW,gBAAiB+mM,aAAAA,EAEhCA,cAAc/vL,QAAU,CACtB,wBACA,eACA,SACA,aACA,UACA,OACA,yBACA,mBACA,kBCXFlO,IAAI9I,WAAW,cAAe8pM,WAAAA,EAE9BA,YAAY9yL,QAAU,CACpB,wBACA,eACA,SACA,aACA,yBACA,mBACA,kBCTFlO,IAAI9I,WAAW,gBAAiBk4G,aAAAA,EAEhCA,cAAclhG,QAAU,CACtB,aACA,SACA,eACA,uBACA,wBACA,2BACA,sCACA,yBACA,+BACA,kCACA,SACA,iBACA,mBACA,YACA,YCjBFlO,IAAI9I,WAAW,YAAa4tM,SAAAA,EAE5BA,UAAU52L,QAAU,CAClB,aACA,SACA,SACA,eACA,gBACA,wCACA,2BACA,kCACA,wBACA,yBACA,+BACA,eACA,UACA,OACA,kCACA,eACA,2BACA,mBACA,WCrBFlO,IAAI9I,WAAW,gBAAiB6zM,aAAAA,EAEhCA,cAAc78L,QAAU,CACtB,wBACA,eACA,SACA,aACA,UACA,OACA,yBACA,mBACA,iBACA,WCZFlO,IAAI9I,WAAW,qBAAsBk0M,kBAAAA,EACrCA,mBAAmBl9L,QAAU,CAC3B,OACA,SACA,eACA,6BACA,yBCNFlO,IAAI9I,WAAW,qBAAsB00M,kBAAAA,EACrCA,mBAAmB19L,QAAU,CAC3B,OACA,SACA,eACA,4CACA,wBACA,cCPFlO,IAAI9I,WAAW,wBAAyB60M,qBAAAA,EACxCA,sBAAsB79L,QAAU,CAC9B,OACA,YACA,eACA,mBACA,yBACA,oBACA,eACA,qBACA,uBACA,gBACA,yBACA,yBACA,wBACA,qBACA,iCACA,gCACA,wBACA,8BACA,sBCpBFlO,IAAI9I,WAAW,8BAA+Bo5M,2BAAAA,EAC9CA,4BAA4BpiM,QAAU,CACpC,OACA,SACA,eACA,mBACA,uBACA,yBACA,yBACA,yBACA,mBACA,wBACA,uCACA,cCbFlO,IAAI9I,WAAW,2BAA4B28M,wBAAAA,EAC3CA,yBAAyB3lM,QAAU,CACjC,OACA,YACA,SACA,S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","file":"components.auth.min.js","sourcesContent":["/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\r\nfunction AccountInfoControllerLightAuth($scope, $window, $rootScope, $element, $compile, $timeout) {\r\n\r\n let vm = this;\r\n $scope.accounts = [];\r\n vm.singleMultipleName = \"\";\r\n vm.accountSelected = false;\r\n \r\n $timeout(function () {\r\n if(vm.singleMultiple > 1){\r\n vm.singleMultipleName = \"Multiple\";\r\n }else if(vm.singleMultiple == 1){\r\n vm.singleMultipleName = \"Single\";\r\n }\r\n\r\n },0);\r\n \r\n\r\n vm.selectAccount = function (account){\r\n vm.selectedAccount = JSON.stringify(account);\r\n vm.accountSelected = true;\r\n vm.accountNumberSelected = account.AccountNumber;\r\n }\r\n\r\n let $this = $scope,\r\n $el = $element,\r\n $moreInfoPane = null,\r\n showMoreBtn = angular.element('button.more-info-label');\r\n vm.showAllMsg = \"\";\r\n vm.showLessMsg = \"\";\r\n vm.currentShowMsg = \"\";\r\n $moreInfoPane = angular.element($el.find('.more-info-more'));\r\n\r\n\r\n vm.setShowLabels = function (more, less) {\r\n vm.showAllMsg = more;\r\n vm.showLessMsg = less;\r\n vm.currentShowMsg = vm.showAllMsg;\r\n vm.showIcon = \"caret-arrow-down\";\r\n };\r\n\r\n vm.toggleMoreInfo = function (toggleButton) {\r\n toggleButton.preventDefault();\r\n let currentToggleButton = angular.element(toggleButton.currentTarget);\r\n currentToggleButton.attr('aria-pressed', 'true');\r\n\r\n if (vm.currentShowMsg == vm.showLessMsg) {\r\n\r\n vm.showIcon = \"caret-arrow-down\";\r\n vm.currentShowMsg = vm.showAllMsg;\r\n currentToggleButton.attr('aria-expanded', 'false');\r\n currentToggleButton.attr('aria-pressed', 'false');\r\n\r\n } else {\r\n\r\n vm.showIcon = \"caret-arrow-up\";\r\n vm.currentShowMsg = vm.showLessMsg;\r\n currentToggleButton.attr('aria-expanded', 'true');\r\n\r\n }\r\n\r\n\r\n $moreInfoPane.slideToggle();\r\n $scope.$watch('accounts', function () {\r\n if ($scope.accounts.length < 11) {\r\n showMoreBtn.remove();\r\n }\r\n });\r\n\r\n let element = angular.element('table.moreaccounts.more');\r\n\r\n if ($(document).width() > 767){\r\n $(element).attr('style', 'margin-bottom: 13px !important');\r\n } else {\r\n $(element).attr('style', 'margin-bottom: 0px !important');\r\n }\r\n\r\n\r\n let element2 = angular.element('table.moreaccounts.more.din-pad');\r\n\r\n if ($(document).width() > 767) {\r\n $(element2).attr('style', 'margin-bottom: 20px !important');\r\n } else {\r\n $(element2).attr('style', 'margin-bottom: 8px !important');\r\n }\r\n };\r\n\r\n $(window).resize(function () {\r\n let element = document.querySelectorAll('table.moreaccounts.more');\r\n if ($(document).width() > 767)\r\n $(element).attr('style', 'margin-bottom: 50px !important');\r\n else\r\n $(element).attr('style', 'margin-bottom: 37px !important');\r\n });\r\n\r\n $scope.closeModal = function ($element) {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n\r\n};\r\n\r\nAccountInfoControllerLightAuth.$inject = ['$scope', '$window', '$rootScope', '$element', '$compile', '$timeout'];\r\napp.controller('AccountInfoControllerLightAuth', AccountInfoControllerLightAuth);","/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\r\nfunction AccountInfoController($scope, $window, $rootScope, $templateCache, $element, $controller) {\r\n\r\n let vm = this;\r\n vm.indexOfSelected = null;\r\n vm.selected = false;\r\n $scope.accounts = [];\r\n vm.isSelectedArray = [];\r\n vm.accountSelected = null;\r\n $('.test-tooltip-1').tooltip({\r\n container: '.container-1'\r\n });\r\n\r\n $('.test-tooltip-2').tooltip({\r\n container: '.container-2'\r\n });\r\n \r\n vm.indexSelected = function (index) {\r\n for (let i = 0; i < vm.isSelectedArray.length; i++) {\r\n vm.isSelectedArray[i] = false;\r\n $scope.accounts[i].IsPrimary = false;\r\n }\r\n vm.isSelectedArray[index] = true;\r\n $scope.accounts[index].IsPrimary = true;\r\n\r\n vm.accountSelected = $scope.accounts;\r\n \r\n }\r\n \r\n document.querySelectorAll('.input-control').maxLength = \"75\";\r\n\r\n $scope.clearSearch = function () {\r\n $scope.accountVerificationForm.data.lastSsn = \"\";\r\n $scope.accountVerificationForm.data.fedtax = \"\";\r\n }\r\n\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n\r\n $scope.selectType = function (event, type) {\r\n let selectedRadio = $scope.analytics.value;\r\n }\r\n\r\n $scope.onSelectItem = function (item) {\r\n\r\n $scope.itemValueText = item.text;\r\n\r\n };\r\n\r\n $scope.radioselected = function (value) { \r\n $scope.analytics.value = value;\r\n }\r\n\r\n $scope.$watch('accounts', function () {\r\n for (let i = 0; i < $scope.accounts.length; i++) {\r\n vm.isSelectedArray.push(false);\r\n }\r\n vm.accountSelected = $scope.accounts;\r\n });\r\n\r\n let iW = angular.element(document).innerWidth();\r\n\r\n if (iW < 720) {\r\n $('.order-change-r').insertBefore('.order-change-l');\r\n } else {\r\n $('.order-change-r').insertAfter('.order-change-l');\r\n }\r\n\r\n $window.onresize = function () {\r\n let iW = angular.element(document).innerWidth();\r\n if (iW < 720) {\r\n $('.order-change-r').insertBefore('.order-change-l');\r\n } else {\r\n $('.order-change-r').insertAfter('.order-change-l');\r\n }\r\n }\r\n\r\n let $this = $scope,\r\n $el = $element,\r\n $moreInfoPane = null,\r\n showMoreBtn = angular.element('button.more-info-label');\r\n vm.showAllMsg = \"\";\r\n vm.showLessMsg = \"\";\r\n vm.currentShowMsg = \"\";\r\n $moreInfoPane = angular.element($el.find('.more-info-more'));\r\n\r\n vm.relativeURL = $window.location.pathname;\r\n\r\n vm.setShowLabels = function (more, less) {\r\n vm.showAllMsg = more;\r\n vm.showLessMsg = less;\r\n\r\n\r\n vm.currentShowMsg = vm.showAllMsg;\r\n vm.showIcon = \"caret-arrow-down\";\r\n };\r\n\r\n vm.toggleMoreInfo = function (toggleButton) {\r\n toggleButton.preventDefault();\r\n let currentToggleButton = angular.element(toggleButton.currentTarget);\r\n currentToggleButton.attr('aria-pressed', 'true');\r\n\r\n if (vm.currentShowMsg == vm.showLessMsg) {\r\n\r\n vm.showIcon = \"caret-arrow-down\";\r\n vm.currentShowMsg = vm.showAllMsg;\r\n currentToggleButton.attr('aria-expanded', 'false');\r\n currentToggleButton.attr('aria-pressed', 'false');\r\n\r\n } else {\r\n\r\n vm.showIcon = \"caret-arrow-up\";\r\n vm.currentShowMsg = vm.showLessMsg;\r\n currentToggleButton.attr('aria-expanded', 'true');\r\n\r\n }\r\n $moreInfoPane.slideToggle();\r\n $scope.$watch('accounts', function () {\r\n if ($scope.accounts.length < 11) {\r\n showMoreBtn.remove();\r\n } \r\n });\r\n\r\n let element = angular.element('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more');\r\n\r\n if ($(document).width() > 767){\r\n $(element).attr('style', 'margin-bottom: 13px !important');\r\n } else {\r\n $(element).attr('style', 'margin-bottom: 0px !important');\r\n }\r\n \r\n \r\n let element2 = angular.element('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more.din-pad');\r\n \r\n if ($(document).width() > 767) {\r\n $(element2).attr('style', 'margin-bottom: 20px !important');\r\n } else {\r\n $(element2).attr('style', 'margin-bottom: 8px !important');\r\n }\r\n };\r\n\r\n $(window).resize(function () {\r\n let element = document.querySelectorAll('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more');\r\n if ($(document).width() > 767)\r\n $(element).attr('style', 'margin-bottom: 50px !important');\r\n else\r\n $(element).attr('style', 'margin-bottom: 37px !important');\r\n });\r\n\r\n vm.toggleMoreInfoOnKeyUp = function (toggleButton) {\r\n toggleButton.preventDefault();\r\n if (toggleButton.keyCode === 32) {\r\n vm.toggleMoreInfo(toggleButton);\r\n }\r\n };\r\n\r\n $scope.closeModal = function ($element) {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n $scope.passwordStrengthIndicator = (function () {\r\n\r\n let validations = [$scope.regexp_smallLetters, $scope.regexp_capitalLetters, $scope.regexp_digits, $scope.regexp_specialChars],\r\n validationsLength = validations.length,\r\n errors = [{\r\n 'exp': $scope.regexp_3times,\r\n 'value': 0\r\n }, {\r\n 'exp': $scope.regexp_whitespace,\r\n 'value': 0\r\n }],\r\n errorsLength = errors.length,\r\n password = \"\",\r\n passwordLength = 0,\r\n passwordField = \"\";\r\n\r\n let back,\r\n forth,\r\n i,\r\n letters = 'abcdefghijklmnopqrstuvwxyz',\r\n firstline = 'qwertyuiop',\r\n secondline = 'asdfghjkl',\r\n thirdline = 'zxcvbnm',\r\n numbers = '01234567890',\r\n symbols = '\\!@#$%&/()=?¿';\r\n\r\n function evalRegex(regex) {\r\n\r\n if (regex.test(password)) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n\r\n }\r\n\r\n function strength() {\r\n\r\n let strengthRegex = 0,\r\n strengthLength = 0,\r\n strength = 0,\r\n i = 0;\r\n\r\n /* Checks if all the validations match. */\r\n for (i = 0; i < validationsLength; i++) {\r\n strengthRegex += evalRegex(validations[i]);\r\n }\r\n\r\n\r\n /* Verifies if the length of the string is more than 10 chars. */\r\n strengthLength = passwordLength < 10 ? 0 : 1;\r\n\r\n /* Assigns the proper strength based on the length and the regex values. */\r\n if (strengthRegex >= 3) {\r\n strength = (strengthLength ? 2 : 1);\r\n } else {\r\n strength = 0;\r\n }\r\n\r\n return strength;\r\n }\r\n\r\n function returnErrorCode() {\r\n\r\n let strength = 1,\r\n i;\r\n\r\n /* Verifies if the string contains any error declared on the private variable \"errors\" */\r\n for (i = 0; i < errorsLength; i++) {\r\n if (evalRegex(errors[i].exp)) {\r\n strength = errors[i].value;\r\n break;\r\n }\r\n }\r\n\r\n return strength;\r\n }\r\n\r\n function getStrength() {\r\n\r\n let errorCode = returnErrorCode();\r\n let response = errorCode < 1 ? errorCode : strength();\r\n\r\n /* If the string is not valid, sets the value of the error. Othewise, the logic can be launched in order to improve the performance. */\r\n return response;\r\n }\r\n\r\n function setStrength(strength, tooShort) {\r\n\r\n /* Sets the strength and tooShort models. */\r\n $scope.strength = strength;\r\n $scope.tooShort = tooShort;\r\n\r\n if ($scope.tooShort || $scope.strength < 1) {\r\n passwordField.$setValidity(\"format\", false);\r\n passwordField.$validate();\r\n\r\n } else {\r\n passwordField.$setValidity(\"format\", true);\r\n }\r\n\r\n passwordField.$validate();\r\n\r\n }\r\n\r\n function startStrengthIndicator() {\r\n\r\n /* When the minlength is ok, gets the strength from getStrength() function. Otherwise sets the strength as too short. */\r\n password.length >= 8 ? setStrength(getStrength(password), false) : setStrength(-1, true);\r\n }\r\n\r\n let stringReverse = function (str) {\r\n for (let i = str.length - 1, out = ''; i >= 0; out += str[i--]) { }\r\n return out;\r\n }\r\n\r\n function passwordStrengthIndicator(pswrd) {\r\n\r\n passwordField = pswrd;\r\n\r\n /* Initialize the private variables. */\r\n //password = passwordField.$modelValue;\r\n password = angular.element(\"[name='\" + passwordField.$name + \"']\").val();\r\n //password = pswrd;\r\n passwordLength = password ? password.length : 0;\r\n\r\n /* Launches startStrengthIndicator() method upon the entry of 6 chars. */\r\n if (passwordLength >= 1) {\r\n checkWhiteSpaces() ? setStrength(-3, false) : startStrengthIndicator();\r\n } else {\r\n // 1 for whitespaces\r\n checkWhiteSpaces() ? setStrength(-3, false) : setStrength(-1, false);\r\n }\r\n\r\n\r\n // sequential letters (back and forth)\r\n for (i = 0; i < letters.length - 2; i++) {\r\n\r\n let p2 = password.toLowerCase();\r\n forth = letters.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n\r\n if (p2.indexOf(forth) !== -1 || p2.indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n break;\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n // sequential firstline (back and forth)\r\n for (i = 0; i < firstline.length - 2; i++) {\r\n let p2 = password.toLowerCase();\r\n forth = firstline.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n if (p2.indexOf(forth) !== -1 || p2.indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n\r\n\r\n break;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n // sequential secondline (back and forth)\r\n for (i = 0; i < secondline.length - 2; i++) {\r\n let p2 = password.toLowerCase();\r\n forth = secondline.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n if (p2.indexOf(forth) !== -1 || p2.indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n\r\n break;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n // sequential thirdline (back and forth)\r\n for (i = 0; i < thirdline.length - 2; i++) {\r\n let p2 = password.toLowerCase();\r\n forth = thirdline.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n if (p2.indexOf(forth) !== -1 || p2.indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n\r\n break;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n // sequential numbers (back and forth)\r\n for (i = 0; i < numbers.length - 2; i++) {\r\n forth = numbers.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n if (password.indexOf(forth) !== -1 || password.toLowerCase().indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n\r\n break;\r\n }\r\n\r\n\r\n }\r\n\r\n // sequential symbols (back and forth)\r\n for (i = 0; i < symbols.length - 2; i++) {\r\n forth = symbols.substring(i, parseInt(i + 4));\r\n back = stringReverse(forth);\r\n if (password.indexOf(forth) !== -1 || password.toLowerCase().indexOf(back) !== -1) {\r\n setStrength(0, false);\r\n\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n function checkWhiteSpaces() {\r\n let whitespaces_test = errors[1];\r\n return evalRegex(whitespaces_test.exp);\r\n }\r\n\r\n return {\r\n start: passwordStrengthIndicator\r\n };\r\n })();\r\n\r\n};\r\n\r\nAccountInfoController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element', '$controller'];\r\napp.controller('AccountInfoController', AccountInfoController);","function accountSummaryPaymentOptionsController($scope, $sce, $window, $element, $document, $cookies, $http, myAccountFactory, $timeout,$rootScope) {\r\n\r\n /**Use this script for ADA kewboard functionality**/\r\n $element.find(\".info-tooltip-accout-summary\").focusout(function () {\r\n let linkPopover = $element.find(\".ns-popover-right-placement .ns-popover-tooltip a\");\r\n linkPopover.hover();\r\n\r\n linkPopover.focusout(function () {\r\n let popoverRight = $element.find(\".ns-popover-right-placement\");\r\n popoverRight.css('display', 'none');\r\n });\r\n });\r\n $scope.placementPositionStr = \"auto right\";\r\n\r\n\r\n let checkWindow = function () {\r\n let width = angular.element(window).width();\r\n if (width <= 767) {\r\n //$scope.placementPositionStr = \"bottom|center\";\r\n $scope.placementPositionStr = \"bottom\";\r\n } else {\r\n $scope.placementPositionStr = \"auto right\";\r\n }\r\n\r\n $scope.$apply();\r\n }\r\n\r\n\r\n angular.element(\"document\").ready(function (context, source) {\r\n checkWindow();\r\n });\r\n\r\n\r\n\r\n $scope.pO = {};\r\n\r\n myAccountFactory.getJson(\"/api/PaymentOptions/GetPaymentOptions\").then(function (greeting) {\r\n $scope.pO = greeting.data;\r\n if (greeting.data.JsonAnalitycs) {\r\n $scope.jsonAnalyticsPaymentOptions = greeting.data.JsonAnalitycs\r\n }\r\n let poTrackings=document.getElementsByClassName('paymentOptionsTrackingInfo')\r\n for (let i = 0; i < poTrackings.length; i++) {\r\n poTrackings[i].setAttribute('json-analytics', JSON.stringify(greeting.data.JsonAnalitycs))\r\n\r\n }\r\n\r\n $rootScope.dataLayer.push(\r\n greeting.data.JsonAnalitycs\r\n );\r\n $scope.paymentLoader = false\r\n $scope.paymentSatus = 200;\r\n }).catch(function (reason) {\r\n $scope.paymentLoader = false\r\n $scope.paymentSatus = 500;\r\n });\r\n\r\n\r\n $scope.paymentSatus = 200;\r\n $scope.paymentLoader = true\r\n\r\n}\r\naccountSummaryPaymentOptionsController.$inject = ['$scope', '$sce', '$window', '$element', '$document', '$cookies', '$http', 'myAccountFactory', '$timeout', '$rootScope'];\r\napp.controller('accountSummaryPaymentOptionsController', accountSummaryPaymentOptionsController);\r\n\r\n","function accountSummaryController(\r\n $scope,\r\n $sce,\r\n $window,\r\n $element,\r\n $document,\r\n $cookies,\r\n $http,\r\n myAccountFactory,\r\n $timeout,\r\n $rootScope,\r\n) {\r\n /**Use this script for ADA kewboard functionality**/\r\n\r\n $element.find('.info-tooltip-accout-summary').focusout(function() {\r\n let linkPopover = $element.find(\r\n '.ns-popover-right-placement .ns-popover-tooltip a',\r\n );\r\n linkPopover.hover();\r\n\r\n linkPopover.focusout(function() {\r\n let popoverRight = $element.find('.ns-popover-right-placement');\r\n popoverRight.css('display', 'none');\r\n });\r\n });\r\n $scope.placementPositionStr = 'auto right';\r\n\r\n let checkWindow = function() {\r\n let width = angular.element(window).width();\r\n if (width <= 767) {\r\n $scope.placementPositionStr = 'bottom';\r\n } else {\r\n $scope.placementPositionStr = 'auto right';\r\n }\r\n\r\n $scope.$apply();\r\n };\r\n\r\n angular.element('document').ready(function(context, source) {\r\n checkWindow();\r\n });\r\n\r\n let paybillMessage = $element.find('.i-message');\r\n if (paybillMessage) {\r\n paybillMessage.on('mouseenter', function() {\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]').popover('show');\r\n }\r\n });\r\n }\r\n\r\n $(window).scroll(function() {\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]').popover('hide');\r\n }\r\n });\r\n\r\n //See duke-tooltip-content.js directive to see dataLayer push foor tooltipMessage.\r\n $scope.tooltipMessage = '';\r\n\r\n $scope.updateTooltipMessage = function() {\r\n if ($scope.rv.Tooltip) {\r\n if ($scope.rv.ShowTooltipButton) {\r\n $scope.tooltipMessage = $scope.rv.Tooltip.Message + '
';\r\n if ($scope.rv.IsdeferredPayment) {\r\n $scope.tooltipMessage =\r\n $scope.tooltipMessage +\r\n '' +\r\n $scope.rv.Tooltip.SecondButtonLabel +\r\n '';\r\n }\r\n\r\n $scope.tooltipMessage =\r\n $scope.tooltipMessage +\r\n ' ' +\r\n $scope.rv.Tooltip.PayNowButtonLabel +\r\n '
';\r\n } else {\r\n $scope.tooltipMessage = $scope.rv.Tooltip.Message;\r\n }\r\n\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]')\r\n .popover({\r\n trigger: 'manual',\r\n content: function() {\r\n return $('.popover-inside').html();\r\n },\r\n html: true,\r\n animation: false,\r\n })\r\n .on('mouseenter', function() {\r\n let _this = this;\r\n $(this).popover('show');\r\n $('.popover').on('mouseleave', function() {\r\n $(_this).popover('hide');\r\n });\r\n })\r\n .on('mouseleave', function() {\r\n let _this = this;\r\n $timeout(function() {\r\n if (!$('.popover:hover').length) {\r\n $(_this).popover('hide');\r\n }\r\n }, 300);\r\n });\r\n }\r\n\r\n $('.info-tooltip-accout-summary')\r\n .attr('data-title', $scope.tooltipMessage)\r\n .tooltip();\r\n\r\n $('body').on('click', '.tooltip-btn-first', function() {\r\n $rootScope.dataLayer.push({\r\n event: 'tool-tip',\r\n 'data-category': 'response_code',\r\n 'data-label': 'Account Summary Important Message',\r\n 'data-action': $scope.rv.Tooltip.SecondButtonLabel,\r\n });\r\n });\r\n\r\n $('body').on('click', '.tooltip-btn-pay-now', function() {\r\n $rootScope.dataLayer.push({\r\n event: 'tool-tip',\r\n 'data-category': 'response_code',\r\n 'data-label': 'Account Summary Important Message',\r\n 'data-action': $scope.rv.Tooltip.PayNowButtonLabel,\r\n });\r\n });\r\n }\r\n };\r\n\r\n $scope.isMobile = angular.element(window).width() < 970 ? true : false;\r\n $scope.mouseOverTooltip = function() {\r\n $('.info-tooltip-accout-summary')\r\n .attr('data-original-title', $scope.tooltipMessage)\r\n .tooltip();\r\n\r\n if (typeof window.orientation !== 'undefined') {\r\n $('body').css('cursor', 'pointer');\r\n }\r\n };\r\n\r\n $scope.func = function() {\r\n $scope.isTooltipOpen = false;\r\n $('.info-tooltip-accout-summary').trigger('click');\r\n };\r\n\r\n $scope.callViewBill = function() {\r\n $element.find('#viewBillForm').trigger('submit');\r\n };\r\n\r\n let addValues = function() {\r\n $timeout(function() {\r\n let data = {\r\n actionType: 'View Bill',\r\n billDate: $scope.rv.BillDate,\r\n };\r\n\r\n data = JSON.stringify(data);\r\n $element.find('#dataViewBill').val(data);\r\n }, 0);\r\n };\r\n\r\n $scope.summarySatus = 200;\r\n $scope.summaryLoader = true;\r\n $scope.rv = {};\r\n myAccountFactory.getJson('/api/AccountSummary/GetAccountSummaryData').then(\r\n function(greeting) {\r\n $scope.rv = greeting.data;\r\n\r\n if (greeting.data.StrJsonAnalitycs) {\r\n $scope.jsonAnalyticsMyAccount = greeting.data.StrJsonAnalitycs;\r\n }\r\n\r\n let asTrackings = document.getElementsByClassName(\r\n 'myAccountTrackingInfo',\r\n );\r\n for (let i = 0; i < asTrackings.length; i++) {\r\n asTrackings[i].setAttribute(\r\n 'json-analytics',\r\n JSON.stringify(greeting.data.StrJsonAnalitycs),\r\n );\r\n }\r\n $rootScope.dataLayer.push(greeting.data.StrJsonAnalitycs);\r\n\r\n addValues();\r\n $scope.summaryLoader = false;\r\n $scope.summarySatus = $scope.rv.HTTPStatus;\r\n\r\n if ($.isFunction($.fn.popover)) {\r\n $scope.updateTooltipMessage();\r\n } else {\r\n $scope.rv.ShowTooltip = false;\r\n }\r\n },\r\n function(error) {\r\n console.error(error);\r\n $scope.summaryLoader = false;\r\n $scope.summarySatus = 500;\r\n },\r\n );\r\n}\r\naccountSummaryController.$inject = [\r\n '$scope',\r\n '$sce',\r\n '$window',\r\n '$element',\r\n '$document',\r\n '$cookies',\r\n '$http',\r\n 'myAccountFactory',\r\n '$timeout',\r\n '$rootScope',\r\n];\r\napp.controller('accountSummaryController', accountSummaryController);\r\napp.config(['nsPopoverProvider', function(nsPopoverProvider) {}]);\r\n\r\napp.filter('dukeCurrency', function() {\r\n return function(nStr) {\r\n if (nStr) {\r\n nStr += '';\r\n let x = nStr.split('.');\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? '.' + x[1] : '';\r\n let rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n let xx = x1.split('-');\r\n x1 = xx.length == 2 ? '-$' + xx[1] : '$' + x1;\r\n return x1 + x2;\r\n }\r\n };\r\n});\r\n","/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\r\n\r\nfunction addAccountVerify($scope, $window, $rootScope, $templateCache) {\r\n\r\n};\r\n\r\naddAccountVerify.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller'];\r\napp.controller('addAccountVerify', addAccountVerify);","/*\r\n * Controller for Application Error page primarily for GAT\r\n */\r\n\r\nfunction applicationErrorController($scope, $rootScope) {\r\n $scope.postDataLayer = function(action1, action2) {\r\n const category = 'error_application_error';\r\n action2 = 'na';\r\n\r\n const action =\r\n (action2 ? $rootScope.dataLayerFormat(action2) : '') +\r\n (action1 && action2 ? '-|-' : '') +\r\n (action1 ? $rootScope.dataLayerFormat(action1) : '');\r\n const label = 'application-error';\r\n $rootScope.dataLayer.push({\r\n event: 'fire-event',\r\n 'event-category': category,\r\n 'event-label': label,\r\n 'event-action': action,\r\n });\r\n $rootScope.dataLayer.push({\r\n event: 'fire-vpv',\r\n 'vpv-name':\r\n '/vpv/authenticated/error-application-error/application-error/na/error',\r\n });\r\n };\r\n}\r\n\r\napplicationErrorController.$inject = ['$scope', '$rootScope'];\r\napp.controller('applicationErrorController', applicationErrorController);\r\n","/*\r\n * Directive to handle table that has two main functions:\r\n * 1. Show more buttons at bottom, so you can hide the entire table until user interaction\r\n * 2. Control to select a row/item in data. \r\n * Currently used in Report an Outage and Paperles Billing Enroll\r\n */\r\n\r\nfunction autoPayController($filter, $scope, $document, $window, $element, $timeout) {\r\n let vm = this;\r\n\r\n \r\n vm.selectedCount = 0;\r\n\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n\r\n $scope.closeModal = function ($element) {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n};\r\n\r\nautoPayController.$inject = ['$filter', '$scope', '$document', '$window', '$element', '$timeout'];\r\napp.controller('autoPayController', autoPayController);","function automaticDraftInheritedTestController($scope, $window, $rootScope, $templateCache) {\r\n angular.extend($scope, baseFormUtilitiesController);\r\n}\r\nautomaticDraftInheritedTestController.$inject = ['$scope', '$window', '$rootScope', '$templateCache'];\r\napp.controller('automaticDraftInheritedTestController', automaticDraftInheritedTestController);\r\n","/*\r\n * Angular controller\r\n * Automatic Draft Controller\r\n * \r\n */\r\nfunction automaticDraftController($element, $scope, $window, $rootScope, $templateCache, $timeout) {\r\n\r\n $scope.tooltipPlacement = \"right\";\r\n $scope.changeAccountNumberLabel = false;\r\n\r\n\r\n let width = angular.element(window).width();\r\n\r\n angular.element(\"document\").ready(function () {\r\n\r\n if (width <= 767) {\r\n $scope.tooltipPlacement = \"left\";\r\n } else if (width <= 979) {\r\n $scope.tooltipPlacement = \"top\";\r\n } else {\r\n $scope.tooltipPlacement = \"right\";\r\n }\r\n\r\n $scope.$apply();\r\n });\r\n\r\n angular.extend($scope, baseFormUtilitiesController);\r\n\r\n $scope.master = '';\r\n\r\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\r\n $element.find(\".cancel-btn\").blur();\r\n });\r\n\r\n $scope.reset = function () {\r\n //$scope.bankingInformationAutomaticDraftForm.data.accountNumber = angular.copy($scope.master);\r\n //$scope.patternBind = $rootScope.regexp_notSameDigits;\r\n $scope.changeAccountNumberLabel = true;\r\n };\r\n $scope.resetValue = function (name) {\r\n $scope.bankingInformationAutomaticDraftForm.accountNumber.$setViewValue('');\r\n $(\"input[name='accountNumber']\").val('');\r\n }\r\n\r\n $scope.init = function () {\r\n $timeout(function () {\r\n $scope.bankingInformationAutomaticDraftForm.$setPristine(true);\r\n }, 300);\r\n };\r\n\r\n\r\n\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n\r\n\r\n $scope.radioselected = function (value) {\r\n $scope.analytics.value = value;\r\n }\r\n\r\n\r\n};\r\nautomaticDraftController.$inject = ['$element', '$scope', '$window', '$rootScope', '$templateCache', '$timeout'];\r\napp.controller('automaticDraftController', automaticDraftController);","/*\r\n * Angular controller\r\n * EqualPaymentPlanController manage a carousel with slides component\r\n * \r\n */\r\nfunction budgetBillingController($scope, $window, $rootScope, $templateCache, $element) {\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n $scope.closeModal = function ($element) {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n\r\n $scope.radioselected = function (value) {\r\n $scope.analytics.value = value;\r\n }\r\n\r\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\r\n $element.find(\".cancel-btn\").blur();\r\n });\r\n\r\n\r\n};\r\n\r\nbudgetBillingController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element'];\r\napp.controller('budgetBillingController', budgetBillingController);","\r\n/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\r\n\r\nfunction changeAccount($scope, $window, $filter, $rootScope, $templateCache, $element, $http, $timeout, apiServices) {\r\n\r\n $scope.invalidEmail = true;\r\n $scope.loadingSpinner = false;\r\n $scope.alreadyVerified = false;\r\n $scope.focusIn = false;\r\n let vm = this;\r\n vm.primaryAccountSaved = 0;\r\n vm.userChoice = null;\r\n vm.selectedRow = null;\r\n vm.indexOfSelected = null;\r\n vm.selected = false;\r\n $scope.accounts = [];\r\n let emailChanged;\r\n \r\n\r\n vm.isSelectedArray = [];\r\n $scope.isCheck = false;\r\n vm.selectedRow = null;\r\n vm.available = false;\r\n vm.setClickedRow = function ($index, $event, account) {\r\n for (let i = 0; i < vm.isSelectedArray.length; i++) {\r\n $scope.accounts[i].PrimaryAccount = false;\r\n }\r\n vm.selectedRow = $index;\r\n let radio = $($event.currentTarget).find(\"input[type='radio']\");\r\n radio.prop(\"checked\", true);\r\n vm.isSelectedArray[$index] = false;\r\n account.PrimaryAccount = true;\r\n $scope.srcAcctId = account.SrcAcctId;\r\n $scope.srcAcctId2 = account.SrcAcctId2;\r\n $scope.srcSysCd = account.SrcSysCd;\r\n $scope.isResidential = account.IsResidential;\r\n $scope.jurisdiction = account.Jurisdiction;\r\n \r\n };\r\n\r\n vm.dataLayerPush = function(saveOrCancel) {\r\n let action;\r\n if (saveOrCancel == 'save') {\r\n action = 'Save Changes';\r\n } else {\r\n action = 'Cancel';\r\n }\r\n\r\n let data;\r\n data = {\r\n 'data-category' : 'manage_profile',\r\n 'data-label' : 'Change Primary Account',\r\n 'data-action' : action,\r\n 'event': 'event-click'\r\n };\r\n\r\n data = {\r\n 'data-category' : 'manage_profile',\r\n 'data-label' : 'Change Primary Account',\r\n 'data-action' : action,\r\n 'event': 'event-click'\r\n };\r\n\r\n if (dataLayer && ($scope.srcAcctId != undefined || saveOrCancel != 'save')) {\r\n dataLayer.push(data);\r\n }\r\n }\r\n \r\n\r\n\r\n $('#email-modal').modal({\r\n backdrop: 'static',\r\n keyboard: false\r\n });\r\n \r\n let closeBtn = angular.element('.no-close .close');\r\n let closeSesion = angular.element('.no-close .modal-action');\r\n $(closeBtn).on('click', function (e) {\r\n angular.element('.no-close button.modal-action').trigger('click');\r\n });\r\n\r\n $scope.closeModal = function () {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n $scope.$watch('ProfileDataForm.data.emailAddress', function (present, old) {\r\n emailChanged = true;\r\n });\r\n \r\n function serviceSuccess(data) {\r\n\r\n $scope.loadingSpinner = false;\r\n $scope.alreadyVerified = true;\r\n\r\n if (data.ValidEmail) {\r\n $scope.invalidEmail = false;\r\n $scope.validationIcon = data.ReturnCodeIcon;\r\n $scope.validationMsg = data.ReturnCodeMessage;\r\n } else if (!data.ValidEmail && data.ReturnCode != \"370012047\") {\r\n $scope.invalidEmail = true;\r\n $scope.validationIcon = data.ReturnCodeIcon;\r\n $scope.validationMsg = data.ReturnCodeMessage;\r\n } else if (data.ReturnCode == \"370012047\") {\r\n $scope.fiveAttempts = true;\r\n $scope.validationIcon = data.ReturnCodeIcon;\r\n $scope.validationMsg = data.ReturnCodeMessage;\r\n\r\n $timeout(function () {\r\n $scope.ProfileDataForm.$setPristine();\r\n $scope.ProfileDataForm.$setValidity();\r\n $scope.ProfileDataForm.$setUntouched(); \r\n }, 0);\r\n\r\n\r\n } \r\n }\r\n\r\n function serviceError(data) {\r\n $scope.loadingSpinner = false;\r\n }\r\n\r\n $scope.validateEmail = function (item) {\r\n\r\n if (emailChanged) {\r\n emailChanged = false;\r\n $scope.loadingSpinner = true;\r\n let model = $element.find(\"#\" + item).controller('ngModel');\r\n if (model.$valid) {\r\n let dataObj = {\r\n email: model.$viewValue\r\n };\r\n \r\n apiServices.validateEmail(dataObj, serviceSuccess, serviceError); \r\n \r\n } else {\r\n $scope.invalidEmail = true;\r\n $scope.loadingSpinner = false;\r\n $scope.alreadyVerified = false;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n\r\n $scope.selectType = function (event, type) {\r\n let selectedRadio = $scope.analytics.value;\r\n }\r\n\r\n $scope.onSelectItem = function (item) {\r\n\r\n $scope.itemValueText = item.text;\r\n\r\n };\r\n\r\n $scope.radioselected = function (value) { \r\n $scope.analytics.value = value; \r\n }\r\n\r\n \r\n //$timeout(function () {\r\n // $scope.isDirty = $scope.ProfileDataForm.$dirty;\r\n //});\r\n\r\n vm.indexSelected = function (index) {\r\n for (let i = 0; i < vm.isSelectedArray.length; i++) {\r\n vm.isSelectedArray[i] = false;\r\n }\r\n vm.isSelectedArray[index] = true;\r\n }\r\n\r\n $scope.$watch('accounts', function () {\r\n for (let i = 0; i < $scope.accounts.length; i++) {\r\n if ($scope.accounts[i].PrimaryAccount) {\r\n let toTheTop = $scope.accounts[i];\r\n $scope.accounts.splice(i, 1);\r\n $scope.accounts.splice(0, 0, toTheTop);\r\n }\r\n vm.isSelectedArray.push(false);\r\n }\r\n });\r\n\r\n \r\n $scope.$watch('accounts', function () {\r\n if ($scope.accounts.length <= 5) {\r\n showMoreBtn.remove();\r\n } else if ($scope.accounts.length > 5) {\r\n let table = angular.element('.auth.Manage-Profile.primary-account table.moreaccounts.six');\r\n $(table).attr('style', 'margin-bottom: 13px !important');\r\n }\r\n \r\n });\r\n\r\n\r\n let $this = $scope,\r\n $el = $element,\r\n showMoreBtn = angular.element('button.more-info-label'),\r\n $moreInfoPane = null;\r\n $scope.showAllMsg = \"\";\r\n $scope.showLessMsg = \"\";\r\n $scope.currentShowMsg = \"\";\r\n $moreInfoPane = angular.element($el.find('.more-info-more'));\r\n\r\n\r\n $scope.relativeURL = $window.location.pathname;\r\n\r\n $scope.setShowLabels = function (more, less) {\r\n $scope.showAllMsg = more;\r\n $scope.showLessMsg = less;\r\n\r\n\r\n $scope.currentShowMsg = $scope.showAllMsg;\r\n $scope.showIcon = \"caret-arrow-down\";\r\n };\r\n\r\n $scope.toggleMoreInfo = function (toggleButton) {\r\n toggleButton.preventDefault();\r\n let currentToggleButton = angular.element(toggleButton.currentTarget);\r\n currentToggleButton.attr('aria-pressed', 'true');\r\n\r\n if ($scope.currentShowMsg == $scope.showLessMsg) {\r\n\r\n $scope.showIcon = \"caret-arrow-down\";\r\n $scope.currentShowMsg = $scope.showAllMsg;\r\n currentToggleButton.attr('aria-expanded', 'false');\r\n currentToggleButton.attr('aria-pressed', 'false');\r\n\r\n } else {\r\n\r\n $scope.showIcon = \"caret-arrow-up\";\r\n $scope.currentShowMsg = $scope.showLessMsg;\r\n currentToggleButton.attr('aria-expanded', 'true');\r\n }\r\n $moreInfoPane.slideToggle();\r\n $scope.$watch('accounts', function () {\r\n if($scope.accounts.length < 11){\r\n showMoreBtn.remove();\r\n } else if ($scope.accounts.length > 11) {\r\n let el = angular.element('.auth.Manage-Profile.primary-account table.more');\r\n $(el).attr('style', 'margin-bottom: 13px !important');\r\n }\r\n \r\n });\r\n };\r\n\r\n $scope.toggleMoreInfoOnKeyUp = function (toggleButton) {\r\n toggleButton.preventDefault();\r\n if (toggleButton.keyCode === 32) {\r\n $scope.toggleMoreInfo(toggleButton);\r\n }\r\n };\r\n\r\n};\r\n\r\nchangeAccount.$inject = ['$scope', '$window', '$filter', '$rootScope', '$templateCache', '$element', '$http', '$timeout', 'apiServices'];\r\napp.controller('changeAccount', changeAccount);","/*\r\n * Angular controller\r\n * Pick your due date Controller\r\n *\r\n */\r\n\r\nfunction deferredPaymentArrangementController(\r\n $scope,\r\n $templateCache,\r\n $controller,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $compile,\r\n $filter,\r\n $q,\r\n) {\r\n $scope.formCtrl = {};\r\n $scope.formCtrl.forms = {};\r\n $scope.formCtrl.forms.my_form = {};\r\n\r\n $scope.goTo = function (link) {\r\n if (document.querySelectorAll('.de-page-level-message:not(.ng-hide)').length > 0) {\r\n const pageTitle = document\r\n .getElementsByClassName('header-1')[0]\r\n .innerHTML.trim();\r\n \r\n const message = document.querySelectorAll('.de-page-level-message:not(.ng-hide) .de-page-level-message__title')[0].innerHTML.trim();\r\n const label = `${pageTitle} | ${message}`;\r\n const action = document.querySelectorAll('.de-page-level-message:not(.ng-hide) .de-button')[0].innerHTML.trim();\r\n $scope.dataLayerPush(\r\n 'dpa',\r\n label,\r\n action\r\n );\r\n }\r\n $window.location.href = link;\r\n };\r\n\r\n\r\n const enrollInDeferredPaymentService = () => {\r\n const deferred = $q.defer();\r\n $http({\r\n method: 'POST',\r\n url: '/api/PaymentArrangement/EnrollInDPA',\r\n headers: { 'Content-Type': 'application/json' },\r\n timeout: deferred.promise,\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((error) => {\r\n deferred.reject(error.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.enroll = function () {\r\n enrollInDeferredPaymentService().then(\r\n (response) => {\r\n if (response.Success === 'True' || response.Success === true) {\r\n $scope.enrollSuccess = true;\r\n const pageTitle = document\r\n .getElementsByClassName('header-1')[0]\r\n .innerHTML.trim();\r\n const label = `${pageTitle} | Enroll`;\r\n const action = 'enroll';\r\n $scope.dataLayerPush(\r\n 'dpa',\r\n label,\r\n action,\r\n pageTitle,\r\n 'Click enroll to sign up for payment arrangement',\r\n 'success'\r\n );\r\n $window.scrollTo(0, 0);\r\n } else {\r\n window.location.href = response.RedirectUrl;\r\n }\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n window.location.href = response.RedirectUrl;\r\n },\r\n );\r\n };\r\n\r\n $scope.eligible = function (eligible) {\r\n if(!eligible) {\r\n const data = {\r\n 'data-category': 'find_account',\r\n 'data-label': 'set-up-a-payment-arrangement-|-select-and-confirm-your-account',\r\n 'data-action': 'error-|-sorry,-your account-is-ineligible',\r\n event: 'event-click',\r\n };\r\n\r\n const vpvObject = {\r\n event: 'send-VPV',\r\n 'vpv-name': '/vpv/find_account/Set up a Payment Arrangement/Select and confirm your account/ineligible',\r\n };\r\n\r\n if (dataLayer) {\r\n dataLayer.push(data);\r\n dataLayer.push(vpvObject);\r\n }\r\n }\r\n };\r\n\r\n $scope.displayModal = function () {\r\n angular.element('#cancel-modal').modal('show');\r\n };\r\n\r\n $scope.dataLayerPush = function (\r\n category = '',\r\n label = '',\r\n action = '',\r\n title = '',\r\n subtitle = '',\r\n successOrFailure = ''\r\n ) {\r\n const dataLayerObject = {\r\n 'data-category': 'DPA',\r\n 'data-label': label,\r\n 'data-action': action,\r\n event: 'event-click',\r\n };\r\n\r\n const vpvObject = {\r\n event: 'send-VPV',\r\n 'vpv-name': `/vpv/${category}/${title}/${subtitle}/${action}/${successOrFailure}`,\r\n };\r\n\r\n\r\n if (dataLayer) {\r\n dataLayer.push(dataLayerObject);\r\n if (successOrFailure != '') {\r\n dataLayer.push(vpvObject);\r\n }\r\n }\r\n };\r\n}\r\n\r\ndeferredPaymentArrangementController.$inject = [\r\n '$scope',\r\n '$templateCache',\r\n '$controller',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$compile',\r\n '$filter',\r\n '$q',\r\n];\r\napp.controller(\r\n 'deferredPaymentArrangementController',\r\n deferredPaymentArrangementController,\r\n);\r\n","function delegatedInterceptTableController(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $document,\r\n $rootScope,\r\n myAccountFactory,\r\n $sce,\r\n cookiesService,\r\n commongaTaggingService,\r\n) {\r\n const vm = $scope;\r\n\r\n // API\r\n\r\n let getUrl = '/api/Delegation/GetPendingOptions';\r\n\r\n if (window.location.hostname == 'localhost') {\r\n getUrl = '/api/Delegation/getDelegationAccounts';\r\n }\r\n\r\n const delegationList = document.getElementById('delegated-intercept-list');\r\n\r\n vm.delegationRequest = {};\r\n vm.updateRequest = {};\r\n vm.suppliers = [];\r\n vm.accountIDs = [];\r\n vm.isLoading = true;\r\n\r\n // disabled button display\r\n vm.isDisabled = true;\r\n vm.isExpanded = false;\r\n\r\n vm.totalAccounts = 0;\r\n vm.init = function() {\r\n myAccountFactory\r\n .getJson(getUrl)\r\n .then(data => {\r\n vm.delegationRequest = data.data;\r\n if (vm.delegationRequest.Collection.length === 0) {\r\n // we get a redirected page i.e disambiguation.\r\n window.location.href = '/my-account/sign-in/disambiguationpage';\r\n } else {\r\n angular.forEach(vm.delegationRequest.Collection, value => {\r\n vm.suppliers.push(value);\r\n vm.totalAccounts = vm.suppliers.length;\r\n });\r\n\r\n vm.checkboxAll();\r\n vm.checkedAccounts = vm.accountIDs.length;\r\n }\r\n })\r\n .then(() => {\r\n vm.isLoading = false;\r\n if (delegationList.classList.contains('loading')) {\r\n delegationList.classList.remove('loading');\r\n }\r\n })\r\n .catch(reason => {\r\n console.log(reason);\r\n });\r\n };\r\n\r\n vm.checkboxClick = function(supplier) {\r\n if (vm.inter.form[supplier]) {\r\n // add account id to array\r\n vm.accountIDs.push({ id: supplier });\r\n } else {\r\n // remove account id from array\r\n const index = vm.accountIDs.indexOf(supplier);\r\n vm.accountIDs.splice(index, 1);\r\n }\r\n };\r\n\r\n // CHECK ALL LOOPS //\r\n vm.checkboxAll = function() {\r\n // toggle checkboxAll value\r\n vm.inter.form.checkall = !vm.inter.form.checkall;\r\n // empty accountIDs array\r\n vm.accountIDs = [];\r\n\r\n vm.suppliers.forEach(supplier => {\r\n // toggle checkbox value\r\n vm.inter.form[supplier.accountDelegationRequestId] =\r\n vm.inter.form.checkall;\r\n // add supplier id to array if checkall is true\r\n if (vm.inter.form.checkall) {\r\n vm.accountIDs.push({ id: supplier.accountDelegationRequestId });\r\n }\r\n });\r\n };\r\n\r\n // CHECK FOR COOKIE //\r\n angular.element(document).ready(() => {\r\n if (cookiesService.getCookie('delegation-update-success')) {\r\n cookiesService.deleteCookie('delegation-update-success');\r\n }\r\n });\r\n\r\n vm.postConsentResponse = function(consentResponse, redirectUrl) {\r\n const consentUrl = '/api/UniversalConsent/PostConsentResponse';\r\n myAccountFactory\r\n .getJsonParams(consentUrl, { consentResponse })\r\n .then(res => {\r\n if (res.data.accountConsentPostDTO.response === 'accept') {\r\n vm.consentUpdated = true;\r\n } else if (res.data.accountConsentPostDTO.response === 'revoke') {\r\n vm.consentRevoked = true;\r\n }\r\n })\r\n .catch(err => {\r\n console.error(\r\n 'There has been an error with the Latest Consent URL, ',\r\n err,\r\n );\r\n });\r\n };\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n // SAVE BUTTON //\r\n vm.submitForm = function(acceptTrue) {\r\n const acceptUrl = '/api/Delegation/AcceptPendingOptions';\r\n const declineUrl = '/api/Delegation/DeclinePendingOptions';\r\n // http post to sitecore service, pass in id's\r\n // const postObjArr = [];\r\n // vm.accountIDs.forEach((obj) => {\r\n // accountObj = {\r\n // accountDelegationRequestId: Number(obj.id),\r\n // status: acceptTrue ? 'accept' : 'decline',\r\n // };\r\n // postObjArr.push(accountObj);\r\n // });\r\n\r\n // const postObj = { delegations: postObjArr };\r\n // const postHeaders = { 'Content-Type': 'application/json' };\r\n let postObj = { accountIds: vm.accountIDs };\r\n postObj = `delegation=${JSON.stringify({ accountIds: vm.accountIDs })}`;\r\n const postHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };\r\n\r\n vm.isLoading = true;\r\n delegationList.classList.add('loading');\r\n\r\n if (acceptTrue) {\r\n document\r\n .getElementById('consent')\r\n .addEventListener('scroll', checkScrollHeight, false);\r\n $rootScope\r\n .postService(postObj, acceptUrl, postHeaders)\r\n .then(res => {\r\n if (res === 'True') {\r\n // show T&C\r\n vm.userAcceptInvite = true;\r\n } else {\r\n // show success message\r\n virtualPagePush(\r\n $('#delegation-intercept-gat').attr('businessFunction'),\r\n $('#delegation-intercept-gat').attr('headLine'),\r\n $('#delegation-intercept-gat').attr('subhead2'),\r\n $('#delegation-intercept-gat').attr('buttonText'),\r\n );\r\n vm.delegationSuccess = true;\r\n }\r\n cookiesService.setCookie('delegation-update-success');\r\n vm.isLoading = false;\r\n delegationList.classList.remove('loading');\r\n })\r\n .catch(err => {\r\n console.error(\r\n 'There has been an error POSTing user account data, ',\r\n err,\r\n );\r\n });\r\n } else {\r\n $rootScope\r\n .postService(postObj, declineUrl, postHeaders)\r\n .then(res => {\r\n cookiesService.setCookie('delegation-update-success');\r\n virtualPagePush(\r\n $('#delegation-intercept-gat').attr('businessFunction'),\r\n $('#delegation-intercept-gat').attr('headLine'),\r\n $('#delegation-intercept-gat').attr('subhead'),\r\n $('#delegation-intercept-gat').attr('buttonText'),\r\n );\r\n vm.userDeclineInvite = true;\r\n vm.isLoading = false;\r\n delegationList.classList.remove('loading');\r\n })\r\n .catch(err => {\r\n console.error(\r\n 'There has been an error POSTing user account data, ',\r\n err,\r\n );\r\n });\r\n }\r\n };\r\n\r\n vm.acceptTermsOfUse = function() {\r\n const termsCondUrl = '/api/Delegation/AcceptTC';\r\n\r\n let postObj = { accountIds: vm.accountIDs };\r\n\r\n postObj = `delegation= ${JSON.stringify({ accountIds: vm.accountIDs })}`;\r\n const postHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };\r\n\r\n $rootScope\r\n .postService(postObj, termsCondUrl, postHeaders)\r\n .then(res => {\r\n virtualPagePush(\r\n $('#delegation-intercept-gat').attr('businessFunction'),\r\n $('#delegation-intercept-gat').attr('headLine'),\r\n $('#delegation-intercept-gat').attr('subhead2'),\r\n $('#delegation-intercept-gat').attr('buttonText'),\r\n );\r\n vm.delegationSuccess = true;\r\n cookiesService.setCookie('delegation-update-success');\r\n })\r\n .catch(err => {\r\n console.error(\r\n 'There has been an error POSTing user account data, ',\r\n err,\r\n );\r\n });\r\n };\r\n\r\n vm.getRedirectHandling = function() {\r\n const getRedirectUrl = 'api/Delegation/GetRedirectUrl';\r\n\r\n let postObj = { accountIds: vm.accountIDs };\r\n\r\n postObj = `delegation= ${JSON.stringify({ accountIds: vm.accountIDs })}`;\r\n const postHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };\r\n\r\n $rootScope\r\n .postService(postObj, getRedirectUrl, postHeaders)\r\n .then(res => {\r\n cookiesService.setCookie('delegation-update-success');\r\n vm.delegationSuccess = true;\r\n })\r\n .catch(err => {\r\n console.error(\r\n 'There has been an error POSTing user account data, ',\r\n err,\r\n );\r\n });\r\n };\r\n\r\n // success, revoke, error plm screens\r\n vm.consentUpdated = false;\r\n vm.consentRevoked = false;\r\n\r\n // disabled button display\r\n vm.isDisabled = true;\r\n vm.isExpanded = false;\r\n\r\n // expand button display\r\n vm.expandBtnText = 'Expand for more information';\r\n\r\n // redirect from GOT IT button\r\n vm.goTo = function(link) {\r\n $window.location.href = link;\r\n };\r\n\r\n // expand functionality\r\n vm.toggleContent = function() {\r\n const expandBtn = document.getElementById('umc-btn');\r\n const consentText = document.getElementById('consent');\r\n vm.isExpanded = !vm.isExpanded;\r\n const expanded =\r\n (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\r\n expandBtn.setAttribute('aria-expanded', !expanded);\r\n consentText.setAttribute('aria-expanded', !expanded);\r\n if (vm.isExpanded) {\r\n consent.style.height = `${consent.scrollHeight}px`;\r\n vm.isDisabled = false;\r\n vm.expandBtnText = 'Show less';\r\n } else {\r\n consent.style.height = '350px';\r\n vm.expandBtnText = 'Expand for more information';\r\n }\r\n };\r\n\r\n // scroll trigger functionality\r\n function checkScrollHeight() {\r\n const agreementTextElement = document.getElementsByName('umcConsent')[0];\r\n if (\r\n agreementTextElement.scrollTop + agreementTextElement.offsetHeight >=\r\n agreementTextElement.scrollHeight\r\n ) {\r\n $scope.$apply(() => {\r\n vm.isDisabled = false;\r\n });\r\n }\r\n }\r\n\r\n /* function declaration */\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n $scope.$watch(\r\n 'accountIDs',\r\n newValue => {\r\n vm.checkedAccounts = vm.accountIDs.length;\r\n },\r\n true,\r\n );\r\n}\r\n\r\ndelegatedInterceptTableController.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$document',\r\n '$rootScope',\r\n 'myAccountFactory',\r\n '$sce',\r\n 'cookiesService',\r\n 'commongaTaggingService',\r\n];\r\napp.controller(\r\n 'delegatedInterceptTableController',\r\n delegatedInterceptTableController,\r\n);\r\n","/*\r\n * Angular controller\r\n * disambiguation\r\n *\r\n */\r\n\r\nfunction disambiguation($scope, $rootScope) {\r\n $scope.disableTiles = function(url) {\r\n const theTiles = document.getElementsByClassName('nav-cards__item');\r\n const disableURL = url;\r\n let theURL;\r\n for (let index = 0; index < theTiles.length; index++) {\r\n theURL = theTiles[index].getElementsByClassName('tile-url')[0].value;\r\n if (theURL === disableURL) {\r\n theTiles[index].classList.add('disabled');\r\n }\r\n }\r\n document.getElementById('disambiguation-loading').classList.add('hidden');\r\n };\r\n\r\n $scope.pushDataLayer = function(action,$event) {\r\n // preventDefault for testing only\r\n // $event.preventDefault();\r\n // convert spaces to dashes and lowercase\r\n const act = $rootScope.dataLayerFormat(action);\r\n let pageTitle = document.getElementsByTagName('h1')[0];\r\n if (pageTitle) {\r\n // convert spaces to dashes and lowercase\r\n pageTitle = $rootScope.dataLayerFormat(pageTitle.innerText);\r\n } else {\r\n // failsafe\r\n pageTitle = $rootScope.dataLayerFormat('Select Your Experience');\r\n }\r\n $rootScope.dataLayer.push({\r\n event: 'fire-event',\r\n 'event-category': 'disambiguation',\r\n 'event-action': act,\r\n 'event-label': pageTitle,\r\n });\r\n $rootScope.dataLayer.push({\r\n event: 'fire-vpv',\r\n 'vpv-name': '/vpv/disambiguation/' + act + '/success',\r\n });\r\n };\r\n}\r\n\r\ndisambiguation.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n];\r\napp.controller('disambiguation', disambiguation);","function DisplayIframeController($element, $scope, $timeout, $window) {\r\n\r\n $scope.success = false;\r\n let theForm = $element.find(\"form\");\r\n $timeout(function () {\r\n theForm.submit();\r\n }, 0);\r\n document.querySelector(\"iframe:not(#egot_iframe)\").onload = function () {\r\n $scope.success = true;\r\n $scope.$apply();\r\n document.getElementsByTagName('body')[0].scrollIntoView();\r\n }\r\n}\r\n\r\nDisplayIframeController.$inject = ['$element', '$scope', '$timeout', '$window'];\r\napp.controller('DisplayIframeController', DisplayIframeController);","function usageAnalysisControllerTest(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n) {\r\n // Line for testing, erasing after test is done\r\n window.$rootScope = $rootScope;\r\n\r\n $scope.newCalendar = true;\r\n\r\n const api_url_table = '/api/UsageAnalysis/GetBillingInformation';\r\n const api_url_graph = '/api/UsageAnalysis/GetUsageChartData';\r\n const export_url = '/api/UsageAnalysis/ExportData';\r\n const grexport_url = '/api/UsageAnalysis/DownloadMyData';\r\n const chart_selector = $element.find('.duke-chart');\r\n const calendar = $element.find('.testCalendar');\r\n let graphText = '';\r\n let changedGraph = false;\r\n let newPeriodValue = '';\r\n let dropdownInteraction = 'Meter';\r\n let meterLoaded = false;\r\n let exportData;\r\n let exportFilename;\r\n let grExportData;\r\n let grExportFilename;\r\n let DailyAvgWeekException = false;\r\n $scope.grexport = false;\r\n $scope.usage_table = [];\r\n $scope.loaded = false;\r\n $scope.grLoaded = false;\r\n $scope.grError = false;\r\n $scope.table_type = '';\r\n $scope.forms = {};\r\n $scope.error_message_default = 'This information is currently unavailable. Please check again later.';\r\n $scope.error_message = $scope.error_message_default;\r\n $scope.errorPanel = false;\r\n $scope.analytics = {\r\n chartType: 'Smart Meter',\r\n };\r\n $scope.period_items = [];\r\n $scope.graph_items = [];\r\n $scope.chart = {};\r\n $scope.openModal = function (id) {\r\n $(`#${id}`).modal('show');\r\n };\r\n $scope.start_date = '';\r\n $scope.original_end_date = $scope.end_date;\r\n $scope.current_date = '';\r\n $scope.meter_certified = false;\r\n $scope.maxHeightChanged = false;\r\n $scope.showChart = true;\r\n $scope.dropDownChartItems = JSON.parse(\r\n angular\r\n .element(document.querySelector('#usageAnalysisMeter'))\r\n .attr('items'),\r\n )[0];\r\n let isHourly = false;\r\n let isDayPeriod = false;\r\n const yesterday = new Date();\r\n let userAgent;\r\n\r\n // Flag to see if last dropdown change was for hourly+day\r\n let hourlyDayTriggered = false;\r\n\r\n const formatedDate = function (recivedDate) {\r\n let dd = recivedDate.getDate();\r\n dd = dd < 10 ? `0${dd}` : dd;\r\n\r\n let mm = recivedDate.getMonth() + 1;\r\n mm = mm < 10 ? `0${mm}` : mm;\r\n\r\n const aa = `${mm} / ${dd} / ${recivedDate.getFullYear()}`;\r\n // console.log(\"formated date is \",aa);\r\n\r\n return `${mm} / ${dd} / ${recivedDate.getFullYear()}`;\r\n };\r\n\r\n const formatedDateNoSpaces = function (recivedDate) {\r\n let dd = recivedDate.getDate();\r\n dd = dd < 10 ? `0${dd}` : dd;\r\n\r\n let mm = recivedDate.getMonth() + 1;\r\n mm = mm < 10 ? `0${mm}` : mm;\r\n\r\n const aa = `${mm}/${dd}/${recivedDate.getFullYear()}`;\r\n // console.log(\"formated date is \",aa);\r\n\r\n return `${mm}/${dd}/${recivedDate.getFullYear()}`;\r\n };\r\n\r\n let today = new Date();\r\n today = formatedDate(today);\r\n let todayNoSpaces = new Date();\r\n todayNoSpaces = formatedDateNoSpaces(todayNoSpaces);\r\n\r\n /* PRINT FUNCTIONALITY */\r\n jQuery(document).bind('keyup keydown', (e) => {\r\n if (e.ctrlKey && e.keyCode == 80 && !(userAgent.indexOf('Edge/') > -1)) {\r\n window.print();\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n\r\n const isIE = function (userAgent) {\r\n userAgent = userAgent || navigator.userAgent;\r\n return (\r\n userAgent.indexOf('MSIE ') > -1\r\n || userAgent.indexOf('Trident/') > -1\r\n || userAgent.indexOf('Edge/') > -1\r\n );\r\n };\r\n\r\n const detectBrowser = (function () {\r\n userAgent = navigator.userAgent;\r\n let printClass = '';\r\n\r\n if (/Google Inc/.test(navigator.vendor)) printClass = 'chrome-print';\r\n else if (/Edge/.test(navigator.userAgent)) printClass = 'edge-print';\r\n else if (\r\n /Safari/.test(navigator.userAgent)\r\n && !/Chrome/.test(navigator.userAgent)\r\n ) printClass = 'safari-print';\r\n else if (/Trident/.test(navigator.userAgent)) printClass = 'ie-print';\r\n else if (/Firefox/.test(navigator.userAgent)) printClass = 'firefox-print';\r\n\r\n if (printClass != '') {\r\n angular.element('body').addClass(printClass);\r\n }\r\n }(\r\n (function () {\r\n const afterPrint = function () {\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768)\r\n || (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n // tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\r\n $('.duke-chart-container').css('width', '100%');\r\n $('.duke-chart-container').css('max-width', '100%');\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 1000;\r\n chart_selector.swidget().refresh();\r\n }\r\n };\r\n\r\n if ($window.matchMedia) {\r\n const mediaQueryList = $window.matchMedia('print');\r\n mediaQueryList.addListener((mql) => {\r\n if (!mql.matches) {\r\n afterPrint();\r\n }\r\n });\r\n }\r\n $window.onafterprint = afterPrint;\r\n\r\n const _print = $window.print;\r\n $window.print = function () {\r\n $scope.innerWidth = $window.innerWidth;\r\n $('.duke-chart-container')\r\n .css('width', '100%')\r\n .css('max-width', '100%');\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768)\r\n || (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n // tablet resolutions\r\n $('.duke-chart-container')\r\n .css('width', '100%')\r\n .css('max-width', '100%');\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 0;\r\n chart_selector.swidget().refresh();\r\n setTimeout(() => {\r\n _print();\r\n }, 500);\r\n } else {\r\n _print();\r\n }\r\n angular.element('.print-button').blur();\r\n };\r\n }()),\r\n ));\r\n\r\n $scope.printPage = function () {\r\n pushAnalytics('Print Page');\r\n $window.print();\r\n };\r\n /* END PRINT FUNCTIONALITY */\r\n\r\n $scope.exportData = function () {\r\n pushAnalytics('Export Data');\r\n\r\n saveTextAs(exportData, `${exportFilename}.csv`);\r\n angular.element('.export-button').blur();\r\n };\r\n\r\n const getExportData = function () {\r\n let dateValue;\r\n if ($scope.newCalendar) {\r\n dateValue = formatedDate($scope.forms.usageAnalysis.data.date)\r\n ? formatedDate($scope.forms.usageAnalysis.data.date)\r\n : today;\r\n } else {\r\n dateValue = $scope.forms.usageAnalysis.date.$viewValue\r\n ? $scope.forms.usageAnalysis.date.$viewValue\r\n : today;\r\n }\r\n\r\n const chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: dateValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n };\r\n\r\n $http({\r\n method: 'POST',\r\n url: export_url,\r\n data: chartObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((data, status, headers, config) => {\r\n if (data) {\r\n exportFilename = 'EnergyUsageExport';\r\n exportData = data.data;\r\n // saveTextAs(data, filename + \".csv\");\r\n }\r\n })\r\n .catch((data, status, headers, config) => {\r\n // handle error\r\n });\r\n };\r\n\r\n $scope.exportXML = function () {\r\n pushAnalytics('Download My Data XML');\r\n saveTextAs(grExportData, `${grExportFilename}.xml`);\r\n angular.element('.duke-gr-btn').blur();\r\n };\r\n\r\n const getExportXML = function () {\r\n\r\n const grChartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\r\n };\r\n\r\n $http({\r\n method: 'POST',\r\n url: grexport_url,\r\n data: grChartObj,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n .then((data, status, headers, config) => {\r\n if (data.data != \"\" && data.data != null && data.data != \"Unexpected Failure\") {\r\n grExportFilename = 'DownloadMyData';\r\n grExportData = data.data;\r\n $scope.grLoaded = true;\r\n } else {\r\n $scope.grError = true;\r\n }\r\n })\r\n .catch((data, status, headers, config) => {\r\n // handle error\r\n });\r\n }\r\n\r\n let pushAnalytics = function (dataLabel) {\r\n const dataActionTag = `${$scope.meterTag} - ${angular\r\n .element('div#graph > button > span')\r\n .text()} - ${angular\r\n .element('.shared-calendar > div.date-area > input')\r\n .val()} - ${angular.element('div#period > button > span').text()}`;\r\n\r\n let eventTag = 'usage-analysis-export-data';\r\n if (dataLabel == 'Print Page') eventTag = 'usage-analysis-print-page';\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-action': dataActionTag,\r\n 'data-label': dataLabel,\r\n event: eventTag,\r\n });\r\n };\r\n\r\n const updateTableX = function (response) {\r\n if (response.data.Status == 'OK') {\r\n $scope.usage_table = response.data.Data;\r\n } else if (response.data.Status == 'ERROR') {\r\n $scope.error_message = response.data.ErrorMsg;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n const updateChartX = function (response) {\r\n if ($scope.toPreviousDate && !$scope.newCalendar) {\r\n angular.element('.shared-calendar > div.date-area > input')[0].value = $scope.forms.usageAnalysis.date.$viewValue;\r\n }\r\n\r\n enableSelectors();\r\n // if(!(isHourly && isDayPeriod))\r\n getExportData();\r\n if ($scope.grexport === true) {\r\n getExportXML();\r\n }\r\n \r\n\r\n if (response.data.Status == 'OK') {\r\n // $scope.analytics = { chartType: \"Smart Meter\" };\r\n // $scope.analytics.chartType = $scope.analytics.chartType + response.data.DataLabelInfo;\r\n // pushAnalytics($scope.analytics.chartType);\r\n\r\n if (DailyAvgWeekException) response.data.temperatures = [];\r\n\r\n getDataGraph(response.data);\r\n } else if (response.data.Status == 'ERROR') {\r\n $scope.error_message = response.data.ErrorMsg;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n let getDataGraph = function (data) {\r\n if (data.meterData.Electric && data.meterData.Gas) {\r\n $scope.table_type = 'all';\r\n getAllMeter(data);\r\n return;\r\n }\r\n\r\n if (data.meterData.Electric) {\r\n $scope.table_type = 'electric';\r\n getElectricMeter(data);\r\n return;\r\n }\r\n\r\n if (data.meterData.Gas) {\r\n $scope.table_type = 'gas';\r\n getGasMeter(data);\r\n return;\r\n }\r\n\r\n if (!data.meterData.Electric && !data.meterData.Gas) {\r\n $scope.loaded = true;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n let getAllMeter = function () {\r\n getErrorPanel();\r\n };\r\n\r\n let getElectricMeter = function (newData) {\r\n const electricdata = {\r\n dataSeries: [\r\n {\r\n axisY: 0,\r\n collectionAlias: 'ELECTRIC',\r\n data: newData.meterData.Electric,\r\n color: '#54B848',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 2,\r\n collectionAlias: 'AVERAGE',\r\n color: 'gray',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 1,\r\n collectionAlias: 'TEMPERATURE',\r\n data: newData.temperatures,\r\n color: 'green',\r\n zIndex: 9,\r\n },\r\n ],\r\n labels: newData.labels,\r\n average: newData.average,\r\n chartTitle: newData.chartTitle,\r\n chartMessage: newData.chartMessage,\r\n chartFooter: newData.chartFooter,\r\n leftText: newData.unitOfMeasure1,\r\n rightText: newData.unitOfMeasure2,\r\n };\r\n\r\n if (\r\n !newData.temperatures\r\n || (newData.temperatures && !(newData.temperatures.length > 0))\r\n ) {\r\n const index = _.indexOf(\r\n electricdata.dataSeries,\r\n _.find(electricdata.dataSeries, 'collectionAlias', 'TEMPERATURE'),\r\n );\r\n electricdata.dataSeries.splice(index, 1);\r\n }\r\n\r\n updateChart(electricdata);\r\n };\r\n\r\n let getGasMeter = function (newData) {\r\n const gasdata = {\r\n dataSeries: [\r\n {\r\n axisY: 0,\r\n collectionAlias: 'GAS',\r\n data: newData.meterData.Gas,\r\n color: '#52B0F0',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 2,\r\n collectionAlias: 'AVERAGE',\r\n color: 'gray',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 1,\r\n collectionAlias: 'TEMPERATURE',\r\n data: newData.temperatures,\r\n color: 'green',\r\n zIndex: 9,\r\n },\r\n ],\r\n labels: newData.labels,\r\n average: newData.average,\r\n chartTitle: newData.chartTitle,\r\n chartMessage: newData.chartMessage,\r\n chartFooter: newData.chartFooter,\r\n leftText: newData.unitOfMeasure1,\r\n rightText: newData.unitOfMeasure2,\r\n };\r\n\r\n if (!newData.temperatures) {\r\n const index = _.indexOf(\r\n gasdata.dataSeries,\r\n _.find(gasdata.dataSeries, 'collectionAlias', 'TEMPERATURE'),\r\n );\r\n gasdata.dataSeries.splice(index, 1);\r\n }\r\n\r\n updateChart(gasdata);\r\n };\r\n\r\n let getErrorPanel = function () {\r\n const data_label_error = `Error: ${$scope.error_message}`;\r\n enableSelectors();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis_error',\r\n 'data-label': 'Usage Analysis',\r\n 'data-action': data_label_error,\r\n event: 'usage-analysis-error-message',\r\n });\r\n if ($scope.error_message == '' || !$scope.error_message) {\r\n $scope.error_message = $scope.error_message_default;\r\n }\r\n $scope.errorPanel = true;\r\n };\r\n\r\n let updateChart = function (newData) {\r\n const timeOut = 600;\r\n usageData.axisX.categoricalValues = newData.labels;\r\n usageData.axisY[0].plotLines[0].start = newData.average;\r\n usageData.axisY[0].title.text = newData.leftText;\r\n usageData.axisY[1].title.text = newData.rightText;\r\n usageData.dataSeries = newData.dataSeries;\r\n\r\n $scope.chart.title = newData.chartTitle;\r\n $scope.chart.message = newData.chartMessage;\r\n $scope.chart.footer = newData.chartFooter;\r\n\r\n const widget = chart_selector.swidget();\r\n\r\n if ($scope.errorPanel) {\r\n $timeout(() => {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.shieldChart(usageData);\r\n }, timeOut);\r\n } else {\r\n $timeout(() => {\r\n if (widget) {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n widget.refresh(usageData);\r\n } else {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.shieldChart(usageData);\r\n }\r\n\r\n const testFunction = function () {\r\n chart_selector.swidget().refresh();\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.swidget().refresh();\r\n };\r\n\r\n $timeout(() => {\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 1000;\r\n testFunction();\r\n }, 600);\r\n }, timeOut);\r\n }\r\n };\r\n\r\n let usageData = {\r\n chartLegend: {\r\n enable: false,\r\n },\r\n theme: 'bootstrap',\r\n exportOptions: {\r\n image: true,\r\n print: true,\r\n },\r\n events: {\r\n legendSeriesClick(e) {\r\n // stop the series item click event, so that\r\n // user clicks do not toggle visibility of the serie\r\n e.preventDefault();\r\n },\r\n },\r\n tooltipSettings: {\r\n chartBound: true,\r\n },\r\n primaryHeader: {\r\n text: '',\r\n },\r\n axisX: {\r\n categoricalValues: [],\r\n },\r\n axisY: [\r\n {\r\n plotLines: [\r\n {\r\n start: 100,\r\n zIndex: 5,\r\n drawWidth: 2,\r\n drawColor: 'gray',\r\n label: {\r\n style: {\r\n color: 'gray',\r\n },\r\n },\r\n },\r\n ],\r\n title: {\r\n enable: false,\r\n text: 'kWh',\r\n enale: false,\r\n ontWeight: 'bold',\r\n style: {\r\n color: '#696969',\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n {\r\n title: {\r\n enable: false,\r\n text: 'CCF',\r\n textAngle: 270,\r\n fontWeight: 'bold',\r\n style: {\r\n color: '#696969',\r\n fontSize: '14px',\r\n },\r\n },\r\n swapLocation: true,\r\n },\r\n {\r\n axisTickText: {\r\n enabled: false,\r\n },\r\n min: 0,\r\n },\r\n {\r\n axisTickText: {\r\n enabled: false,\r\n },\r\n min: 0,\r\n },\r\n ],\r\n seriesSettings: {\r\n line: {\r\n dataPointText: {\r\n enabled: true,\r\n borderColor: 'green',\r\n borderWidth: 1,\r\n y: 10,\r\n borderRadius: 500,\r\n padding: 5,\r\n backgroundColor: '#FFF',\r\n style: 'font-size: 11px',\r\n },\r\n applyAnimation: {\r\n duration: 0,\r\n },\r\n },\r\n bar: {\r\n applyAnimation: {\r\n duration: 1000,\r\n },\r\n },\r\n },\r\n plotLines: [\r\n {\r\n start: 100,\r\n drawWidth: 2,\r\n drawColor: '#C90515',\r\n zIndex: 2,\r\n },\r\n ],\r\n };\r\n\r\n const updateGraphFilters = function (item) {\r\n $scope.graph_items = item.graphItems;\r\n };\r\n $scope.updatePeriodFilters = function (item) {\r\n updatePeriodFilters(item);\r\n };\r\n $scope.updateGraphFilters = function (item) {\r\n updateGraphFilters(item);\r\n };\r\n\r\n const findSelected = function (items) {\r\n if (\r\n _.find(items, {\r\n selected: true,\r\n })\r\n ) {\r\n return _.find(items, {\r\n selected: true,\r\n });\r\n }\r\n items[0].selected = true;\r\n return items[0];\r\n };\r\n\r\n const disableSelectors = function () {\r\n const selectors = angular.element(\r\n '.data-selector input, .data-selector button',\r\n );\r\n selectors.attr('disabled', 'disabled');\r\n selectors.css('opacity', '.7');\r\n };\r\n\r\n let enableSelectors = function () {\r\n const selectors = angular.element(\r\n '.data-selector input, .data-selector button',\r\n );\r\n selectors.removeAttr('disabled');\r\n selectors.css('opacity', '1');\r\n };\r\n let updateSelectors = function (item, extra) {\r\n if (extra === 'Meter') {\r\n updateGraphFilters(item);\r\n $scope.start_date = item.CalendarStartDate;\r\n $scope.end_date = item.CalendarEndDate;\r\n // $scope.start_date = \"10/15/2016\";\r\n // $scope.end_date = \"10/15/2018\";\r\n $scope.original_end_date = $scope.end_date;\r\n $scope.current_date = item.CalendarCurrentDate;\r\n updateSelectors(findSelected(item.graphItems), 'Graph');\r\n return;\r\n }\r\n\r\n if (extra === 'Graph') {\r\n graphText = item.text;\r\n updatePeriodFilters(item);\r\n $timeout(() => {\r\n $scope.updateOnlyChart();\r\n }, 500);\r\n }\r\n };\r\n\r\n $scope.interactGraph = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n isHourly = item.value.toLowerCase().indexOf('hourly') > -1;\r\n\r\n dropdownInteraction = 'Graph';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Graph',\r\n 'data-action': item.text,\r\n event: 'usage-analysis-graph-change',\r\n });\r\n graphText = item.text;\r\n changedGraph = true;\r\n updatePeriodFilters(item);\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n $scope.interactDate = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n // Google Analytics\r\n $scope.toPreviousDate = false;\r\n if (isHourly && isDayPeriod) fetchPreviousDay();\r\n\r\n let dateForAction;\r\n if ($scope.newCalendar) dateForAction = formatedDate($scope.forms.usageAnalysis.data.date);\r\n else {\r\n dateForAction = $scope.forms.usageAnalysis.date.$modelValue\r\n ? $scope.forms.usageAnalysis.date.$modelValue\r\n : $scope.forms.usageAnalysis.date.$viewValue;\r\n }\r\n // console.log(\"new date is \"+dateForAction);\r\n\r\n dropdownInteraction = 'Date';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Date',\r\n 'data-action': dateForAction,\r\n event: 'usage-analysis-date-change',\r\n });\r\n // $scope.interactPeriod();\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n let fetchPreviousDay = function () {\r\n let yesterday;\r\n\r\n if ($scope.newCalendar) {\r\n hourlyDayTriggered = true;\r\n\r\n yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n $scope.end_date = formatedDate(yesterday);\r\n\r\n if (formatedDate($scope.forms.usageAnalysis.data.date) == today) {\r\n $scope.toPreviousDate = true;\r\n $scope.forms.usageAnalysis.data.date = new Date(\r\n $scope.forms.usageAnalysis.data.date.getFullYear(),\r\n $scope.forms.usageAnalysis.data.date.getMonth(),\r\n $scope.forms.usageAnalysis.data.date.getDate() - 1,\r\n );\r\n }\r\n } else if (\r\n $scope.forms.usageAnalysis.date.$modelValue == today\r\n && $scope.forms.usageAnalysis.date.$viewValue == today\r\n ) {\r\n yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n\r\n const temp = new Date();\r\n temp.setDate(temp.getDate() - 1);\r\n\r\n yesterday = formatedDate(yesterday);\r\n $scope.forms.usageAnalysis.date.$modelValue == today\r\n ? (($scope.forms.usageAnalysis.date.$modelValue = yesterday),\r\n ($scope.toPreviousDate = true))\r\n : $scope.forms.usageAnalysis.date.$modelValue;\r\n $scope.forms.usageAnalysis.date.$viewValue == today\r\n ? (($scope.forms.usageAnalysis.date.$viewValue = yesterday),\r\n ($scope.toPreviousDate = true))\r\n : $scope.forms.usageAnalysis.date.$viewValu;\r\n angular\r\n .element('.shared-calendar > div.date-area > input')\r\n .scope()\r\n .changeCalendarPointer(\r\n temp.getFullYear(),\r\n temp.getMonth(),\r\n temp.getDate(),\r\n );\r\n }\r\n };\r\n\r\n let triggerCalendarValidation = function () {\r\n if (hourlyDayTriggered) {\r\n $scope.end_date = formatedDate(new Date());\r\n if (!isNaN(Date.parse($('.md-datepicker-input').val()))) {\r\n const inputDate = $('.md-datepicker-input')\r\n .val()\r\n .split(' / ');\r\n $scope.forms.usageAnalysis.data.date = new Date(\r\n inputDate[2],\r\n inputDate[0] - 1,\r\n inputDate[1],\r\n );\r\n }\r\n }\r\n\r\n hourlyDayTriggered = false;\r\n };\r\n\r\n $scope.interactPeriod = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n isDayPeriod = item.value.toLowerCase().indexOf('day') > -1;\r\n\r\n if (isHourly && isDayPeriod) fetchPreviousDay();\r\n\r\n dropdownInteraction = 'Period';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Period',\r\n 'data-action': item.text,\r\n event: 'usage-analysis-period-change',\r\n });\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n $scope.updateOnlyChart = function (item) {\r\n disableSelectors();\r\n $scope.loaded = false;\r\n $scope.errorPanel = false;\r\n let chartObj;\r\n if ($scope.newCalendar) {\r\n if (changedGraph) {\r\n chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: newPeriodValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n\r\n changedGraph = false;\r\n } else {\r\n chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n }\r\n } else if (changedGraph) {\r\n chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: $scope.forms.usageAnalysis.date.$viewValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: newPeriodValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n\r\n changedGraph = false;\r\n } else {\r\n chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: $scope.forms.usageAnalysis.date.$viewValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n }\r\n\r\n DailyAvgWeekException = false;\r\n if (chartObj.Graph == 'DailyEnergy' && chartObj.BillingFrequency == 'Week') DailyAvgWeekException = true;\r\n\r\n $http\r\n .post(api_url_graph, chartObj, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(updateChartX, updateChartX);\r\n };\r\n\r\n let updatePeriodFilters = function (item) {\r\n newPeriodValue = item.periodItems[0].value;\r\n\r\n for (let i = 0; i < item.periodItems.length; i++) {\r\n item.periodItems[i].selected = true;\r\n if (i > 0) item.periodItems[i].selected = false;\r\n }\r\n\r\n $scope.period_items = item.periodItems;\r\n };\r\n\r\n $scope.changeDateFormat = function (billDate) {\r\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\r\n };\r\n\r\n // $scope.submitForm = function (url, billDate) {\r\n // billDate = billDate.replace(/(..).(..).(....)/, \"$3-$1-$2\");\r\n // console.log(billDate);\r\n // var param = [{ 'ActionType': 'ViewBill' }, { 'Billdate': billDate }];\r\n // submitPostCall(url, param);\r\n // }\r\n\r\n // function submitPostCall(url, params) {\r\n // var form = document.createElement(\"form\");\r\n // form.setAttribute(\"method\", \"post\");\r\n // form.setAttribute(\"action\", url);\r\n\r\n // for (var element = 0; element < params.length; element++) {\r\n // var temp = params[element];\r\n // for (var i in temp) {\r\n // if (temp.hasOwnProperty(i)) {\r\n // var input = document.createElement('input');\r\n // input.type = 'hidden';\r\n // input.name = i;\r\n // input.value = temp[i];\r\n // form.appendChild(input);\r\n // }\r\n // }\r\n // }\r\n\r\n // document.body.appendChild(form);\r\n // form.submit();\r\n // document.body.removeChild(form);\r\n // }\r\n\r\n $scope.initSelectors = function (item) {\r\n $timeout(() => {\r\n $scope.onMeterChange(item);\r\n }, 1300);\r\n };\r\n\r\n $scope.onMeterChange = function (item, analytics_value) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n dropdownInteraction = 'Meter';\r\n const meterDataAction = item.text.split('-');\r\n $scope.meterTag = $.trim(meterDataAction[0]);\r\n // Google Analytics\r\n if (!meterLoaded) {\r\n meterLoaded = true;\r\n let gasType = '';\r\n let electricType = '';\r\n\r\n if (\r\n typeof angular.element('#trackinginfo').attr('gas')\r\n !== typeof undefined\r\n && angular.element('#trackinginfo').attr('gas') !== false\r\n ) gasType = 'gas';\r\n\r\n if (\r\n typeof angular.element('#trackinginfo').attr('electric')\r\n !== typeof undefined\r\n && angular.element('#trackinginfo').attr('electric') !== false\r\n ) electricType = 'electric';\r\n\r\n let dataAction = '';\r\n if (gasType != '' && electricType != '') dataAction = `${gasType} ${electricType}`;\r\n else dataAction = gasType + electricType;\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'ServiceType',\r\n serviceType: dataAction,\r\n event: 'usage-analysis-web-service',\r\n });\r\n } else {\r\n // console.log(\"new analytics: \" + angular.element('#trackinginfo').attr('gas'));\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Meter',\r\n 'data-action': $scope.meterTag,\r\n event: 'usage-analysis-meter-change',\r\n });\r\n }\r\n\r\n $scope.meter_certified = item.certified;\r\n\r\n // update table\r\n $scope.loaded = false;\r\n const tableObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n };\r\n $http\r\n .post(api_url_table, tableObj, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(updateTableX, getErrorPanel);\r\n updateSelectors(item, 'Meter');\r\n };\r\n\r\n $scope.adjustTableMobile = function () {\r\n if ($scope.maxHeightChanged) $scope.maxHeightChanged = false;\r\n else $scope.maxHeightChanged = true;\r\n };\r\n}\r\n\r\nusageAnalysisControllerTest.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n];\r\napp.controller('usageAnalysisControllerTest', usageAnalysisControllerTest);\r\n","\r\n/*\r\n * Angular controller\r\n * EqualPaymentPlanController manage a carousel with slides component\r\n * \r\n */\r\n\r\nfunction EqualPaymentPlanController($scope, $window, $rootScope, $templateCache, $element) {\r\n $scope.analytics = {\r\n value: \"\"\r\n }\r\n $scope.submitForm = function ($event, form_controller) {\r\n if (form_controller.$invalid) {\r\n $event.preventDefault();\r\n angular.forEach(form_controller.$error, function (field) {\r\n angular.forEach(field, function (errorField) {\r\n errorField.$setTouched();\r\n })\r\n });\r\n return false;\r\n }\r\n };\r\n\r\n $scope.closeModal = function ($element) {\r\n angular.element(\".modal\").modal(\"hide\");\r\n };\r\n\r\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\r\n $element.find(\".cancel-btn\").blur();\r\n });\r\n\r\n\r\n $scope.radioselected = function (value) {\r\n $scope.analytics.value = value;\r\n }\r\n};\r\n\r\nEqualPaymentPlanController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element'];\r\napp.controller('EqualPaymentPlanController', EqualPaymentPlanController);\r\n","const shortCopyOffersCtrl = ($scope, $http, myAccountFactory) => {\r\n\r\n $scope.features = [];\r\n\r\n myAccountFactory\r\n .getJsonParams('/api/ShortCopy/GetVendors', {})\r\n .then((response) => {\r\n $scope.features = response.data;\r\n console.log($scope.features);\r\n console.log(response);\r\n })\r\n .catch((reason) => {});\r\n}\r\nshortCopyOffersCtrl.$inject = ['$scope', '$http', 'myAccountFactory'];\r\napp.controller('shortCopyOffersCtrl', shortCopyOffersCtrl);","app.controller('FPPdfTest', FPPdfTest);\r\nFPPdfTest.$inject = ['$scope', 'apiConfigService', 'assetService','FPServiceOrdersFactory', 'FPSitecoreServices', 'commonService', 'FPDataModelsDTOService', 'FPAddendumService', 'FPPdfServiceOrder'];\r\n\r\nfunction FPPdfTest($scope, apiConfigService, assetService, serviceOrdersFactory, sitecoreServices, commonService, dtoService, addendumService, pdfServiceOrder) {\r\n /**\r\n * Scope Vars\r\n */\r\n let vm = this;\r\n let _url = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n // SERVICE REQUEST\r\n vm.serviceOrder = '{\"assignedOtherTechnician\":\"Technician Name\",\"assignedTechnician\":{\"badgeNumber\":\"\",\"cdpId\":\"SP1542290102188\",\"name\":\"Jamie Martinez\",\"phone\":\"303020404\"},\"cancelledReason\":{\"cancelReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"contactName\":\"Contact Name Test\",\"contractorInvoiceNumber\":\"00054\",\"createdDate\":\"2018-11-27T20:44:59-05:00\",\"customer\":{\"alternatePhone\":\"2021234567\",\"name\":\"Phil T Phillips\",\"primaryEmailAddress\":\"demo@example.com\",\"primaryPhone\":\"2024843959\",\"firstName\":\"\",\"lastName\":\"\",\"middleName\":\"\"},\"customerContactHistory\":{\"contactComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"firstAttemptDate\":\"2018-11-30T08:00-05:00\",\"noOfContactAttempts\":4,\"surveyReceivedByCustomer\":true,\"customerPreferredSurveyOption\":\"\"},\"customerContactPreferences\":{\"bestTimeToCallEnd\":\"12:00 PM\",\"bestTimeToCallStart\":\"8:00 AM\",\"notifyCustomerWhenInRoute\":true,\"preferredEmailAddress\":\"test@testemail.com\"},\"declinedReason\":{\"declineReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"dukeInvoiceNumber\":\"\",\"isRushOrder\":true,\"multipleTechnicianRequired\":true,\"orderCostTimeDetails\":{\"entitlementLaborCost\":{\"value\":0},\"entitlementLaborHours\":5,\"laborCostNotCovered\":{\"value\":10,\"currencyIso\":\"\",\"formattedValue\":\"$ 10\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"partsCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"partsCostNotCovered\":{\"value\":15,\"currencyIso\":\"\",\"formattedValue\":\"$ 15\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"regularLaborCost\":{\"value\":10, \"formattedValue\": \"$ 10\"},\"regularLaborHours\":10,\"totalDueFromCustomer\":{\"value\":150,\"currencyIso\":\"\",\"formattedValue\":\"$ 150\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalLaborCost\":{\"value\":200,\"currencyIso\":\"\",\"formattedValue\":\"$ 200\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalLaborPartsCoveredCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"tripFee\":{\"value\":120,\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"entitlementlaborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":120},\"laborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 30\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":30},\"materialCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 15\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":15},\"regularLabourCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 40\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":40},\"totalOrderCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 300\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":300}},\"program\":\"Contractor Network - Clermont & Winter Garden\",\"programAnnualCoverageLimit\":{\"value\":10,\"currencyIso\":\"\",\"formattedValue\":\"$ 10\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"programEntitlementBalance\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"repairType\":{\"code\":\"\",\"name\":\"Repair Type Name\"},\"rescheduledEndDate\":\"\",\"rescheduledStartDate\":\"\",\"resolutionDetails\":{\"resolutionDate\":\"2018-12-14T00:00-05:00\",\"resolutionType\":{\"code\":\"REPAIR\",\"name\":\"Repair\"}},\"returnTripRequired\":true,\"scheduledEndDate\":\"2018-12-20T08:30-05:00\",\"scheduledStartDate\":\"2018-12-20T08:00-05:00\",\"serviceAddress\":{\"city\":\"Orlando\",\"county\":\"United States\",\"directions\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"jurisdiction\":\"DEF\",\"line1\":\"321 1st Street\",\"line2\":\"\",\"meterNumber\":[{\"meterId\":\"005643101\"}],\"postalCode\":\"32824\",\"state\":\"FL\",\"subDivision\":\"Sub Division test\",\"countryIso\":\"US\"},\"serviceComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"serviceOrderBalance\":{\"value\":100,\"currencyIso\":\"\",\"formattedValue\":\"$ 100\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"serviceOrderId\":\"70001023\",\"soStatus\":\"COMPLETED\",\"soType\":\"CONTRACTOR_NETWORK\",\"woorSR\":\"SERVICE REQUEST\",\"descriptionOfWorkQtyParts\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"descriptionOfWorkQtyPartsCovered\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"descriptionOfWorkQtyPartsNonCovered\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"equipmentDetails\":{\"deviceName\":\"\",\"deviceOperational\":\"\",\"deviceSerialNumber\":\"\",\"replacementDeviceName\":\"\",\"replacementDeviceSerialNo\":\"\",\"replacementNeeded\":\"\"},\"groundingDetails\":{\"groundingRepairsNeeded\":\"\",\"singlePointGrounding\":\"\"},\"kvDatas\":{\"kvDataList\":[{\"name\":\"\",\"value\":\"\"}]},\"regularLaborHours\":\"\",\"soDbStatus\":\"\",\"soTypeName\":\"CONTRACTOR NETWORK\",\"soStatusName\":\"Completed\",\"programCode\":\"ECN-Clermont&WinterGarden\"}';\r\n // WORK ORDER\r\n //vm.serviceOrder = '{\"assignedOtherTechnician\":\"Technician Name\",\"assignedTechnician\":{\"badgeNumber\":\"\",\"cdpId\":\"SP1542290102188\",\"name\":\"Jamie Martinez\",\"phone\":\"303020404\"},\"cancelledReason\":{\"cancelReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"contactName\":\"\",\"contractorInvoiceNumber\":\"00058\",\"createdDate\":\"2018-11-27T21:56:40-05:00\",\"customer\":{\"alternatePhone\":\"2345678901\",\"name\":\"BETTY NULL NICHOLS\",\"primaryEmailAddress\":\"demo@example.com\",\"primaryPhone\":\"1234567890\",\"firstName\":\"\",\"lastName\":\"\",\"middleName\":\"\"},\"customerContactHistory\":{\"contactComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"firstAttemptDate\":\"2018-11-05T08:15:30-05:00\",\"noOfContactAttempts\":4,\"surveyReceivedByCustomer\":false,\"customerPreferredSurveyOption\":\"\"},\"customerContactPreferences\":{\"bestTimeToCallEnd\":\"12:00 PM\",\"bestTimeToCallStart\":\"8:00 AM\",\"notifyCustomerWhenInRoute\":false,\"preferredEmailAddress\":\"\"},\"declinedReason\":{\"declineReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"descriptionOfWorkQtyParts\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"dukeInvoiceNumber\":\"\",\"equipmentDetails\":{\"deviceName\":\"PEMCO LP SS320-LB25\",\"deviceOperational\":false,\"deviceSerialNumber\":\"\",\"replacementDeviceName\":\"\",\"replacementDeviceSerialNo\":\"\",\"replacementNeeded\":false},\"groundingDetails\":{\"groundingRepairsNeeded\":false,\"singlePointGrounding\":false},\"isRushOrder\":false,\"multipleTechnicianRequired\":false,\"orderCostTimeDetails\":{\"entitlementLaborHours\":0,\"laborCost\":{\"value\":20,\"currencyIso\":\"\",\"formattedValue\":\"$ 20\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"materialCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"regularLaborHours\":0,\"totalLaborCost\":{\"value\":0,\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalOrderCost\":{\"value\":0,\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"tripFee\":{\"value\":120,\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"entitlementlaborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"laborCostNotCovered\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 150\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"150\"},\"partsCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"partsCostNotCovered\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"regularLabourCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"totalDueFromCustomer\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"totalLaborPartsCoveredCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 200\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"200\"}},\"program\":\"Surge Protection\",\"rescheduledEndDate\":\"\",\"rescheduledStartDate\":\"\",\"resolutionDetails\":{\"resolutionDate\":\"\",\"resolutionType\":\"\"},\"returnTripRequired\":false,\"scheduledEndDate\":\"2018-11-05T08:15:30-05:00\",\"scheduledStartDate\":\"2018-11-05T08:15:30-05:00\",\"serviceAddress\":{\"city\":\"ANDERSON\",\"county\":\"\",\"directions\":\"\",\"jurisdiction\":\"DEC\",\"line1\":\"\",\"line2\":\"\",\"postalCode\":\"29625\",\"state\":\"SC\",\"subDivision\":\"Tryon Suites\",\"countryIso\":\"\",\"meterNumber\":\"\"},\"serviceComments\":\"Test Service Comments\",\"serviceOrderId\":\"80001093\",\"soStatus\":\"SCHEDULED\",\"soType\":\"INSTALLATION\",\"woorSR\":\"WORK ORDER\",\"descriptionOfWorkQtyPartsCovered\":\"\",\"descriptionOfWorkQtyPartsNonCovered\":\"\",\"kvDatas\":{\"kvDataList\":[{\"name\":\"\",\"value\":\"\"}]},\"regularLaborHours\":\"\",\"programAnnualCoverageLimit\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"programEntitlementBalance\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"repairType\":\"\",\"serviceOrderBalance\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"soDbStatus\":\"\",\"soTypeName\":\"INSTALLATION\",\"soStatusName\":\"Scheduled\",\"programCode\":\"PQ\"}';\r\n /**\r\n * Function Declarations\r\n */\r\n vm.openPdf = openPdf;\r\n\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function openPdf() {\r\n pdfServiceOrder.open(JSON.parse(vm.serviceOrder));\r\n }\r\n \r\n\r\n /* function load(){\r\n _url = apiConfigService.testServiceOrderUrl();\r\n\r\n var promises = [getServiceOrders()];\r\n\r\n commonService.executePromises(promises)\r\n .then(function(){\r\n vm.loaded = true; \r\n });\r\n\r\n function getServiceOrders(){\r\n return serviceOrdersFactory.getServiceOrders(_url)\r\n .then(\r\n function (result) {\r\n \r\n if (result.data.serviceOrders) {\r\n vm.serviceOrder = result.data.serviceOrders[0];\r\n }\r\n },\r\n function (error) {\r\n sitecoreServices.logException(error);\r\n });\r\n }; \r\n };\r\n\r\n \r\n\r\n /**\r\n * Initialization\r\n */\r\n /* var init = function(){\r\n load();\r\n };\r\n\r\n init(); */\r\n}","function kubraIframeController($http, $scope, $element, $timeout) {\r\n let vm = this;\r\n vm.setFormValues;\r\n vm.success = false;\r\n vm.xmlBlob = '';\r\n vm.url = '';\r\n\r\n vm.processForm = processForm;\r\n\r\n let urlFlag,\r\n xmlFlag = false;\r\n\r\n $scope.$watchGroup(\r\n [\r\n function() {\r\n return vm.xmlBlob;\r\n },\r\n function() {\r\n return vm.url;\r\n },\r\n ],\r\n function(newValues, oldValues) {\r\n if (newValues[0] && newValues[1]) {\r\n //check for changes in both values\r\n //$timeout( function (){//wait for $digest cycle to finish\r\n // //$element.find('form').submit();\r\n // angular.element('.submitButton').trigger('click');\r\n //});\r\n $timeout(function() {\r\n $element.find('form').submit();\r\n }, 0);\r\n }\r\n },\r\n );\r\n\r\n $timeout(function() {\r\n $element.find('form').submit();\r\n }, 0);\r\n\r\n function processForm() {\r\n if (vm.url != '')\r\n $http({\r\n url: vm.url,\r\n method: 'POST',\r\n data: vm.xmlBlob,\r\n headers: {\r\n 'Content-Type': 'text/xml',\r\n },\r\n }).then(\r\n function(response) {\r\n vm.success = true;\r\n },\r\n function(response) {},\r\n );\r\n }\r\n}\r\nkubraIframeController.$inject[('$http', '$scope', '$element', '$timeout')];\r\napp.controller('kubraIframeController', kubraIframeController);\r\n","/*\r\n * Angular controller\r\n * Create Profile Controller\r\n *\r\n */\r\n\r\nfunction manageProfileController(\r\n $scope,\r\n $window,\r\n $rootScope,\r\n $templateCache,\r\n $controller,\r\n $element,\r\n $http,\r\n $timeout,\r\n $compile,\r\n) {\r\n $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';\r\n\r\n $scope.invalidEmail = true;\r\n $scope.loadingSpinner = false;\r\n $scope.alreadyVerified = false;\r\n $scope.confirmAnalytic = '';\r\n\r\n let emailChanged = false;\r\n\r\n $scope.$watch('ChangeEmailForm.data.emailAddress', (present, old) => {\r\n emailChanged = true;\r\n });\r\n const disableLink = function (option) {\r\n const link = $element.find('.accept-terms-registration .link');\r\n const conversion = $element.hasClass('conversion');\r\n\r\n if (option) {\r\n link.removeAttr('tabindex');\r\n } else {\r\n link.attr('tabindex', '0');\r\n }\r\n\r\n if (conversion) {\r\n $timeout(() => {\r\n $scope.confirmAnalytic = $element\r\n .find('.validation-confirm .help-label')\r\n .text();\r\n }, 1000);\r\n }\r\n };\r\n\r\n $scope.validateEmail = function (item) {\r\n if (emailChanged) {\r\n emailChanged = false;\r\n const model = $element.find(`#${item}`).controller('ngModel');\r\n if (model.$valid) {\r\n const dataObj = {\r\n email: model.$viewValue,\r\n };\r\n \r\n } else {\r\n $scope.invalidEmail = true;\r\n $scope.alreadyVerified = false;\r\n disableLink($scope.invalidEmail);\r\n }\r\n }\r\n };\r\n\r\n $scope.submitForm = function ($event, form_controller) {\r\n if (form_controller.$invalid) {\r\n $event.preventDefault();\r\n angular.forEach(form_controller.$error, (field) => {\r\n angular.forEach(field, (errorField) => {\r\n errorField.$setTouched();\r\n });\r\n });\r\n return false;\r\n }\r\n };\r\n}\r\nmanageProfileController.$inject = [\r\n '$scope',\r\n '$window',\r\n '$rootScope',\r\n '$templateCache',\r\n '$controller',\r\n '$element',\r\n '$http',\r\n '$timeout',\r\n '$compile',\r\n];\r\napp.controller('manageProfileController', manageProfileController);\r\n","/*\r\n * Angular controller\r\n * Create Profile Controller\r\n *\r\n */\r\n\r\nfunction multipleAccountsController(\r\n $scope,\r\n $window,\r\n $rootScope,\r\n $templateCache,\r\n $controller,\r\n $element,\r\n $http,\r\n $timeout,\r\n $compile,\r\n $filter,\r\n $q,\r\n) {\r\n let $moreInfoPane = null;\r\n const showMoreBtn = angular.element('button.more-info-label');\r\n const $el = $element;\r\n const orderBy = $filter('orderBy');\r\n const one = 1;\r\n const negOne = -1;\r\n const three = 3;\r\n const two = 2;\r\n const zero = 0;\r\n const ten = 10;\r\n const thirtyTwo = 32;\r\n const eleven = 11;\r\n let inputChangedPromise;\r\n $moreInfoPane = angular.element($el.find('.more-info-more'));\r\n $scope.accounts = [];\r\n $scope.pageChange = 0;\r\n $scope.disabled = true;\r\n $scope.reverse = false;\r\n $scope.filteredaccounts = [];\r\n $scope.groupedaccounts = [];\r\n $scope.accountsPerPage = 10;\r\n $scope.pagedAccounts = [];\r\n $scope.currentPage = 0;\r\n $scope.middle = 3;\r\n $scope.propertyName = '';\r\n $scope.pauseLoop = false;\r\n $scope.allDeferredPromises = [];\r\n const itemsCounted = {};\r\n itemsCounted.count = 0;\r\n\r\n $scope.setActive = (event) => {\r\n if (\r\n $(event.target)\r\n .parent()\r\n .hasClass('active')\r\n ) {\r\n $(event.target)\r\n .parent()\r\n .removeClass('active');\r\n } else {\r\n $(event.target)\r\n .parent()\r\n .addClass('active');\r\n }\r\n };\r\n\r\n const dueDateAndBalanceService = (dataObject) => {\r\n const deferred = $q.defer();\r\n const dataObj = dataObject || {};\r\n $scope.allDeferredPromises.push(deferred);\r\n $http({\r\n method: 'POST',\r\n url: '/api/MultipleAccountsTable/GetBalanceResponse',\r\n data: dataObj,\r\n headers: { 'Content-Type': 'application/json' },\r\n timeout: deferred.promise,\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((error) => {\r\n deferred.reject(error.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n const payNowService = (url, dataObject) => {\r\n const deferred = $q.defer();\r\n const dataObj = dataObject || {};\r\n $scope.allDeferredPromises.push(deferred);\r\n $http({\r\n method: 'POST',\r\n url,\r\n data: dataObj,\r\n headers: { 'Content-Type': 'application/json' },\r\n timeout: deferred.promise,\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((error) => {\r\n deferred.reject(error.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.setAccounts = (accounts) => {\r\n $scope.accounts = accounts;\r\n $scope.preSort = accounts;\r\n $scope.accounts[0].PrimaryAccount = true;\r\n $scope.sortBy('ServiceAddress');\r\n $scope.updatedAccounts = [];\r\n if (accounts === undefined) {\r\n $scope.errorText = 'AN ERROR HAS OCCURED';\r\n } else {\r\n $scope.errorText = 'There are no accounts matching your search. We recommend searching by typing an account number, nickname or address.';\r\n }\r\n };\r\n\r\n const getDataForFilteredAccounts = () => {\r\n $scope.pagedAccounts.forEach((page, index) => {\r\n getDueDateAndAmountDue(page);\r\n });\r\n };\r\n\r\n let getDueDateAndAmountDue = (currentPageAccounts) => {\r\n currentPageAccounts.forEach((element, index) => {\r\n const newElement = element;\r\n const dataObj = {\r\n srcsyscd: newElement.SrcSysCd,\r\n srcacctid: newElement.SrcAcctId,\r\n srcacctid2: newElement.SrcAcctId2,\r\n };\r\n if (!$scope.pauseLoop && element.Amount === undefined) {\r\n dueDateAndBalanceService(dataObj).then(\r\n (response) => {\r\n if (!$scope.pauseLoop) {\r\n const dueDateAndBill = response;\r\n const accountNumber = newElement.AccountNumber;\r\n delete newElement.AccountNumber;\r\n newElement.AccountNumber = accountNumber;\r\n newElement.DueDate = dueDateAndBill.DueDate;\r\n\r\n if (dueDateAndBill.ErrorCode !== null) {\r\n newElement.ErrorCode = dueDateAndBill.ErrorCode;\r\n }\r\n newElement.Amount = dueDateAndBill.Amount;\r\n\r\n displayDisabled();\r\n }\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n },\r\n );\r\n checkPayNowLinkValidity(dataObj, element);\r\n }\r\n displayDisabled();\r\n });\r\n };\r\n\r\n $scope.loadPayNowLink = (account) => {\r\n const dataObj = {\r\n srcsyscd: account.SrcSysCd,\r\n srcacctid: account.SrcAcctId,\r\n srcacctid2: account.SrcAcctId2,\r\n };\r\n $scope.allDeferredPromises.forEach((element) => {\r\n element.resolve('Cancelled!');\r\n });\r\n payNowService('/api/MultipleAccountsTable/PayNow', dataObj).then(\r\n (response) => {\r\n $window.location.href = response;\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n },\r\n );\r\n };\r\n\r\n let checkPayNowLinkValidity = (dataObj, element) => {\r\n const newElement = element;\r\n if (!$scope.pauseLoop) {\r\n payNowService('/api/MultipleAccountsTable/CheckPayNow', dataObj).then(\r\n (response) => {\r\n if (!$scope.pauseLoop) {\r\n newElement.ShowPayNow = response === 'True'\r\n ? true\r\n : response === 'False'\r\n ? false\r\n : response;\r\n }\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n },\r\n );\r\n }\r\n };\r\n\r\n const viewAccountService = (url, dataObject) => {\r\n const deferred = $q.defer();\r\n const dataObj = dataObject || {};\r\n\r\n $http({\r\n method: 'POST',\r\n url,\r\n data: dataObj,\r\n headers: { 'Content-Type': 'application/json' },\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((data) => {\r\n deferred.reject(data.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.viewAccount = (element) => {\r\n $scope.pauseLoop = true;\r\n $scope.allDeferredPromises.forEach((element) => {\r\n element.resolve('Cancelled!');\r\n });\r\n const dataObj = {\r\n srcsyscd: element.SrcSysCd,\r\n srcacctid: element.SrcAcctId,\r\n srcacctid2: element.SrcAcctId2,\r\n };\r\n $window.location.href = '/my-account/dashboard';\r\n };\r\n\r\n $scope.toggleMoreInfo = (toggleButton) => {\r\n toggleButton.preventDefault();\r\n const currentToggleButton = angular.element(toggleButton.currentTarget);\r\n currentToggleButton.attr('aria-pressed', 'true');\r\n\r\n if ($scope.currentShowMsg === $scope.showLessMsg) {\r\n $scope.showIcon = 'caret-arrow-down';\r\n $scope.currentShowMsg = $scope.showAllMsg;\r\n currentToggleButton.attr('aria-expanded', 'false');\r\n currentToggleButton.attr('aria-pressed', 'false');\r\n } else {\r\n $scope.showIcon = 'caret-arrow-up';\r\n $scope.currentShowMsg = $scope.showLessMsg;\r\n currentToggleButton.attr('aria-expanded', 'true');\r\n }\r\n $moreInfoPane.slideToggle();\r\n $scope.$watch('accounts', () => {\r\n if ($scope.accounts.length < eleven) {\r\n showMoreBtn.remove();\r\n } else if ($scope.accounts.length > eleven) {\r\n const moreElement = angular.element(\r\n '.auth.Manage-Profile.primary-account table.more',\r\n );\r\n $(moreElement).attr('style', 'margin-bottom: 13px !important');\r\n }\r\n });\r\n };\r\n\r\n $scope.toggleMoreInfoOnKeyUp = (toggleButton) => {\r\n toggleButton.preventDefault();\r\n if (toggleButton.keyCode === thirtyTwo) {\r\n $scope.toggleMoreInfo(toggleButton);\r\n }\r\n };\r\n\r\n $scope.toggleClass = (thNumber) => {\r\n if (thNumber === 'th1') {\r\n $scope.th1 = thNumber;\r\n $scope.th2 = false;\r\n $scope.th3 = false;\r\n $scope.th4 = false;\r\n } else if (thNumber === 'th2') {\r\n $scope.th2 = thNumber;\r\n $scope.th1 = false;\r\n $scope.th3 = false;\r\n $scope.th4 = false;\r\n } else if (thNumber === 'th3') {\r\n $scope.th3 = thNumber;\r\n $scope.th2 = false;\r\n $scope.th1 = false;\r\n $scope.th4 = false;\r\n } else {\r\n $scope.th4 = thNumber;\r\n $scope.th2 = false;\r\n $scope.th3 = false;\r\n $scope.th1 = false;\r\n }\r\n };\r\n\r\n $scope.dataLayerPush = (action, label) => {\r\n const data = {\r\n 'data-category': 'multi_account_selector',\r\n 'data-label': label,\r\n 'data-action': action,\r\n event: 'event-click',\r\n };\r\n if (dataLayer) {\r\n dataLayer.push(data);\r\n }\r\n };\r\n\r\n const searchMatch = (haystack, needle) => {\r\n if (!needle) {\r\n return true;\r\n }\r\n return (\r\n haystack\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(needle.toString().toLowerCase()) !== negOne\r\n );\r\n };\r\n\r\n // init the filtered accounts\r\n $scope.search = () => {\r\n $scope.filteredaccounts = $filter('filter')($scope.accounts, (account) => {\r\n let myvar = false;\r\n Object.keys(account).forEach((attr) => {\r\n if (account[attr]) {\r\n if (searchMatch(account[attr], $scope.query)) myvar = true;\r\n }\r\n });\r\n return myvar;\r\n });\r\n\r\n // take care of the sorting order\r\n\r\n /*\r\n if ($scope.sortingOrder !== '') {\r\n $scope.filteredaccounts = $filter('orderBy')(\r\n $scope.filteredaccounts, $scope.sortingOrder, $scope.reverse\r\n );\r\n }\r\n */\r\n $scope.currentPage = 0;\r\n $scope.middle = 3;\r\n // now group by pages\r\n $scope.groupToPages();\r\n if ($scope.filteredaccounts.length < $scope.accounts.length) {\r\n // const oneThousand = 1000;\r\n $scope.allDeferredPromises.forEach((element) => {\r\n element.resolve('Cancelled!');\r\n });\r\n if (inputChangedPromise) {\r\n $timeout.cancel(inputChangedPromise);\r\n }\r\n let inputChangedPromise = $timeout(\r\n getDueDateAndAmountDue($scope.filteredaccounts),\r\n 1000,\r\n );\r\n } else {\r\n getDataForFilteredAccounts();\r\n }\r\n };\r\n\r\n // calculate page in place\r\n $scope.groupToPages = () => {\r\n $scope.pagedAccounts = [];\r\n if ($scope.filteredaccounts.length < ten) {\r\n $scope.pagedAccounts[zero] = $scope.filteredaccounts;\r\n } else {\r\n for (\r\n let index = zero;\r\n index < $scope.filteredaccounts.length;\r\n index += one\r\n ) {\r\n if (index % $scope.accountsPerPage === zero) {\r\n $scope.pagedAccounts[Math.floor(index / $scope.accountsPerPage)] = [\r\n $scope.filteredaccounts[index],\r\n ];\r\n } else {\r\n $scope.pagedAccounts[Math.floor(index / $scope.accountsPerPage)].push(\r\n $scope.filteredaccounts[index],\r\n );\r\n }\r\n }\r\n }\r\n };\r\n\r\n $scope.range = (start, end) => {\r\n const ret = [];\r\n if (!end) {\r\n const newEnd = start;\r\n const newStart = zero;\r\n for (let index = newStart; index < newEnd; index += one) {\r\n ret.push(index);\r\n }\r\n return ret;\r\n }\r\n for (let index = start; index < end; index += one) {\r\n ret.push(index);\r\n }\r\n return ret;\r\n };\r\n\r\n const pageChangeHighlight = () => {\r\n $scope.pageChange = true;\r\n const fiveHund = 500;\r\n $timeout(() => {\r\n $scope.pageChange = false;\r\n }, fiveHund);\r\n };\r\n\r\n $scope.prevPage = () => {\r\n $scope.pauseLoop = false;\r\n if ($scope.currentPage > zero) {\r\n $scope.currentPage -= one;\r\n if (\r\n $scope.middle > three\r\n && $scope.currentPage < $scope.pagedAccounts.length - two\r\n ) {\r\n $scope.middle -= one;\r\n }\r\n if ($scope.currentPage < three) {\r\n $scope.middle = 3;\r\n }\r\n pageChangeHighlight();\r\n // getPageAccounts($scope.currentPage);\r\n }\r\n };\r\n\r\n $scope.nextPage = () => {\r\n $scope.pauseLoop = false;\r\n if ($scope.currentPage < $scope.pagedAccounts.length) {\r\n $scope.currentPage += one;\r\n if (\r\n $scope.middle < $scope.pagedAccounts.length - two\r\n && $scope.currentPage > three\r\n ) {\r\n $scope.middle += one;\r\n }\r\n pageChangeHighlight();\r\n // getPageAccounts($scope.currentPage);\r\n }\r\n };\r\n\r\n $scope.setPage = (index, mid) => {\r\n $scope.pauseLoop = false;\r\n $scope.currentPage = index;\r\n if (\r\n $scope.currentPage > two\r\n && $scope.currentPage < $scope.pagedAccounts.length - two\r\n ) {\r\n $scope.middle = mid;\r\n }\r\n if (index === $scope.pagedAccounts.length - one) {\r\n $scope.middle = $scope.pagedAccounts.length - two;\r\n }\r\n if (index < three) {\r\n $scope.middle = three;\r\n }\r\n pageChangeHighlight();\r\n // getPageAccounts(index);\r\n };\r\n\r\n /*\r\n let getPageAccounts = (index) => {\r\n let currentPageAccounts = $scope.pagedAccounts[index];\r\n getDueDateAndAmountDue(currentPageAccounts);\r\n } */\r\n\r\n // functions have been describe process the data for display\r\n $scope.search();\r\n\r\n let displayDisabled = function () {\r\n $scope.filteredaccounts.every(checkIfKeyExists);\r\n function checkIfKeyExists(account) {\r\n return account.hasOwnProperty('Amount') && account.Amount != undefined;\r\n }\r\n if ($scope.filteredaccounts.every(checkIfKeyExists)) {\r\n $scope.disabled = false;\r\n $scope.preSort = $scope.accounts.slice(0);\r\n } else {\r\n $scope.disabled = true;\r\n }\r\n };\r\n\r\n $scope.sortBy = (propertyName) => {\r\n $scope.propertyName = propertyName;\r\n\r\n if (propertyName === 'DueDate') {\r\n $scope.accounts = orderBy(\r\n $scope.accounts,\r\n $scope.propertyName,\r\n $scope.reverse,\r\n );\r\n }\r\n\r\n if (propertyName === 'Amount') {\r\n function compare(a, b) {\r\n // Use toUpperCase() to ignore character casing\r\n const amountA = Number(a.Amount);\r\n const amountB = Number(b.Amount);\r\n\r\n let comparison = 0;\r\n if (amountA > amountB) {\r\n comparison = 1;\r\n } else if (amountA < amountB) {\r\n comparison = -1;\r\n }\r\n if (!$scope.reverse) {\r\n return comparison;\r\n }\r\n return comparison * -1;\r\n }\r\n $scope.accounts.sort(compare);\r\n }\r\n\r\n if (propertyName === 'ServiceAddress') {\r\n $scope.accounts = $scope.preSort;\r\n }\r\n\r\n $scope.search();\r\n $scope.reverse = !$scope.reverse;\r\n };\r\n}\r\n\r\nmultipleAccountsController.$inject = [\r\n '$scope',\r\n '$window',\r\n '$rootScope',\r\n '$templateCache',\r\n '$controller',\r\n '$element',\r\n '$http',\r\n '$timeout',\r\n '$compile',\r\n '$filter',\r\n '$q',\r\n];\r\napp.controller('multipleAccountsController', multipleAccountsController);\r\n","\r\n/*\r\n * Angular controller\r\n * MyAccountSummaryController\r\n *\r\n */\r\n\r\nfunction MyAccountSummaryController($scope, $rootScope) {\r\n var s = $scope;\r\n var root = $rootScope;\r\n s.view = {\r\n };\r\n s.init = function () {\r\n /*\r\n *\r\n once we have the api/web method specifications we will need to replease the let url and params in the correct way, then the prommise will return the data and then we ll need to replase the attributes in the s.view object\r\n *\r\n */\r\n\r\n //let url='';\r\n //let params={};\r\n //root.getService(params,url).then().error();\r\n //root.postService(params,url).then().error();\r\n }\r\n //s.view = {\r\n // CreditBalance: 124.99, // Credit Balance in blue\r\n // ImportantMessage: 1, // this will controll the popover that shows a message when the mouse is over the icon (!)\r\n // PayNowBtn: 1, // this controlls if the button pay now will appear or not\r\n // LastPaymentDate: 1396731724000, // last payment date in the bellow legend -> its a currency\r\n // LastPaymentAmount: 119.43, // last payment date in the bellow legend\r\n // PaperlessStatus: 1, // status showed in the paument options\r\n // AutoPayStatus: 0, // status showed in the paument options\r\n // EqualPayStatus: 1 // status showed in the paument options\r\n //};\r\n};\r\nMyAccountSummaryController.$inject = ['$scope', '$rootScope'];\r\napp.controller('MyAccountSummaryController', MyAccountSummaryController);\r\n","function ohioChoiceCalendarCtrl($document) {\r\n\r\n let vm = this;\r\n\r\n let today = new Date();\r\n \r\n vm.init = function(date, past, range, disPrev, disNext, supplierId){\r\n\r\n if (date != null && date != \"\" && date != undefined) {\r\n vm.dateSelected = new Date(date);\r\n } else {\r\n vm.dateSelected = new Date(addDays(today, vm.endDateRange));\r\n }\r\n\r\n vm.dateSelectedMonth = vm.dateSelected.getMonth();\r\n vm.dateSelectedMonthName = vm.months[vm.dateSelectedMonth];\r\n vm.dateSelectedDay = vm.dateSelected.getDay();\r\n vm.dateSelectedDayName = vm.days.single[vm.dateSelectedDay];\r\n vm.disablePastDates = past;\r\n vm.endDateRange = range;\r\n vm.disablePrevMonth = disPrev;\r\n vm.disableNextMonth = disNext;\r\n vm.supplierId = supplierId;\r\n \r\n vm.CreateMonth(today, vm.previousDayDate);\r\n };\r\n\r\n vm.days = {\r\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n single: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n };\r\n vm.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n vm.holidays = [];\r\n\r\n vm.presentMonth = today.getMonth();\r\n vm.presentYear = today.getFullYear();\r\n\r\n let previousDay = new Date(vm.presentYear, vm.presentMonth + 1, 0);\r\n\r\n vm.previousDayDate = previousDay.getDate();\r\n\r\n vm.currentMonth = {\r\n month: '',\r\n year: '',\r\n monthName: '',\r\n date: today,\r\n dates: [],\r\n firstDate: null,\r\n lastDate: null\r\n };\r\n\r\n function addDays(date, days) {\r\n let result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n };\r\n\r\n vm.weekStart = function(date, dates) {\r\n let dateMonth = date.getMonth();\r\n let dateYear = date.getFullYear();\r\n let firstDayDate = new Date(dateYear, dateMonth, 1);\r\n let dayPosition = firstDayDate.getDay();\r\n let i = 0;\r\n for (i; i < dayPosition; i++) {\r\n dates.push({\r\n date: '',\r\n show: false\r\n });\r\n }\r\n return dates;\r\n };\r\n\r\n vm.compareDates = function(date1, date2) {\r\n let firstMonth = date1.getMonth();\r\n let secondMonth = date2.getMonth();\r\n let firstActualDate = date1.getDate();\r\n let secondActualDate = date2.getDate();\r\n let firstYear = date1.getFullYear();\r\n let secondYear = date2.getFullYear();\r\n if (firstMonth === secondMonth && firstYear === secondYear && firstActualDate === secondActualDate) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n vm.pastDate = function(date) {\r\n\r\n const newDate = new Date(date);\r\n\r\n if (newDate < today) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n vm.endDate = function(date, endDate) {\r\n let Month = date.getMonth();\r\n let ActualDate = date.getDate();\r\n let Year = date.getFullYear();\r\n let endMonth = endDate.getMonth();\r\n let endActualDate = endDate.getDate();\r\n let endYear = endDate.getFullYear();\r\n if (Month >= endMonth && ActualDate > endActualDate && Year >= endYear) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n vm.CreateMonth = function(date, previousDay) {\r\n let selectedID = null;\r\n vm.lastDate = new Date(addDays(today, vm.endDateRange));\r\n vm.currentMonth.day = date.getDate();\r\n vm.currentMonth.date = date;\r\n vm.currentMonth.year = date.getFullYear();\r\n vm.currentMonth.dates = [];\r\n vm.currentMonth.currentDates = vm.weekStart(date, vm.currentMonth.dates);\r\n vm.currentMonth.month = date.getMonth();\r\n vm.currentMonth.monthName = vm.months[date.getMonth()];\r\n\r\n for (let i = 1; i <= previousDay; i++) {\r\n let newDate = new Date(date.getFullYear(), date.getMonth(), i);\r\n if (vm.compareDates(newDate, today) && vm.compareDates(newDate, vm.dateSelected)) {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: true,\r\n selected: true,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: false\r\n });\r\n\r\n } else if (vm.compareDates(newDate, today)) {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: true,\r\n selected: false,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: false\r\n });\r\n } else if (vm.compareDates(newDate, vm.dateSelected)) {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: false,\r\n selected: true,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: false\r\n });\r\n selectedID = 'id' + i;\r\n } else if (vm.disablePastDates === true && vm.pastDate(newDate)) {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: false,\r\n selected: false,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: true\r\n });\r\n } else if (vm.endDateRange != null && vm.endDate(newDate, vm.lastDate)) {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: false,\r\n selected: false,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: true\r\n });\r\n \r\n } else {\r\n vm.currentMonth.dates.push({\r\n date: newDate,\r\n today: false,\r\n selected: false,\r\n id: 'id' + i,\r\n show: true,\r\n fade: false,\r\n disabled: false\r\n });\r\n }\r\n }\r\n if (selectedID != null) {\r\n let selectedIndex = vm.findDateIndex(selectedID);\r\n vm.SelectDate(vm.currentMonth.dates[selectedIndex].id, true);\r\n \r\n }\r\n selectedID = null;\r\n vm.checkPrevNext();\r\n return;\r\n };\r\n\r\n vm.checkPrevNext = function() {\r\n\r\n let currentMonthDates = angular.copy(vm.currentMonth.dates);\r\n\r\n for (let i = 0; i < currentMonthDates.length; i++) {\r\n if (currentMonthDates[i].show === false) {\r\n currentMonthDates.splice(i, 1);\r\n i--;\r\n };\r\n }\r\n\r\n const l = currentMonthDates.length - 1;\r\n\r\n if (currentMonthDates[0].disabled === true && currentMonthDates[l].disabled === false) {\r\n vm.disablePrevMonth = true;\r\n vm.disableNextMonth = false;\r\n } else if (currentMonthDates[l].disabled === true && currentMonthDates[0].disabled === false) {\r\n vm.disablePrevMonth = false;\r\n vm.disableNextMonth = true;\r\n } else if (currentMonthDates[l].disabled === true && currentMonthDates[0].disabled === true) {\r\n vm.disablePrevMonth = true;\r\n vm.disableNextMonth = true;\r\n } else if (currentMonthDates[l].disabled === false && currentMonthDates[0].disabled === false) {\r\n vm.disablePrevMonth = false;\r\n vm.disableNextMonth = false;\r\n }; \r\n // PREVENT FUNKY BEHAVIOR IF LAST AVAILABLE DATE IS END OF MONTH //\r\n if (vm.compareDates(currentMonthDates[l].date, vm.lastDate) && currentMonthDates[l].disabled === false) {\r\n vm.disableNextMonth = true;\r\n };\r\n }\r\n\r\n vm.findDateIndex = function(id) {\r\n let i = 0;\r\n let length = vm.currentMonth.dates.length;\r\n for (i; i < length; i++) {\r\n let newId = vm.currentMonth.dates[i].id;\r\n if (newId === id) {\r\n return i;\r\n }\r\n }\r\n return;\r\n };\r\n\r\n vm.SelectDate = function(id, status) {\r\n if (status) {\r\n let index = vm.findDateIndex(id);\r\n let length = vm.currentMonth.dates.length;\r\n let i = 0;\r\n for (i; i < length; i++) {\r\n vm.currentMonth.dates[i].selected = false;\r\n if (i > index) {\r\n vm.currentMonth.dates[i].fade = true;\r\n } else {\r\n vm.currentMonth.dates[i].fade = false;\r\n }\r\n }\r\n vm.currentMonth.dates[index].selected = true;\r\n vm.currentMonth.dates[index].fade = false;\r\n vm.dateSelected = vm.currentMonth.dates[index].date;\r\n vm.dateSelectedMonth = vm.dateSelected.getMonth();\r\n vm.dateSelectedDay = vm.dateSelected.getDay();\r\n\r\n let date = document.getElementById('date-' + vm.supplierId);\r\n let dateView = document.getElementById('date-view-' + vm.supplierId);\r\n if (date != null) {\r\n date.value = formatDateJSON(vm.dateSelected);\r\n dateView.innerHTML = formatDate(vm.dateSelected);\r\n }\r\n \r\n }\r\n return;\r\n };\r\n\r\n vm.nextMonth = function(date) {\r\n let newMonthDate;\r\n let newMonthDay;\r\n let newMonthDayDate;\r\n if (date.getMonth() === 11) {\r\n newMonthDate = new Date(date.getFullYear() + 1, 0, 1);\r\n newMonthDay = new Date(date.getFullYear() + 1, 1, 0);\r\n newMonthDayDate = newMonthDay.getDate();\r\n vm.CreateMonth(newMonthDate, newMonthDayDate);\r\n return;\r\n } else {\r\n newMonthDate = new Date(date.getFullYear(), date.getMonth() + 1, 1);\r\n if (date.getMonth() === 10) {\r\n newMonthDay = new Date(date.getFullYear() + 1, 0, 0);\r\n } else {\r\n newMonthDay = new Date(date.getFullYear(), date.getMonth() + 2, 0);\r\n }\r\n newMonthDayDate = newMonthDay.getDate();\r\n vm.CreateMonth(newMonthDate, newMonthDayDate);\r\n return;\r\n }\r\n };\r\n\r\n vm.previousMonth = function(date) {\r\n if (date.getMonth() === 0) {\r\n let newMonthDate = new Date(date.getFullYear() - 1, 11, 1);\r\n let newMonthDay = new Date(date.getFullYear(), 0, 0);\r\n let newMonthDayDate = newMonthDay.getDate();\r\n vm.CreateMonth(newMonthDate, newMonthDayDate);\r\n return;\r\n } else {\r\n newMonthDate = new Date(date.getFullYear(), date.getMonth() - 1, 1);\r\n newMonthDay = new Date(date.getFullYear(), date.getMonth(), 0);\r\n }\r\n let newMonthDayDate = newMonthDay.getDate();\r\n vm.CreateMonth(newMonthDate, newMonthDayDate);\r\n return;\r\n };\r\n\r\n const formatMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n const formatDays = ['01','02','03','04','05','06','07','08','09'];\r\n\r\n function formatDateJSON(date) {\r\n\r\n let formattedDate = date;\r\n let Year = formattedDate.getFullYear();\r\n let Month = formattedDate.getMonth();\r\n Month = formatMonths[Month];\r\n let Day = formattedDate.getDate();\r\n if (Day < 10) {\r\n Day = formatDays[Day - 1];\r\n }\r\n formattedDate = Year+\"-\"+Month+\"-\"+Day+\"T00:00:00.0\";\r\n\r\n return formattedDate;\r\n }\r\n\r\n function formatDate(date) {\r\n\r\n let formattedDate = date;\r\n let Year = formattedDate.getFullYear();\r\n let Month = formattedDate.getMonth();\r\n Month = formatMonths[Month];\r\n let Day = formattedDate.getDate();\r\n if (Day < 10) {\r\n Day = formatDays[Day - 1];\r\n }\r\n formattedDate = Month+\"-\"+Day+\"-\"+Year;\r\n\r\n return formattedDate;\r\n }\r\n\r\n vm.toggleDate = function(supplier) {\r\n\r\n const dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\r\n const dateTick = $document.find('li.check-id-' + supplier + ' .date .date-tick');\r\n const toggleDisable = dateWrapper.hasClass('disabled');\r\n\r\n if (!toggleDisable) {\r\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\r\n dateWrapper.removeClass('active');\r\n dateWrapper.addClass('inactive');\r\n dateTick.removeClass('open');\r\n } else if (dateWrapper.hasClass('inactive')) {\r\n dateWrapper.addClass('active');\r\n dateWrapper.removeClass('inactive');\r\n dateTick.addClass('open');\r\n }\r\n }\r\n }\r\n\r\n}\r\nohioChoiceCalendarCtrl.$inject = ['$document'];\r\napp.controller('ohioChoiceCalendarCtrl', ohioChoiceCalendarCtrl);","function ohioChoiceTableController(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n $filter,\r\n $document,\r\n myAccountFactory,\r\n cookiesService\r\n) {\r\n\r\n let vm = $scope;\r\n\r\n // SITECORE API URLs //\r\n let getUrl = \"/api/OhioChoice/GetAllSuppliers\";\r\n let updateUrl = \"/api/OhioChoice/UpdateAllSuppliers\";\r\n if (window.location.hostname == \"localhost\") {\r\n getUrl = \"/api/OhioCustomerChoiceSettings/getOCCSettings\";\r\n updateUrl = \"/api/OhioCustomerChoiceSettings/updateOCCSettings\";\r\n }\r\n\r\n let today = new Date();\r\n today.setHours(0,0,0,0);\r\n let endDateRange = 365;\r\n\r\n // CONSTANTS //\r\n const formatMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n const formatDays = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];\r\n const ohioList = document.getElementById('ohio-choice-list');\r\n const octButtons = document.getElementById('ohio-choice-form').getElementsByClassName('oct-buttons')[0];\r\n const octTC = document.getElementById('ohio-choice-form').getElementsByClassName('oct-tc')[0];\r\n\r\n /* Data Import */\r\n vm.supplierRequest = {};\r\n vm.suppliers = [];\r\n\r\n // INIT FUNCTION WITH SERVICE CALL TO POPULATE TABLE - ACCEPTS DEFAULT DATE RANGE //\r\n vm.init = function(range) {\r\n\r\n endDateRange = range;\r\n\r\n myAccountFactory.getJson(getUrl).then(function (data) {\r\n\r\n vm.supplierRequest = data.data;\r\n \r\n angular.forEach(vm.supplierRequest.SupplierDataList, function(value) {\r\n \r\n vm.suppliers.push(value);\r\n \r\n if (value.authEndDateTime === \"\" || value.authEndDateTime === null || value.authEndDateTime === undefined || pastDate(value.authEndDateTime) || value.authorized === false) {\r\n value.authEndDateTime = defaultDate(endDateRange);\r\n value.authorized = false;\r\n }\r\n });\r\n }).then(function () {\r\n if (ohioList.classList.contains('loading')) {\r\n ohioList.classList.remove('loading');\r\n }\r\n if (octButtons) {\r\n octButtons.classList.add('show');\r\n }\r\n if (octTC) {\r\n octTC.classList.add('show');\r\n } \r\n }).catch(function (reason) {\r\n //ohioList.classList.remove('loading').add('error');\r\n console.log(reason);\r\n });\r\n }\r\n\r\n // CALCULATE DEFAULT DATE BASED ON RANGE //\r\n function defaultDate(days) {\r\n\r\n let oneYear = new Date();\r\n oneYear = oneYear.setDate(oneYear.getDate() + days);\r\n oneYear = new Date(oneYear);\r\n\r\n let Year = oneYear.getFullYear();\r\n\r\n let Month = oneYear.getMonth();\r\n Month = formatMonths[Month];\r\n\r\n let Day = oneYear.getDate();\r\n if (Day < 10) {\r\n Day = formatDays[Day - 1];\r\n }\r\n\r\n let defaultDate = Year + \"-\" + Month + \"-\" + Day + \"T00:00:00.0\";\r\n\r\n return defaultDate;\r\n }\r\n\r\n function pastDate(date) {\r\n\r\n const newDate = new Date(date);\r\n\r\n if (newDate < today) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n vm.toggleDate = function(supplier) {\r\n\r\n const dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\r\n const dateTick = $document.find('li.check-id-' + supplier + ' .date .date-tick');\r\n const toggleDisable = dateWrapper.hasClass('disabled');\r\n\r\n if (!toggleDisable) {\r\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\r\n dateWrapper.removeClass('active');\r\n dateWrapper.addClass('inactive');\r\n dateTick.removeClass('open');\r\n } else if (dateWrapper.hasClass('inactive')) {\r\n dateWrapper.addClass('active');\r\n dateWrapper.removeClass('inactive');\r\n dateTick.addClass('open');\r\n }\r\n }\r\n }\r\n\r\n vm.checkboxClick = function(supplier) {\r\n const checkbox = document.getElementById('check-id-' + supplier);\r\n if (checkbox.attributes.checked) {\r\n checkbox.removeAttribute('checked');\r\n checkbox.checked = false;\r\n } else {\r\n checkbox.setAttribute('checked', 'checked');\r\n checkbox.checked = true;\r\n }\r\n }\r\n\r\n // CHECK ALL LOOPS //\r\n vm.checkboxAll = function() {\r\n const checkbox = document.getElementById('checkall');\r\n const checkboxes = document.getElementsByClassName('checkbox-suppliers');\r\n\r\n if (checkbox.attributes.checked) {\r\n checkbox.removeAttribute('checked');\r\n checkbox.checked = false;\r\n Array.prototype.forEach.call(checkboxes, function(check) {\r\n if (check.attributes.checked) {\r\n check.removeAttribute('checked');\r\n check.checked = false;\r\n }\r\n });\r\n } else {\r\n checkbox.setAttribute('checked', 'checked');\r\n checkbox.checked = true;\r\n Array.prototype.forEach.call(checkboxes, function(check) {\r\n check.setAttribute('checked', 'checked');\r\n check.checked = true;\r\n });\r\n }\r\n }\r\n\r\n vm.checkboxChecked = function(supplier) {\r\n const checkbox = document.getElementById('check-id-' + supplier);\r\n const dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\r\n if (dateWrapper.hasClass('active') && !checkbox.checked) {\r\n vm.toggleDate(supplier);\r\n }\r\n return checkbox.checked;\r\n }\r\n\r\n // UPDATE SUPPLIERS OBJECT BEFORE POST //\r\n vm.updateSuppliers = function() {\r\n angular.forEach(vm.suppliers, function(value) {\r\n const checkbox = document.getElementById('check-id-' + value.supplierId);\r\n const supIndex = vm.findSupplierIndex(value.supplierId);\r\n const date = document.getElementById('date-' + value.supplierId);\r\n if (checkbox.checked) {\r\n vm.suppliers[supIndex].authorized = true;\r\n vm.suppliers[supIndex].authEndDateTime = date.value;\r\n } else {\r\n vm.suppliers[supIndex].authorized = false;\r\n vm.suppliers[supIndex].authEndDateTime = null;\r\n }\r\n });\r\n }\r\n\r\n vm.findSupplierIndex = function(id) {\r\n let i = 0;\r\n let length = vm.suppliers.length;\r\n for (i; i < length; i++) {\r\n let newId = vm.suppliers[i].supplierId;\r\n if (newId === id) {\r\n return i;\r\n }\r\n }\r\n return;\r\n };\r\n\r\n vm.openSuccessModal = function () {\r\n angular.element(\"#oct-success-modal\").modal(\"show\");\r\n };\r\n\r\n // CHECK FOR COOKIE AND OPEN SUCCESS MODAL //\r\n angular.element(document).ready(function () {\r\n if (cookiesService.getCookie('oct-update-success')) {\r\n vm.openSuccessModal();\r\n cookiesService.deleteCookie('oct-update-success');\r\n }\r\n });\r\n\r\n // LEAVE MODAL BUTTON //\r\n vm.leaveBtn = function(url) {\r\n $window.location.href = url;\r\n }\r\n\r\n // SAVE BUTTON //\r\n vm.submitForm = function() {\r\n\r\n octButtons.classList.add('loading');\r\n ohioList.classList.add('hide');\r\n octTC.classList.remove('show');\r\n\r\n vm.updateSuppliers();\r\n\r\n let postData = angular.copy(vm.suppliers);\r\n \r\n postData = \"postData=\" + encodeURIComponent(JSON.stringify({postData}));\r\n\r\n const postHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };\r\n\r\n $rootScope.postService(postData, updateUrl, postHeaders).then((response) => {\r\n if (response == \"True\") {\r\n cookiesService.setCookie('oct-update-success', 'True');\r\n window.location.reload();\r\n } else {\r\n console.log(response);\r\n octTC.classList.add('show');\r\n ohioList.classList.remove('hide');\r\n octButtons.classList.remove('loading');\r\n octButtons.classList.add('error');\r\n }\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n octTC.classList.add('show');\r\n ohioList.classList.remove('hide');\r\n octButtons.classList.remove('loading');\r\n octButtons.classList.add('error');\r\n }\r\n );\r\n\r\n }\r\n \r\n}\r\nohioChoiceTableController.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n '$filter',\r\n '$document',\r\n 'myAccountFactory',\r\n 'cookiesService'\r\n];\r\napp.controller('ohioChoiceTableController', ohioChoiceTableController);","function paperlessBillingController(\r\n $document,\r\n $element,\r\n $scope,\r\n $timeout,\r\n $window,\r\n $filter,\r\n) {\r\n let vm = this;\r\n vm.accounts = [];\r\n vm.accountsFilter = [];\r\n vm.currentShowMsg = '';\r\n vm.searchAccount = '';\r\n vm.isShowMoreCollapsed = true;\r\n vm.shownAccounts = 5;\r\n\r\n vm.selected = [];\r\n vm.relativeURL = $window.location.pathname;\r\n vm.isAllSelected = false;\r\n vm.readyToSubmit = false;\r\n vm.shownAll = true;\r\n vm.selectedCount = 0;\r\n vm.dataActionReason = '';\r\n vm.alreadyEnrolled = false;\r\n vm.result = [];\r\n let availableAccounts = 0;\r\n vm.shownAccounts = 5;\r\n vm.disableAll = false;\r\n let tableCurrentHeight;\r\n\r\n let messages = {\r\n showMore: '',\r\n showLess: '',\r\n },\r\n showMoreBtn = angular.element('button.more-info-label'),\r\n tableContainer,\r\n tableInitialHeight = (tableCurrentHeight = 0),\r\n initialShownAccounts = vm.shownAccounts,\r\n transitionEvent = getTransitionEvent(),\r\n ul;\r\n\r\n vm.setShowLabels = setShowLabels;\r\n\r\n vm.toggleShowMore = toggleShowMore;\r\n vm.radioSelected = radioSelected;\r\n vm.checkboxChanged = checkboxChanged;\r\n vm.toggleSelectAll = toggleSelectAll;\r\n vm.enrollOnPaperlessBilling = enrollOnPaperlessBilling;\r\n\r\n $element.find('.cancel-modal').on('hidden.bs.modal', function(e) {\r\n $element.find('.cancel-btn').blur();\r\n });\r\n\r\n function radioSelected(value) {\r\n vm.dataActionReason = value;\r\n }\r\n\r\n function toggleSelectAll() {\r\n let isAllSelected = vm.isAllSelected;\r\n let index = -1;\r\n\r\n angular.forEach(vm.accounts, function(account) {\r\n index = vm.result.indexOf(account);\r\n\r\n if (account.IsSuccess && index < 0) {\r\n account.selected = isAllSelected;\r\n vm.result.push(account);\r\n }\r\n });\r\n\r\n if (isAllSelected) {\r\n vm.selectedCount = vm.accounts.length;\r\n } else {\r\n vm.selectedCount = 0;\r\n\r\n angular.forEach(vm.accounts, function(account) {\r\n account.selected = false;\r\n vm.result = [];\r\n });\r\n }\r\n }\r\n\r\n function checkboxChanged(account) {\r\n let index = vm.result.indexOf(account);\r\n\r\n if (account.selected && index < 0) {\r\n vm.result.push(account);\r\n } else {\r\n vm.result.splice(index, 1);\r\n }\r\n\r\n vm.isAllSelected = vm.accounts.every(function(account) {\r\n return account.selected;\r\n });\r\n vm.selectedCount = $filter('filter')(vm.accounts, {\r\n selected: true,\r\n }).length;\r\n\r\n if (vm.selectedCount == availableAccounts) {\r\n vm.isAllSelected = true;\r\n } else {\r\n vm.isAllSelected = false;\r\n }\r\n }\r\n\r\n function setShowLabels(more, less) {\r\n messages.showMore = more;\r\n messages.showLess = less;\r\n vm.currentShowMsg = messages.showMore;\r\n vm.showIcon = 'caret-arrow-down';\r\n }\r\n\r\n function toggleShowMore() {\r\n $element.find('.more-info-label').blur();\r\n\r\n vm.isShowMoreCollapsed = !vm.isShowMoreCollapsed;\r\n\r\n if (vm.accounts.length > 4 && vm.accounts.length < 11) {\r\n vm.shownAll = false;\r\n }\r\n\r\n let accountCheckboxes = $element.find(\r\n \".table-select-controls input[type='checkbox']\",\r\n );\r\n let failureTooltips = $element.find('.enrollment-status .failure-icon');\r\n\r\n if (vm.isShowMoreCollapsed) {\r\n vm.currentShowMsg = messages.showMore;\r\n vm.showIcon = 'caret-arrow-down';\r\n showMoreBtn.attr('aria-expanded', 'false');\r\n tableContainer.css('overflow-y', 'hidden');\r\n\r\n tableContainer.css('max-height', tableInitialHeight);\r\n tableContainer.one(transitionEvent, function() {\r\n $timeout(function() {\r\n vm.shownAccounts = initialShownAccounts;\r\n tableContainer.css('overflow-y', 'visible');\r\n });\r\n });\r\n\r\n setTabIndex('-1', accountCheckboxes);\r\n setTabIndex('-1', failureTooltips);\r\n } else {\r\n vm.currentShowMsg = messages.showLess;\r\n vm.showIcon = 'caret-arrow-up';\r\n showMoreBtn.attr('aria-expanded', 'true');\r\n\r\n vm.shownAccounts = vm.accountsFilter.length;\r\n tableContainer.css('overflow-y', 'hidden');\r\n tableContainer.css('max-height', tableInitialHeight);\r\n\r\n setTabIndex('0', accountCheckboxes);\r\n setTabIndex('0', failureTooltips);\r\n }\r\n\r\n // Remove button (no toggle) if less than 11 accounts\r\n if (vm.accounts.length < 11) {\r\n showMoreBtn.remove();\r\n }\r\n }\r\n\r\n function enrollOnPaperlessBilling($event) {\r\n vm.disableAll = true;\r\n $event.preventDefault();\r\n\r\n if (vm.accounts.length == 1) {\r\n vm.accounts[0].selected = true;\r\n vm.result = vm.accounts;\r\n }\r\n\r\n let selectedItems = $filter('filter')(vm.accounts, { selected: true });\r\n let modalNeededExist = $filter('filter')(selectedItems, {\r\n ModalNeeded: true,\r\n }).length;\r\n let form = $event.currentTarget;\r\n\r\n if (modalNeededExist && !vm.readyToSubmit) {\r\n vm.disableAll = false;\r\n }\r\n\r\n if (modalNeededExist > 0 && !vm.readyToSubmit) {\r\n vm.readyToSubmit = true;\r\n $('#already-enrolled-modal').modal('show');\r\n } else {\r\n $element.find('.enroll-btn').attr('disabled', 'disabled');\r\n $timeout(function() {\r\n form.submit();\r\n }, 0);\r\n }\r\n }\r\n\r\n let setTabIndex = function(index, elements) {\r\n elements.attr('tabindex', index);\r\n let typeComplete = $element.hasClass('complete');\r\n\r\n if (index == '0' || typeComplete) {\r\n elements.attr('tabindex', '0');\r\n } else if (!typeComplete) {\r\n elements.attr('tabindex', '-1');\r\n for (let i = 0; i < 5; i++) {\r\n angular.element(elements[i]).attr('tabindex', '0');\r\n }\r\n }\r\n };\r\n\r\n $scope.$on('tablecontent_loaded', function(e) {\r\n e.stopPropagation();\r\n let targetTable = $element.find('table');\r\n tableContainer = $element.find('.table-responsive');\r\n\r\n tableInitialHeight =\r\n initialShownAccounts == vm.shownAccounts\r\n ? targetTable[0].offsetHeight\r\n : tableInitialHeight;\r\n tableCurrentHeight =\r\n initialShownAccounts != vm.shownAccounts\r\n ? targetTable[0].offsetHeight\r\n : tableInitialHeight;\r\n\r\n if (vm.shownAccounts === vm.accountsFilter.length) {\r\n //table opens to show more\r\n tableContainer.css('max-height', tableCurrentHeight);\r\n }\r\n\r\n tableContainer.one(transitionEvent, function() {\r\n tableContainer.css('overflow-y', 'visible');\r\n });\r\n\r\n if (vm.accounts.length === 1) {\r\n vm.selectedCount = 1;\r\n }\r\n\r\n let modalNeededLength = $filter('filter')(vm.accounts, {\r\n ModalNeeded: true,\r\n }).length;\r\n if (modalNeededLength > 0) {\r\n vm.alreadyEnrolled = true;\r\n }\r\n\r\n availableAccounts = $filter('filter')(vm.accounts, { IsSuccess: false })\r\n .length;\r\n availableAccounts = vm.accounts.length - availableAccounts;\r\n\r\n $('#already-enrolled-modal').on('hidden.bs.modal', function() {\r\n vm.readyToSubmit = false;\r\n });\r\n\r\n let accountCheckboxes = $element.find(\r\n \".table-select-controls input[type='checkbox']\",\r\n );\r\n setTabIndex('-1', accountCheckboxes);\r\n\r\n let failureTooltips = $element.find('.enrollment-status .failure-icon');\r\n setTabIndex('-1', failureTooltips);\r\n });\r\n\r\n function getTransitionEvent() {\r\n let t,\r\n el = document.createElement('transitionElement');\r\n\r\n let transitions = {\r\n transition: 'transitionend',\r\n Otransition: 'oTransitionEnd',\r\n MozTransition: 'transitionend',\r\n WebkitTransition: 'webkitTransitionEnd',\r\n };\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n }\r\n}\r\npaperlessBillingController.$inject = [\r\n '$document',\r\n '$element',\r\n '$scope',\r\n '$timeout',\r\n '$window',\r\n '$filter',\r\n];\r\napp.controller('paperlessBillingController', paperlessBillingController);\r\n","function payBillController(\r\n $scope,\r\n $sce,\r\n $window,\r\n $element,\r\n $document,\r\n $rootScope,\r\n $timeout,\r\n) {\r\n $('.info-tooltip-accout-summary').tooltip();\r\n\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]')\r\n .popover({\r\n trigger: 'manual',\r\n content: function() {\r\n return $('.popover-inside').html();\r\n },\r\n html: true,\r\n animation: false,\r\n })\r\n .on('mouseenter', function() {\r\n let _this = this;\r\n $(this).popover('show');\r\n $('.popover').on('mouseleave', function() {\r\n $(_this).popover('hide');\r\n });\r\n })\r\n .on('mouseleave', function() {\r\n let _this = this;\r\n $timeout(function() {\r\n if (!$('.popover:hover').length) {\r\n $(_this).popover('hide');\r\n }\r\n }, 300);\r\n });\r\n }\r\n\r\n $(window).scroll(function() {\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]').popover('hide');\r\n }\r\n });\r\n\r\n let paybillMessage = $element.find('.i-message');\r\n if (paybillMessage) {\r\n paybillMessage.on('mouseenter', function() {\r\n if ($.isFunction($.fn.popover)) {\r\n $('[data-toggle=popover]').popover('show');\r\n }\r\n });\r\n }\r\n\r\n /**Use this script for ADA kewboard functionality**/\r\n $element.find('.info-tooltip-accout-summary').focusout(function() {\r\n let linkPopover = $element.find(\r\n '.ns-popover-right-placement .ns-popover-tooltip a',\r\n );\r\n linkPopover.hover();\r\n\r\n linkPopover.focusout(function() {\r\n let popoverRight = $element.find('.ns-popover-right-placement');\r\n popoverRight.css('display', 'none');\r\n });\r\n });\r\n\r\n $('body').on('click', '.tooltip-btn-pay-now', function() {\r\n $rootScope.dataLayer.push({\r\n event: 'tool-tip',\r\n 'data-category': 'response_code',\r\n 'data-label': 'Account Summary Important Message',\r\n 'data-action': $('.tooltip-btn-pay-now').attr('data-action'),\r\n });\r\n });\r\n\r\n $scope.mouseOverTooltip = function() {\r\n $('.info-tooltip-accout-summary').tooltip();\r\n\r\n if (typeof window.orientation !== 'undefined') {\r\n $('body').css('cursor', 'pointer');\r\n }\r\n };\r\n\r\n $scope.func = function() {\r\n $scope.isTooltipOpen = false;\r\n $('.info-tooltip-accout-summary').trigger('click');\r\n };\r\n}\r\npayBillController.$inject = [\r\n '$scope',\r\n '$sce',\r\n '$window',\r\n '$element',\r\n '$document',\r\n '$rootScope',\r\n '$timeout',\r\n];\r\napp.controller('payBillController', payBillController);\r\napp.config(['nsPopoverProvider', function(nsPopoverProvider) {}]);\r\n","function paymentBillingHistoryController(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n) {\r\n let vm = this;\r\n let filename = 'BillingAndPaymentHistoryExport';\r\n let dataExport;\r\n\r\n vm.focusOut = function() {\r\n $window.document.activeElement.blur();\r\n };\r\n\r\n vm.popModal = function (modalID) {\r\n angular.element(modalID).modal('show');\r\n };\r\n\r\n angular.element('document').ready(function() {\r\n if (\r\n navigator.userAgent.indexOf('MSIE ') > -1 ||\r\n navigator.userAgent.indexOf('Trident/') > -1\r\n ) {\r\n angular\r\n .element('.auth.billing-and-payment .more-info-more table.table')\r\n .css({ 'margin-top': '0' });\r\n }\r\n\r\n let paymentStatus = document.getElementsByClassName('paymentinfo');\r\n\r\n for (let i = 0; i < paymentStatus.length; i++) {\r\n $rootScope.dataLayer.push({\r\n paymentStatus: paymentStatus[i].getAttribute('payment-status'),\r\n event: 'payment_status_event',\r\n });\r\n }\r\n });\r\n\r\n /* PRINT FUNCTIONALITY */\r\n jQuery(document).bind('keyup keydown', function(e) {\r\n if (e.ctrlKey && e.keyCode == 80) {\r\n window.print();\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n\r\n let isIE = function(userAgent) {\r\n userAgent = userAgent || navigator.userAgent;\r\n return (\r\n userAgent.indexOf('MSIE ') > -1 ||\r\n userAgent.indexOf('Trident/') > -1 ||\r\n userAgent.indexOf('Edge/') > -1\r\n );\r\n };\r\n\r\n //If the user is Edge user we remove negative table margin\r\n if (navigator.userAgent.indexOf('Edge/') > -1) {\r\n angular.element('.more-info-more table').css('margin-top', '0px');\r\n }\r\n\r\n (function() {\r\n let afterPrint = function() {\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768) ||\r\n (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n //tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\r\n $('.data-table-container').css('width', '100%');\r\n $('.data-table-container').css('max-width', '100%');\r\n //var widget = chart_selector.swidget();\r\n //widget.options.seriesSettings.line.applyAnimation = 0;\r\n //widget.options.seriesSettings.bar.applyAnimation = 1000;\r\n //chart_selector.swidget().refresh();\r\n }\r\n };\r\n\r\n if ($window.matchMedia) {\r\n let mediaQueryList = $window.matchMedia('print');\r\n mediaQueryList.addListener(function(mql) {\r\n if (!mql.matches) {\r\n afterPrint();\r\n }\r\n });\r\n }\r\n $window.onafterprint = afterPrint;\r\n\r\n let _print = $window.print;\r\n $window.print = function() {\r\n $scope.innerWidth = $window.innerWidth;\r\n let tableWidth = $scope.innerWidth * 0.9;\r\n //$(\".data-table-container\").width(tableWidth);\r\n //$(\".data-table-container\").css(\"max-width\", $scope.innerWidth + \"px !important\")\r\n\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768) ||\r\n (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n //tablet resolutions\r\n //$(\".data-table-container\").css(\"width\", \"960px\").css(\"max-width\", \"960px\");\r\n //var widget = chart_selector.swidget();\r\n //widget.options.seriesSettings.line.applyAnimation = 0;\r\n //widget.options.seriesSettings.bar.applyAnimation = 0;\r\n //chart_selector.swidget().refresh();\r\n _print();\r\n } else {\r\n _print();\r\n }\r\n };\r\n })();\r\n\r\n $scope.printPage = function() {\r\n $('.info-tooltip').tooltip('hide');\r\n $timeout(function() {\r\n $window.print();\r\n }, 250);\r\n };\r\n /*END PRINT FUNCTIONALITY */\r\n\r\n angular.element('document').ready(function() {\r\n $('tr.clickable').each(function(index) {\r\n let dataTarget = $(this).data('target');\r\n dataTarget = dataTarget.replace('#tr', '');\r\n dataTarget = parseInt(dataTarget);\r\n if (dataTarget % 2 == 0) {\r\n $(this).addClass('white-row');\r\n } else {\r\n $(this).addClass('blue-row');\r\n }\r\n });\r\n\r\n angular.element('tr.clickable:odd').css('background-color', 'white');\r\n angular.element('tr .collapse').on('show.bs.collapse', function() {\r\n angular\r\n .element('tr .collapse')\r\n .not($(this))\r\n .collapse('hide');\r\n let tr = $(this)\r\n .parent()\r\n .parent();\r\n tr.show();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'billing_payment_history',\r\n 'data-action': 'Expand',\r\n 'data-label': 'Billing & Payment History',\r\n event: 'payment-billing-history-accordion-change',\r\n });\r\n });\r\n\r\n angular.element('tr .collapse').on('hidden.bs.collapse', function() {\r\n let tr = $(this)\r\n .parent()\r\n .parent();\r\n tr.hide();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'billing_payment_history',\r\n 'data-action': 'Contract',\r\n 'data-label': 'Billing & Payment History',\r\n event: 'payment-billing-history-accordion-change',\r\n });\r\n });\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/api/BillingAndPaymentHistory/GetExportData',\r\n data: '',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(function(data, status, headers, config) {\r\n dataExport = data.data;\r\n //saveTextAs(data, filename + \".csv\");\r\n })\r\n .catch(function(data, status, headers, config) {\r\n // handle error\r\n });\r\n });\r\n\r\n vm.openModal = function(id, event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n angular.element('#' + id).modal('show');\r\n };\r\n\r\n $scope.exportData = function() {\r\n saveTextAs(dataExport, filename + '.csv');\r\n };\r\n\r\n $scope.changeDateFormat = function(billDate) {\r\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\r\n };\r\n\r\n function submitPostCall(url, params) {\r\n let form = document.createElement('form');\r\n form.setAttribute('method', 'post');\r\n form.setAttribute('action', url);\r\n\r\n for (let element = 0; element < params.length; element++) {\r\n let temp = params[element];\r\n for (let i in temp) {\r\n if (temp.hasOwnProperty(i)) {\r\n let input = document.createElement('input');\r\n input.type = 'hidden';\r\n input.name = i;\r\n input.value = temp[i];\r\n form.appendChild(input);\r\n }\r\n }\r\n }\r\n\r\n document.body.appendChild(form);\r\n form.submit();\r\n document.body.removeChild(form);\r\n }\r\n}\r\npaymentBillingHistoryController.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n];\r\napp.controller(\r\n 'paymentBillingHistoryController',\r\n paymentBillingHistoryController,\r\n);\r\n\r\nfunction paymentBillingHistoryControllerRefactor(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n) {\r\n let vm = this;\r\n vm.historySelected = -1;\r\n angular.element('document').ready(function() {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n //angular.element(\".auth .auth-body .plan-charges .rich-text-editor table:last-child.table thead\").css(\"visibility\",\"hidden\");\r\n angular.element('tr.clickable:odd').css('background-color', 'white');\r\n angular.element('tr .collapse').on('show.bs.collapse', function() {\r\n angular\r\n .element('tr .collapse')\r\n .not($(this))\r\n .collapse('hide');\r\n let tr = $(this)\r\n .parent()\r\n .parent();\r\n tr.show();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'billing_payment_history',\r\n 'data-action': 'Expand',\r\n 'data-label': 'Billing & Payment History',\r\n });\r\n });\r\n\r\n angular.element('tr .collapse').on('hidden.bs.collapse', function() {\r\n let tr = $(this)\r\n .parent()\r\n .parent();\r\n tr.hide();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'billing_payment_history',\r\n 'data-action': 'Contract',\r\n 'data-label': 'Billing & Payment History',\r\n });\r\n });\r\n });\r\n\r\n vm.openModal = function(id, event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n angular.element('#' + id).modal('show');\r\n };\r\n}\r\npaymentBillingHistoryControllerRefactor.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n];\r\napp.controller(\r\n 'paymentBillingHistoryControllerRefactor',\r\n paymentBillingHistoryControllerRefactor,\r\n);\r\n","function paymentOptionsController($element, $scope, $timeout, $window) {\r\n $timeout(function () {\r\n let destionationUrl = $element.attr(\"data-url\");\r\n let iframe = $element.find(\"#paymentIframe\");\r\n\r\n iframe.on('load', function () {\r\n $window.location.href = destionationUrl;\r\n\r\n });\r\n });\r\n\r\n}\r\npaymentOptionsController.$inject = ['$element', '$scope', '$timeout', '$window'];\r\napp.controller('paymentOptionsController', paymentOptionsController);","/* eslint-disable no-use-before-define */\r\napp.controller('PBilling', PBilling);\r\n\r\nfunction PBilling() {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n // vm.PB_Description = 'Easily enroll all of your accounts.';\r\n vm.PB_Description = undefined;\r\n vm.PB_LinkText = undefined;\r\n vm.PB_ClickEnroll = undefined;\r\n vm.PB_BigPadding = false;\r\n vm.PB_ToggleComponent = true;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n function load() {\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n // init();\r\n}\r\n","/*\r\n * Angular controller\r\n * Pick your due date Controller\r\n *\r\n */\r\n\r\nfunction pickYourDueDateController(\r\n $scope,\r\n $templateCache,\r\n $controller,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $compile,\r\n $filter,\r\n $q,\r\n) {\r\n $scope.formCtrl = {};\r\n $scope.formCtrl.forms = {};\r\n $scope.formCtrl.forms.my_form = {};\r\n\r\n $scope.selectNumber = function(number) {\r\n let elements = document.getElementsByClassName('pydd__calendar-number active');\r\n while(elements.length > 0){\r\n elements[0].setAttribute(\"aria-selected\", \"false\");\r\n elements[0].classList.remove('active');\r\n }\r\n let mySelectedNumber = angular.element( document.querySelector( '.pydd__calendar-date-' + number ) );\r\n let pyddInput = angular.element( document.querySelector( '.pydd__hidden-input' ) );\r\n let classList = 'active pydd__calendar-number pydd__calendar-date-' + number;\r\n mySelectedNumber.attr('class', classList);\r\n mySelectedNumber.attr('aria-selected', 'true');\r\n pyddInput.attr('value', number);\r\n $scope.formCtrl.forms.my_form.dueDate = number;\r\n };\r\n\r\n $scope.goTo = function(link) {\r\n $window.location.href = link;\r\n };\r\n\r\n $scope.checkForm = function(formData) {\r\n let dataObject = {};\r\n dataObject['dueDate'] = formData.my_form.dueDate.toString();\r\n dataObject['email'] = formData.my_form.email;\r\n sendDueDateAndEmailService(dataObject).then(\r\n (response) => {\r\n if (response.Success === 'True' || response.Success === true) {\r\n $scope.enrollSuccess = true;\r\n let pageTitle = angular.element(document.getElementsByClassName(\"header-1\"))[0].innerHTML.trim();\r\n let pageSubTitle = angular.element(document.getElementsByClassName(\"intro-txt\"))[0].innerHTML.trim();\r\n let label = pageTitle + ' | Select Your Date';\r\n let action = document.querySelector(\".pydd__form .duke-submit-button\").innerHTML.trim();\r\n $scope.dataLayerPush('pydd', label, action, pageTitle, 'Select Your Date');\r\n $window.scrollTo(0, 0);\r\n } else {\r\n window.location.href = response.RedirectUrl;\r\n }\r\n },\r\n // Error\r\n (response) => {\r\n $scope.enrollFailure = true;\r\n },\r\n );\r\n };\r\n\r\n $scope.displayModal = function () {\r\n angular.element('#cancel-modal').modal('show');\r\n }\r\n\r\n $scope.dataLayerPush = function(category = '', label = '', action = '', title = '', subtitle = '', ctaText = '') {\r\n let data = {\r\n 'data-category' : category,\r\n 'data-label' : label,\r\n 'data-action' : action,\r\n 'event': 'event-click'\r\n };\r\n\r\n const vpv = {'event':'send-VPV', 'vpv-name':`/vpv/${title}/${subtitle}/${action}/success`};\r\n\r\n if (dataLayer) {\r\n dataLayer.push(data);\r\n dataLayer.push(vpv);\r\n }\r\n }\r\n\r\n const sendDueDateAndEmailService = (dataObject) => {\r\n const deferred = $q.defer();\r\n const dataObj = dataObject || {};\r\n $http({\r\n method: 'POST',\r\n url: '/api/PickYourDueDate/EnrollAccount',\r\n data: dataObj,\r\n headers: { 'Content-Type': 'application/json' },\r\n timeout: deferred.promise,\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((error) => {\r\n deferred.reject(error.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n}\r\n\r\npickYourDueDateController.$inject = [\r\n '$scope',\r\n '$templateCache',\r\n '$controller',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$compile',\r\n '$filter',\r\n '$q',\r\n];\r\napp.controller('pickYourDueDateController', pickYourDueDateController);\r\n","/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\r\n\r\nfunction profileSettingsController($scope, $window, $rootScope, $templateCache) {\r\n let vm = this;\r\n let profileUpdated = angular.element('#profileUpdated').val();\r\n \r\n\r\n let dataLayerPushSuccessfulUpdate = function(label) {\r\n let formattedLabel = label.toLowerCase().split(' ').join('-');\r\n let data = {\r\n 'data-category' : 'manage_profile',\r\n 'data-label' : 'change-' + formattedLabel,\r\n 'data-action' : 'successful-confirmation',\r\n 'event': 'event-click'\r\n };\r\n \r\n if (dataLayer) {\r\n dataLayer.push(data);\r\n }\r\n }\r\n\r\n if (profileUpdated) {\r\n dataLayerPushSuccessfulUpdate(profileUpdated);\r\n }\r\n\r\n vm.dataLayerPush = function(label) {\r\n let data = {\r\n 'data-category' : 'manage_profile',\r\n 'data-label' : label,\r\n 'data-action' : 'edit',\r\n 'event': 'event-click'\r\n };\r\n \r\n if (dataLayer) {\r\n dataLayer.push(data);\r\n }\r\n }\r\n\r\n vm.goTo = function(href) {\r\n $window.open(href,'_parent');\r\n }\r\n};\r\n\r\nprofileSettingsController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller'];\r\napp.controller('profileSettingsController', profileSettingsController);\r\n","\r\n/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\r\n\r\nfunction ReportAnOutageController($scope, $window, $rootScope, $element, $location, $attrs, $timeout) {\r\n \r\n let vm = this;\r\n let showMoreBtn;\r\n vm.searchAccount = '';\r\n vm.userChoice = null;\r\n vm.selectedRow = null;\r\n vm.value = null;\r\n vm.selected = null;\r\n vm.limitRows = 5;\r\n vm.account = null;\r\n vm.accounts = [];\r\n vm.available = false;\r\n vm.isShowMoreCollapsed = true;\r\n vm.setClickedRow = function ($index, $event,account) {\r\n vm.selectedRow = $index;\r\n let radio = $($event.currentTarget).find(\"input[type='radio']\");\r\n radio.prop(\"checked\", true);\r\n vm.available = true;\r\n vm.hiddenattrs = account.source;\r\n vm.selectedAcct = account;\r\n };\r\n\r\n vm.setClickedRadio = function (account, $event) {\r\n vm.selected = account;\r\n vm.selectedAcct = account;\r\n $timeout(function () {\r\n angular.element('.checked').trigger('click');\r\n }, 1);\r\n vm.available = true;\r\n let radio = $($event.currentTarget).find(\"input[type='radio']\");\r\n radio.prop(\"checked\", true);\r\n vm.limitRows = 4;\r\n vm.selected.isDefault = true;\r\n vm.hiddenattrs = account.source;\r\n };\r\n\r\n // TODO: Deprecated. Confirm it's not used in Sitecore views before removing.\r\n vm.checkDups = function (item) {\r\n if(vm.selected == null){\r\n return true;\r\n }\r\n if (item.id == vm.selected.id) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n \r\n }; \r\n\r\n\r\n let $this = vm,\r\n $el = $element,\r\n $moreInfoPane = null;\r\n vm.showAllMsg = \"\";\r\n vm.showLessMsg = \"\";\r\n vm.currentShowMsg = \"\";\r\n\r\n vm.relativeURL = $window.location.pathname;\r\n\r\n vm.setShowLabels = function (more, less) {\r\n vm.showAllMsg = more;\r\n vm.showLessMsg = less;\r\n\r\n\r\n vm.currentShowMsg = vm.showAllMsg;\r\n vm.showIcon = \"caret-arrow-down\";\r\n };\r\n\r\n function toggleShowAll(event) {\r\n // Catch panel on function call. Attempting to get it outside will fail due to element depending on ngIf.\r\n $moreInfoPane = angular.element($el.find('.more-info-more'));\r\n showMoreBtn = angular.element(event.currentTarget);\r\n\r\n vm.isShowMoreCollapsed = !vm.isShowMoreCollapsed;\r\n\r\n if (vm.isShowMoreCollapsed) {\r\n vm.currentShowMsg = vm.showAllMsg;\r\n vm.showIcon = \"caret-arrow-down\";\r\n showMoreBtn.attr('aria-expanded', 'false');\r\n }\r\n else {\r\n vm.currentShowMsg = vm.showLessMsg;\r\n vm.showIcon = \"caret-arrow-up\";\r\n showMoreBtn.attr('aria-expanded', 'true');\r\n //vm.shownAccounts = vm.filteredAccounts.length;\r\n }\r\n\r\n $moreInfoPane.slideToggle();\r\n\r\n // Remove button (no toggle) if less than 11 accounts\r\n if (vm.accounts.length < 11) {\r\n angular.element('button.more-info-label').remove();\r\n }\r\n }\r\n\r\n vm.toggleShowAll = toggleShowAll;\r\n};\r\n\r\nReportAnOutageController.$inject = ['$scope', '$window', '$rootScope', '$element', '$location', '$attrs', '$timeout'];\r\napp.controller('ReportAnOutageController', ReportAnOutageController);\r\n","/*\r\n * sign-in-auth.js\r\n * Javascript file to manage all interaction with Sign in for AUthenticated.\r\n */\r\n\r\nfunction authSignInController(\r\n $scope,\r\n $window,\r\n $element,\r\n $cookies,\r\n $http,\r\n $rootScope,\r\n dataAttribution,\r\n) {\r\n $element.find('.info-tooltip').tooltip();\r\n\r\n //Relative Url for Analytics\r\n $scope.relativeURL = $window.location.pathname;\r\n\r\n $scope.attributionPush = function(\r\n category,\r\n action,\r\n label,\r\n event,\r\n link,\r\n $event,\r\n ) {\r\n $event.preventDefault();\r\n dataAttribution.pushData(category, action, label, event);\r\n window.location.href = link;\r\n };\r\n\r\n $scope.attributionSubmitForm = function(\r\n category,\r\n action,\r\n label,\r\n event,\r\n formId,\r\n $event,\r\n ) {\r\n $event.preventDefault();\r\n dataAttribution.pushData(category, action, label, event);\r\n document.getElementById(formId).submit();\r\n };\r\n\r\n $scope.signInAccordion = function(event) {\r\n let menuItem = angular.element(event.currentTarget);\r\n menuItem.toggleClass('active');\r\n let slideMenu = menuItem\r\n .parent()\r\n .parent()\r\n .next();\r\n slideMenu.toggleClass('active');\r\n event.preventDefault();\r\n };\r\n\r\n $http.defaults.headers.post['Content-Type'] =\r\n 'application/x-www-form-urlencoded;charset=utf-8';\r\n $scope.unavailable = false;\r\n $scope.noMatch = false;\r\n $scope.loggedIn = false;\r\n $scope.interceptActive = true;\r\n\r\n /*\r\n * Form Validation\r\n */\r\n\r\n $scope.submitLogInForm = function($event, theForm) {\r\n // MERGE: Not in A. Might not be needed.\r\n // theForm.userId.$setTouched();\r\n // theForm.userPassword.$setTouched();\r\n\r\n if (theForm.$invalid) {\r\n $event.preventDefault();\r\n\r\n angular.forEach(theForm.$error, function(field) {\r\n angular.forEach(field, function(errorField) {\r\n errorField.$setTouched();\r\n });\r\n });\r\n return false;\r\n }\r\n if (theForm.$valid) {\r\n $rootScope.dataLayer.push({\r\n signInStatus: 'authenticated',\r\n event: 'signInSubmit',\r\n });\r\n\r\n let api_url = '/api/Login/CreateCookie';\r\n let remember_data;\r\n if ($element.find(\"input[name='loginRemember']\").is(':checked')) {\r\n remember_data = { rememberMe: true, username: $scope.user.userId };\r\n } else {\r\n remember_data = { rememberMe: false };\r\n }\r\n\r\n $http({\r\n method: 'POST',\r\n url: api_url,\r\n data: remember_data,\r\n headers: { 'Content-Type': 'application/json' },\r\n })\r\n .then(function(data) {\r\n let form = $event.currentTarget;\r\n form.submit();\r\n })\r\n .catch(function(data) {});\r\n $event.preventDefault();\r\n }\r\n };\r\n\r\n $scope.init = function() {\r\n if ($element.hasClass('logged-in')) {\r\n $scope.loggedIn = true;\r\n }\r\n };\r\n\r\n $scope.init();\r\n}\r\n\r\nauthSignInController.$inject = [\r\n '$scope',\r\n '$window',\r\n '$element',\r\n '$cookies',\r\n '$http',\r\n '$rootScope',\r\n 'dataAttribution',\r\n];\r\n\r\napp.controller('authSignInController', authSignInController);\r\n","/*\r\n * tertiaryNav.js\r\n * Javascript file to manage all interaction with the Tertiary Navigation elements.\r\n */\r\n\r\napp.factory('accountToggleFactory', () => {\r\n let currentAccountClick = 0;\r\n\r\n // public API\r\n const obj = {};\r\n obj.getCurrentAccountClick = function () {\r\n return currentAccountClick;\r\n };\r\n obj.setCurrentAccountClick = function () {\r\n currentAccountClick++;\r\n };\r\n return obj;\r\n});\r\n\r\nfunction TertiaryNavAuthCtrl(\r\n $scope,\r\n $rootScope,\r\n $window,\r\n $cookies,\r\n $timeout,\r\n $http,\r\n $element,\r\n accountToggleFactory,\r\n myAccountFactory,\r\n $log,\r\n $q,\r\n) {\r\n $scope.isActive = false;\r\n $scope.disableBack = false;\r\n $scope.isTNavReady = false;\r\n $scope.getTNavFailed = false;\r\n const bodyHeight = angular.element('body').height();\r\n\r\n const body = angular.element('body');\r\n $scope.toggleTertiary = function () {\r\n angular.element('#tertiary').collapse('toggle');\r\n angular.element('#tertiary-wrapper').removeClass('sticky-content');\r\n $rootScope.accountSelectorOpen = false;\r\n\r\n $scope.isActive = !$scope.isActive;\r\n if ($scope.isActive) {\r\n body.addClass('in-body');\r\n } else {\r\n body.removeClass('in-body');\r\n }\r\n\r\n accountToggleFactory.setCurrentAccountClick();\r\n\r\n $scope.disableBack = !$scope.disableBack;\r\n\r\n if (window.innerWidth < 768) {\r\n angular.element('.disable-bg').css('height', `${bodyHeight}px`);\r\n const tertWrapperToTopOfScreenHeight = angular.element('#tertiary-wrapper').position().top\r\n + angular.element('#tertiary-wrapper').outerHeight(true);\r\n const viewPortHeight = window.innerHeight;\r\n const tertiaryNavSubmenu = viewPortHeight - tertWrapperToTopOfScreenHeight;\r\n\r\n if ($scope.isActive) {\r\n angular\r\n .element('.tertiary-nav-submenu .container')\r\n .css('height', `${tertiaryNavSubmenu}px`);\r\n }\r\n }\r\n };\r\n\r\n $window.onresize = function () {\r\n if (window.innerWidth < 768) {\r\n const tertWrapperToTopOfScreenHeight = angular.element('#tertiary-wrapper').position().top\r\n + angular.element('#tertiary-wrapper').outerHeight(true);\r\n const viewPortHeight = window.innerHeight;\r\n const tertiaryNavSubmenu = viewPortHeight - tertWrapperToTopOfScreenHeight;\r\n angular\r\n .element('.tertiary-nav-submenu .container')\r\n .css('height', `${tertiaryNavSubmenu}px`);\r\n }\r\n };\r\n\r\n $('#carousel-example-generic').carousel({\r\n interval: false,\r\n wrap: false,\r\n });\r\n\r\n const checkitem = function () {\r\n let $this;\r\n $this = $('#carousel-example-generic');\r\n if (\r\n $('#carousel-example-generic .carousel-inner .item:first').hasClass(\r\n 'active',\r\n )\r\n ) {\r\n $('.left').hide();\r\n $('.right').show();\r\n } else if (\r\n $('#carousel-example-generic .carousel-inner .item:last').hasClass(\r\n 'active',\r\n )\r\n ) {\r\n $('.right').hide();\r\n $('.left').show();\r\n } else {\r\n $this.children('.carousel-control').show();\r\n }\r\n };\r\n\r\n checkitem();\r\n let carouselContainer;\r\n let tabletColumns;\r\n let firstCol;\r\n let viewBillElem;\r\n let switchElem;\r\n let iColumns;\r\n let sliderItem;\r\n let listItems;\r\n\r\n $scope.$on('reorder_tertiary_nav', (e) => {\r\n e.stopPropagation();\r\n\r\n carouselContainer = angular.element('.carousel-inner');\r\n tabletColumns = angular.element('.tnav-tablet');\r\n listItems = tabletColumns.first().find('li');\r\n\r\n for (iColumns = 0; iColumns < tabletColumns.length; iColumns++) {\r\n if (iColumns % 2 === 0) {\r\n sliderItem = new angular.element('
');\r\n sliderItem.appendTo(carouselContainer);\r\n\r\n if (iColumns === 0) {\r\n sliderItem.addClass('active');\r\n }\r\n }\r\n\r\n angular.element(tabletColumns[iColumns]).appendTo(sliderItem);\r\n }\r\n\r\n checkitem();\r\n\r\n if (\r\n $scope.model.ViewBillTertiary\r\n && $scope.model.ViewBillTertiary.IndexInList != 0\r\n ) {\r\n // Desktop and Mobile only\r\n listItems = angular\r\n .element('.tnav-desk')\r\n .first()\r\n .find('li');\r\n viewBillElem = listItems[0];\r\n switchElem = listItems[$scope.model.ViewBillTertiary.IndexInList];\r\n angular.element(switchElem).after(viewBillElem);\r\n\r\n // Now switch links for Tablet\r\n listItems = tabletColumns.first().find('li');\r\n viewBillElem = listItems[0];\r\n switchElem = listItems[$scope.model.ViewBillTertiary.IndexInList];\r\n angular.element(switchElem).after(viewBillElem);\r\n }\r\n\r\n // TODO: COULD need to be in a try-catch block\r\n $scope.isTNavReady = true;\r\n });\r\n\r\n $('#carousel-example-generic').on('slid.bs.carousel', '', checkitem);\r\n\r\n $scope.getTNavData = function (stringId) {\r\n myAccountFactory\r\n .getJsonParams('/api/AuthTertiaryNav/GetTertiaryNavData', {\r\n stringId,\r\n })\r\n .then(serviceSuccess)\r\n .catch(serviceError);\r\n };\r\n\r\n const clearCacheService = () => {\r\n const deferred = $q.defer();\r\n $http({\r\n method: 'POST',\r\n url:\r\n '/api/AuthTertiaryNav/ClearGetUserCacheAndRedirectToPreferenceCenter',\r\n headers: { 'Content-Type': 'application/json' },\r\n })\r\n .then((data) => {\r\n deferred.resolve(data.data);\r\n })\r\n .catch((data) => {\r\n deferred.reject(data.data);\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.clearCache = function (url) {\r\n clearCacheService().then(\r\n (response) => {\r\n $window.location.href = url;\r\n },\r\n // Error\r\n (response) => {\r\n console.log(response);\r\n },\r\n );\r\n };\r\n\r\n function serviceSuccess(data) {\r\n $scope.model = data.data;\r\n }\r\n\r\n function serviceError(data) {\r\n $log('Could not load Tertiary Nav Menu.');\r\n $scope.getTNavFailed = true;\r\n }\r\n\r\n angular.element(document).ready(() => {\r\n angular.element($window).bind('scroll', () => {\r\n const width = angular.element(window).width();\r\n if (width >= 768) {\r\n $scope.isActive = false;\r\n window.setTimeout(() => {\r\n angular.element('#tertiary').collapse('hide');\r\n }, 100);\r\n $scope.$apply();\r\n }\r\n $scope.disableBack = true;\r\n $scope.disableBack = !$scope.disableBack;\r\n angular.element('.disable-bg').css('height', `${bodyHeight}px`);\r\n });\r\n\r\n $scope.carouselItems = angular.element('#carousel-example-generic');\r\n const prevSlide = function (event) {\r\n if (event.keyCode == 32) {\r\n $scope.carouselItems.carousel('prev');\r\n event.preventDefault();\r\n }\r\n };\r\n const nextSlide = function (event) {\r\n if (event.keyCode == 32) {\r\n $scope.carouselItems.carousel('next');\r\n event.preventDefault();\r\n }\r\n };\r\n });\r\n}\r\n\r\nTertiaryNavAuthCtrl.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$window',\r\n '$cookies',\r\n '$timeout',\r\n '$http',\r\n '$element',\r\n 'accountToggleFactory',\r\n 'myAccountFactory',\r\n '$log',\r\n '$q',\r\n];\r\napp.controller('TertiaryNavAuthCtrl', TertiaryNavAuthCtrl);\r\n","function usageAnalysisController(\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n) {\r\n // Line for testing, erasing after test is done\r\n window.$rootScope = $rootScope;\r\n\r\n $scope.newCalendar = true;\r\n\r\n const api_url_table = '/api/UsageAnalysis/GetBillingInformation';\r\n const api_url_graph = '/api/UsageAnalysis/GetUsageChartData';\r\n const export_url = '/api/UsageAnalysis/ExportData';\r\n const grexport_url = '/api/UsageAnalysis/DownloadMyData';\r\n const chart_selector = $element.find('.duke-chart');\r\n const calendar = $element.find('.testCalendar');\r\n let graphText = '';\r\n let changedGraph = false;\r\n let newPeriodValue = '';\r\n let dropdownInteraction = 'Meter';\r\n let meterLoaded = false;\r\n let exportData;\r\n let exportFilename;\r\n let grExportData;\r\n let grExportFilename;\r\n let DailyAvgWeekException = false;\r\n $scope.grexport = false;\r\n $scope.usage_table = [];\r\n $scope.loaded = false;\r\n $scope.grLoaded = false;\r\n $scope.grError = false;\r\n $scope.table_type = '';\r\n $scope.forms = {};\r\n $scope.error_message_default = 'This information is currently unavailable. Please check again later.';\r\n $scope.error_message = $scope.error_message_default;\r\n $scope.errorPanel = false;\r\n $scope.analytics = {\r\n chartType: 'Smart Meter',\r\n };\r\n $scope.period_items = [];\r\n $scope.graph_items = [];\r\n $scope.chart = {};\r\n $scope.openModal = function (id) {\r\n $(`#${id}`).modal('show');\r\n };\r\n $scope.start_date = '';\r\n $scope.original_end_date = $scope.end_date;\r\n $scope.current_date = '';\r\n $scope.meter_certified = false;\r\n $scope.maxHeightChanged = false;\r\n $scope.showChart = true;\r\n $scope.dropDownChartItems = JSON.parse(\r\n angular\r\n .element(document.querySelector('#usageAnalysisMeter'))\r\n .attr('items'),\r\n )[0];\r\n let isHourly = false;\r\n let isDayPeriod = false;\r\n const yesterday = new Date();\r\n let userAgent;\r\n\r\n // Flag to see if last dropdown change was for hourly+day\r\n let hourlyDayTriggered = false;\r\n\r\n const formatedDate = function (recivedDate) {\r\n let dd = recivedDate.getDate();\r\n dd = dd < 10 ? `0${dd}` : dd;\r\n\r\n let mm = recivedDate.getMonth() + 1;\r\n mm = mm < 10 ? `0${mm}` : mm;\r\n\r\n const aa = `${mm} / ${dd} / ${recivedDate.getFullYear()}`;\r\n // console.log(\"formated date is \",aa);\r\n\r\n return `${mm} / ${dd} / ${recivedDate.getFullYear()}`;\r\n };\r\n\r\n const formatedDateNoSpaces = function (recivedDate) {\r\n let dd = recivedDate.getDate();\r\n dd = dd < 10 ? `0${dd}` : dd;\r\n\r\n let mm = recivedDate.getMonth() + 1;\r\n mm = mm < 10 ? `0${mm}` : mm;\r\n\r\n const aa = `${mm}/${dd}/${recivedDate.getFullYear()}`;\r\n // console.log(\"formated date is \",aa);\r\n\r\n return `${mm}/${dd}/${recivedDate.getFullYear()}`;\r\n };\r\n\r\n let today = new Date();\r\n today = formatedDate(today);\r\n let todayNoSpaces = new Date();\r\n todayNoSpaces = formatedDateNoSpaces(todayNoSpaces);\r\n\r\n /* PRINT FUNCTIONALITY */\r\n jQuery(document).bind('keyup keydown', (e) => {\r\n if (e.ctrlKey && e.keyCode == 80 && !(userAgent.indexOf('Edge/') > -1)) {\r\n window.print();\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n\r\n const isIE = function (userAgent) {\r\n userAgent = userAgent || navigator.userAgent;\r\n return (\r\n userAgent.indexOf('MSIE ') > -1\r\n || userAgent.indexOf('Trident/') > -1\r\n || userAgent.indexOf('Edge/') > -1\r\n );\r\n };\r\n\r\n const detectBrowser = (function () {\r\n userAgent = navigator.userAgent;\r\n let printClass = '';\r\n\r\n if (/Google Inc/.test(navigator.vendor)) printClass = 'chrome-print';\r\n else if (/Edge/.test(navigator.userAgent)) printClass = 'edge-print';\r\n else if (\r\n /Safari/.test(navigator.userAgent)\r\n && !/Chrome/.test(navigator.userAgent)\r\n ) printClass = 'safari-print';\r\n else if (/Trident/.test(navigator.userAgent)) printClass = 'ie-print';\r\n else if (/Firefox/.test(navigator.userAgent)) printClass = 'firefox-print';\r\n\r\n if (printClass != '') {\r\n angular.element('body').addClass(printClass);\r\n }\r\n }(\r\n (function () {\r\n const afterPrint = function () {\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768)\r\n || (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n // tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\r\n $('.duke-chart-container').css('width', '100%');\r\n $('.duke-chart-container').css('max-width', '100%');\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 1000;\r\n chart_selector.swidget().refresh();\r\n }\r\n };\r\n\r\n if ($window.matchMedia) {\r\n const mediaQueryList = $window.matchMedia('print');\r\n mediaQueryList.addListener((mql) => {\r\n if (!mql.matches) {\r\n afterPrint();\r\n }\r\n });\r\n }\r\n $window.onafterprint = afterPrint;\r\n\r\n const _print = $window.print;\r\n $window.print = function () {\r\n $scope.innerWidth = $window.innerWidth;\r\n $('.duke-chart-container')\r\n .css('width', '100%')\r\n .css('max-width', '100%');\r\n if (\r\n ($scope.innerWidth > 320 && $scope.innerWidth <= 768)\r\n || (isIE && $scope.innerWidth > 1200)\r\n ) {\r\n // tablet resolutions\r\n $('.duke-chart-container')\r\n .css('width', '100%')\r\n .css('max-width', '100%');\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 0;\r\n chart_selector.swidget().refresh();\r\n setTimeout(() => {\r\n _print();\r\n }, 500);\r\n } else {\r\n _print();\r\n }\r\n angular.element('.print-button').blur();\r\n };\r\n }()),\r\n ));\r\n\r\n $scope.printPage = function () {\r\n pushAnalytics('Print Page');\r\n $window.print();\r\n };\r\n /* END PRINT FUNCTIONALITY */\r\n\r\n $scope.exportData = function () {\r\n pushAnalytics('Export Data');\r\n\r\n saveTextAs(exportData, `${exportFilename}.csv`);\r\n angular.element('.export-button').blur();\r\n };\r\n\r\n const getExportData = function () {\r\n let dateValue;\r\n if ($scope.newCalendar) {\r\n dateValue = formatedDate($scope.forms.usageAnalysis.data.date)\r\n ? formatedDate($scope.forms.usageAnalysis.data.date)\r\n : today;\r\n } else {\r\n dateValue = $scope.forms.usageAnalysis.date.$viewValue\r\n ? $scope.forms.usageAnalysis.date.$viewValue\r\n : today;\r\n }\r\n\r\n const chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: dateValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n };\r\n\r\n $http({\r\n method: 'POST',\r\n url: export_url,\r\n data: chartObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((data, status, headers, config) => {\r\n if (data) {\r\n exportFilename = 'EnergyUsageExport';\r\n exportData = data.data;\r\n // saveTextAs(data, filename + \".csv\");\r\n }\r\n })\r\n .catch((data, status, headers, config) => {\r\n // handle error\r\n });\r\n };\r\n\r\n $scope.exportXML = function () {\r\n pushAnalytics('Download My Data XML');\r\n saveTextAs(grExportData, `${grExportFilename}.xml`);\r\n angular.element('.duke-gr-btn').blur();\r\n };\r\n\r\n const getExportXML = function () {\r\n\r\n const grChartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\r\n };\r\n\r\n $http({\r\n method: 'POST',\r\n url: grexport_url,\r\n data: grChartObj,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n .then((data, status, headers, config) => {\r\n if (data.data != \"\" && data.data != null && data.data != \"Unexpected Failure\") {\r\n grExportFilename = 'DownloadMyData';\r\n grExportData = data.data;\r\n $scope.grLoaded = true;\r\n } else {\r\n $scope.grError = true;\r\n }\r\n })\r\n .catch((data, status, headers, config) => {\r\n // handle error\r\n });\r\n }\r\n\r\n let pushAnalytics = function (dataLabel) {\r\n const dataActionTag = `${$scope.meterTag} - ${angular\r\n .element('div#graph > button > span')\r\n .text()} - ${angular\r\n .element('.shared-calendar > div.date-area > input')\r\n .val()} - ${angular.element('div#period > button > span').text()}`;\r\n\r\n let eventTag = 'usage-analysis-export-data';\r\n if (dataLabel == 'Print Page') eventTag = 'usage-analysis-print-page';\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-action': dataActionTag,\r\n 'data-label': dataLabel,\r\n event: eventTag,\r\n });\r\n };\r\n\r\n const updateTableX = function (response) {\r\n if (response.data.Status == 'OK') {\r\n $scope.usage_table = response.data.Data;\r\n } else if (response.data.Status == 'ERROR') {\r\n $scope.error_message = response.data.ErrorMsg;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n const updateChartX = function (response) {\r\n if ($scope.toPreviousDate && !$scope.newCalendar) {\r\n angular.element('.shared-calendar > div.date-area > input')[0].value = $scope.forms.usageAnalysis.date.$viewValue;\r\n }\r\n\r\n enableSelectors();\r\n // if(!(isHourly && isDayPeriod))\r\n getExportData();\r\n if ($scope.grexport === true) {\r\n getExportXML();\r\n }\r\n\r\n\r\n if (response.data.Status == 'OK') {\r\n // $scope.analytics = { chartType: \"Smart Meter\" };\r\n // $scope.analytics.chartType = $scope.analytics.chartType + response.data.DataLabelInfo;\r\n // pushAnalytics($scope.analytics.chartType);\r\n\r\n if (DailyAvgWeekException) response.data.temperatures = [];\r\n\r\n getDataGraph(response.data);\r\n } else if (response.data.Status == 'ERROR') {\r\n $scope.error_message = response.data.ErrorMsg;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n let getDataGraph = function (data) {\r\n if (data.meterData.Electric && data.meterData.Gas) {\r\n $scope.table_type = 'all';\r\n getAllMeter();\r\n return;\r\n }\r\n\r\n if (data.meterData.Electric) {\r\n $scope.table_type = 'electric';\r\n getElectricMeter(data);\r\n return;\r\n }\r\n\r\n if (data.meterData.Gas) {\r\n $scope.table_type = 'gas';\r\n getGasMeter(data);\r\n return;\r\n }\r\n\r\n if (!data.meterData.Electric && !data.meterData.Gas) {\r\n $scope.loaded = true;\r\n getErrorPanel();\r\n }\r\n };\r\n\r\n let getAllMeter = function () {\r\n getErrorPanel();\r\n };\r\n\r\n let getElectricMeter = function (newData) {\r\n const electricdata = {\r\n dataSeries: [\r\n {\r\n axisY: 0,\r\n collectionAlias: 'ELECTRIC',\r\n data: newData.meterData.Electric,\r\n color: '#54B848',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 2,\r\n collectionAlias: 'AVERAGE',\r\n color: 'gray',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 1,\r\n collectionAlias: 'TEMPERATURE',\r\n data: newData.temperatures,\r\n color: 'green',\r\n zIndex: 9,\r\n },\r\n ],\r\n labels: newData.labels,\r\n average: newData.average,\r\n chartTitle: newData.chartTitle,\r\n chartMessage: newData.chartMessage,\r\n chartFooter: newData.chartFooter,\r\n leftText: newData.unitOfMeasure1,\r\n rightText: newData.unitOfMeasure2,\r\n };\r\n\r\n if (\r\n !newData.temperatures\r\n || (newData.temperatures && !(newData.temperatures.length > 0))\r\n ) {\r\n const index = _.indexOf(\r\n electricdata.dataSeries,\r\n _.find(electricdata.dataSeries, 'collectionAlias', 'TEMPERATURE'),\r\n );\r\n electricdata.dataSeries.splice(index, 1);\r\n }\r\n\r\n updateChart(electricdata);\r\n };\r\n\r\n let getGasMeter = function (newData) {\r\n const gasdata = {\r\n dataSeries: [\r\n {\r\n axisY: 0,\r\n collectionAlias: 'GAS',\r\n data: newData.meterData.Gas,\r\n color: '#52B0F0',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 2,\r\n collectionAlias: 'AVERAGE',\r\n color: 'gray',\r\n },\r\n {\r\n seriesType: 'line',\r\n axisY: 1,\r\n collectionAlias: 'TEMPERATURE',\r\n data: newData.temperatures,\r\n color: 'green',\r\n zIndex: 9,\r\n },\r\n ],\r\n labels: newData.labels,\r\n average: newData.average,\r\n chartTitle: newData.chartTitle,\r\n chartMessage: newData.chartMessage,\r\n chartFooter: newData.chartFooter,\r\n leftText: newData.unitOfMeasure1,\r\n rightText: newData.unitOfMeasure2,\r\n };\r\n\r\n if (!newData.temperatures) {\r\n const index = _.indexOf(\r\n gasdata.dataSeries,\r\n _.find(gasdata.dataSeries, 'collectionAlias', 'TEMPERATURE'),\r\n );\r\n gasdata.dataSeries.splice(index, 1);\r\n }\r\n\r\n updateChart(gasdata);\r\n };\r\n\r\n let getErrorPanel = function () {\r\n const data_label_error = `Error: ${$scope.error_message}`;\r\n enableSelectors();\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis_error',\r\n 'data-label': 'Usage Analysis',\r\n 'data-action': data_label_error,\r\n event: 'usage-analysis-error-message',\r\n });\r\n if ($scope.error_message == '' || !$scope.error_message) {\r\n $scope.error_message = $scope.error_message_default;\r\n }\r\n $scope.errorPanel = true;\r\n };\r\n\r\n let updateChart = function (newData) {\r\n const timeOut = 600;\r\n usageData.axisX.categoricalValues = newData.labels;\r\n usageData.axisY[0].plotLines[0].start = newData.average;\r\n usageData.axisY[0].title.text = newData.leftText;\r\n usageData.axisY[1].title.text = newData.rightText;\r\n usageData.dataSeries = newData.dataSeries;\r\n\r\n $scope.chart.title = newData.chartTitle;\r\n $scope.chart.message = newData.chartMessage;\r\n $scope.chart.footer = newData.chartFooter;\r\n\r\n const widget = chart_selector.swidget();\r\n\r\n if ($scope.errorPanel) {\r\n $timeout(() => {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.shieldChart(usageData);\r\n }, timeOut);\r\n } else {\r\n $timeout(() => {\r\n if (widget) {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n widget.refresh(usageData);\r\n } else {\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.shieldChart(usageData);\r\n }\r\n\r\n const testFunction = function () {\r\n chart_selector.swidget().refresh();\r\n $scope.loaded = true;\r\n $scope.$apply();\r\n chart_selector.swidget().refresh();\r\n };\r\n\r\n $timeout(() => {\r\n const widget = chart_selector.swidget();\r\n widget.options.seriesSettings.line.applyAnimation = 0;\r\n widget.options.seriesSettings.bar.applyAnimation = 1000;\r\n testFunction();\r\n }, 600);\r\n }, timeOut);\r\n }\r\n };\r\n\r\n let usageData = {\r\n chartLegend: {\r\n enable: false,\r\n },\r\n theme: 'bootstrap',\r\n exportOptions: {\r\n image: true,\r\n print: true,\r\n },\r\n events: {\r\n legendSeriesClick(e) {\r\n // stop the series item click event, so that\r\n // user clicks do not toggle visibility of the serie\r\n e.preventDefault();\r\n },\r\n },\r\n tooltipSettings: {\r\n chartBound: true,\r\n },\r\n primaryHeader: {\r\n text: '',\r\n },\r\n axisX: {\r\n categoricalValues: [],\r\n },\r\n axisY: [\r\n {\r\n plotLines: [\r\n {\r\n start: 100,\r\n zIndex: 5,\r\n drawWidth: 2,\r\n drawColor: 'gray',\r\n label: {\r\n style: {\r\n color: 'gray',\r\n },\r\n },\r\n },\r\n ],\r\n title: {\r\n enable: false,\r\n text: 'kWh',\r\n enale: false,\r\n ontWeight: 'bold',\r\n style: {\r\n color: '#696969',\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n {\r\n title: {\r\n enable: false,\r\n text: 'CCF',\r\n textAngle: 270,\r\n fontWeight: 'bold',\r\n style: {\r\n color: '#696969',\r\n fontSize: '14px',\r\n },\r\n },\r\n swapLocation: true,\r\n },\r\n {\r\n axisTickText: {\r\n enabled: false,\r\n },\r\n min: 0,\r\n },\r\n {\r\n axisTickText: {\r\n enabled: false,\r\n },\r\n min: 0,\r\n },\r\n ],\r\n seriesSettings: {\r\n line: {\r\n dataPointText: {\r\n enabled: true,\r\n borderColor: 'green',\r\n borderWidth: 1,\r\n y: 10,\r\n borderRadius: 500,\r\n padding: 5,\r\n backgroundColor: '#FFF',\r\n style: 'font-size: 11px',\r\n },\r\n applyAnimation: {\r\n duration: 0,\r\n },\r\n },\r\n bar: {\r\n applyAnimation: {\r\n duration: 1000,\r\n },\r\n },\r\n },\r\n plotLines: [\r\n {\r\n start: 100,\r\n drawWidth: 2,\r\n drawColor: '#C90515',\r\n zIndex: 2,\r\n },\r\n ],\r\n };\r\n\r\n const updateGraphFilters = function (item) {\r\n $scope.graph_items = item.graphItems;\r\n };\r\n $scope.updatePeriodFilters = function (item) {\r\n updatePeriodFilters(item);\r\n };\r\n $scope.updateGraphFilters = function (item) {\r\n updateGraphFilters(item);\r\n };\r\n\r\n const findSelected = function (items) {\r\n if (\r\n _.find(items, {\r\n selected: true,\r\n })\r\n ) {\r\n return _.find(items, {\r\n selected: true,\r\n });\r\n }\r\n items[0].selected = true;\r\n return items[0];\r\n };\r\n\r\n const disableSelectors = function () {\r\n const selectors = angular.element(\r\n '.data-selector input, .data-selector button',\r\n );\r\n selectors.attr('disabled', 'disabled');\r\n selectors.css('opacity', '.7');\r\n };\r\n\r\n var enableSelectors = function () {\r\n const selectors = angular.element(\r\n '.data-selector input, .data-selector button',\r\n );\r\n selectors.removeAttr('disabled');\r\n selectors.css('opacity', '1');\r\n };\r\n var updateSelectors = function (item, extra) {\r\n if (extra === 'Meter') {\r\n updateGraphFilters(item);\r\n $scope.start_date = item.CalendarStartDate;\r\n $scope.end_date = item.CalendarEndDate;\r\n // $scope.start_date = \"10/15/2016\";\r\n // $scope.end_date = \"10/15/2018\";\r\n $scope.original_end_date = $scope.end_date;\r\n $scope.current_date = item.CalendarCurrentDate;\r\n updateSelectors(findSelected(item.graphItems), 'Graph');\r\n return;\r\n }\r\n\r\n if (extra === 'Graph') {\r\n graphText = item.text;\r\n updatePeriodFilters(item);\r\n $timeout(() => {\r\n $scope.updateOnlyChart();\r\n }, 500);\r\n }\r\n };\r\n\r\n $scope.interactGraph = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n isHourly = item.value.toLowerCase().indexOf('hourly') > -1;\r\n\r\n dropdownInteraction = 'Graph';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Graph',\r\n 'data-action': item.text,\r\n event: 'usage-analysis-graph-change',\r\n });\r\n graphText = item.text;\r\n changedGraph = true;\r\n updatePeriodFilters(item);\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n $scope.interactDate = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n // Google Analytics\r\n $scope.toPreviousDate = false;\r\n if (isHourly && isDayPeriod) fetchPreviousDay();\r\n\r\n let dateForAction;\r\n if ($scope.newCalendar) dateForAction = formatedDate($scope.forms.usageAnalysis.data.date);\r\n else {\r\n dateForAction = $scope.forms.usageAnalysis.date.$modelValue\r\n ? $scope.forms.usageAnalysis.date.$modelValue\r\n : $scope.forms.usageAnalysis.date.$viewValue;\r\n }\r\n // console.log(\"new date is \"+dateForAction);\r\n\r\n dropdownInteraction = 'Date';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Date',\r\n 'data-action': dateForAction,\r\n event: 'usage-analysis-date-change',\r\n });\r\n // $scope.interactPeriod();\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n var fetchPreviousDay = function () {\r\n let yesterday;\r\n\r\n if ($scope.newCalendar) {\r\n hourlyDayTriggered = true;\r\n\r\n yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n $scope.end_date = formatedDate(yesterday);\r\n\r\n if (formatedDate($scope.forms.usageAnalysis.data.date) == today) {\r\n $scope.toPreviousDate = true;\r\n $scope.forms.usageAnalysis.data.date = new Date(\r\n $scope.forms.usageAnalysis.data.date.getFullYear(),\r\n $scope.forms.usageAnalysis.data.date.getMonth(),\r\n $scope.forms.usageAnalysis.data.date.getDate() - 1,\r\n );\r\n }\r\n } else if (\r\n $scope.forms.usageAnalysis.date.$modelValue == today\r\n && $scope.forms.usageAnalysis.date.$viewValue == today\r\n ) {\r\n yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n\r\n const temp = new Date();\r\n temp.setDate(temp.getDate() - 1);\r\n\r\n yesterday = formatedDate(yesterday);\r\n $scope.forms.usageAnalysis.date.$modelValue == today\r\n ? (($scope.forms.usageAnalysis.date.$modelValue = yesterday),\r\n ($scope.toPreviousDate = true))\r\n : $scope.forms.usageAnalysis.date.$modelValue;\r\n $scope.forms.usageAnalysis.date.$viewValue == today\r\n ? (($scope.forms.usageAnalysis.date.$viewValue = yesterday),\r\n ($scope.toPreviousDate = true))\r\n : $scope.forms.usageAnalysis.date.$viewValu;\r\n angular\r\n .element('.shared-calendar > div.date-area > input')\r\n .scope()\r\n .changeCalendarPointer(\r\n temp.getFullYear(),\r\n temp.getMonth(),\r\n temp.getDate(),\r\n );\r\n }\r\n };\r\n\r\n var triggerCalendarValidation = function () {\r\n if (hourlyDayTriggered) {\r\n $scope.end_date = formatedDate(new Date());\r\n if (!isNaN(Date.parse($('.md-datepicker-input').val()))) {\r\n const inputDate = $('.md-datepicker-input')\r\n .val()\r\n .split(' / ');\r\n $scope.forms.usageAnalysis.data.date = new Date(\r\n inputDate[2],\r\n inputDate[0] - 1,\r\n inputDate[1],\r\n );\r\n }\r\n }\r\n\r\n hourlyDayTriggered = false;\r\n };\r\n\r\n $scope.interactPeriod = function (item) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n isDayPeriod = item.value.toLowerCase().indexOf('day') > -1;\r\n\r\n if (isHourly && isDayPeriod) fetchPreviousDay();\r\n\r\n dropdownInteraction = 'Period';\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Period',\r\n 'data-action': item.text,\r\n event: 'usage-analysis-period-change',\r\n });\r\n $scope.updateOnlyChart(item);\r\n };\r\n\r\n $scope.updateOnlyChart = function (item) {\r\n disableSelectors();\r\n $scope.loaded = false;\r\n $scope.errorPanel = false;\r\n if ($scope.newCalendar) {\r\n if (changedGraph) {\r\n var chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: newPeriodValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n\r\n changedGraph = false;\r\n } else {\r\n var chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n }\r\n } else if (changedGraph) {\r\n var chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: $scope.forms.usageAnalysis.date.$viewValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: newPeriodValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n\r\n changedGraph = false;\r\n } else {\r\n var chartObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n Date: $scope.forms.usageAnalysis.date.$viewValue,\r\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\r\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\r\n GraphText: graphText,\r\n ActiveDate: $scope.start_date,\r\n };\r\n }\r\n\r\n DailyAvgWeekException = false;\r\n if (chartObj.Graph == 'DailyEnergy' && chartObj.BillingFrequency == 'Week') DailyAvgWeekException = true;\r\n\r\n $http\r\n .post(api_url_graph, chartObj, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(updateChartX, updateChartX);\r\n };\r\n\r\n var updatePeriodFilters = function (item) {\r\n newPeriodValue = item.periodItems[0].value;\r\n\r\n for (let i = 0; i < item.periodItems.length; i++) {\r\n item.periodItems[i].selected = true;\r\n if (i > 0) item.periodItems[i].selected = false;\r\n }\r\n\r\n $scope.period_items = item.periodItems;\r\n };\r\n\r\n $scope.changeDateFormat = function (billDate) {\r\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\r\n };\r\n\r\n // $scope.submitForm = function (url, billDate) {\r\n // billDate = billDate.replace(/(..).(..).(....)/, \"$3-$1-$2\");\r\n // console.log(billDate);\r\n // var param = [{ 'ActionType': 'ViewBill' }, { 'Billdate': billDate }];\r\n // submitPostCall(url, param);\r\n // }\r\n\r\n // function submitPostCall(url, params) {\r\n // var form = document.createElement(\"form\");\r\n // form.setAttribute(\"method\", \"post\");\r\n // form.setAttribute(\"action\", url);\r\n\r\n // for (var element = 0; element < params.length; element++) {\r\n // var temp = params[element];\r\n // for (var i in temp) {\r\n // if (temp.hasOwnProperty(i)) {\r\n // var input = document.createElement('input');\r\n // input.type = 'hidden';\r\n // input.name = i;\r\n // input.value = temp[i];\r\n // form.appendChild(input);\r\n // }\r\n // }\r\n // }\r\n\r\n // document.body.appendChild(form);\r\n // form.submit();\r\n // document.body.removeChild(form);\r\n // }\r\n\r\n $scope.initSelectors = function (item) {\r\n $timeout(() => {\r\n $scope.onMeterChange(item);\r\n }, 1300);\r\n };\r\n\r\n $scope.onMeterChange = function (item, analytics_value) {\r\n triggerCalendarValidation();\r\n\r\n $scope.end_date = $scope.original_end_date;\r\n $scope.toPreviousDate = false;\r\n dropdownInteraction = 'Meter';\r\n const meterDataAction = item.text.split('-');\r\n $scope.meterTag = $.trim(meterDataAction[0]);\r\n // Google Analytics\r\n if (!meterLoaded) {\r\n meterLoaded = true;\r\n let gasType = '';\r\n let electricType = '';\r\n\r\n if (\r\n typeof angular.element('#trackinginfo').attr('gas')\r\n !== typeof undefined\r\n && angular.element('#trackinginfo').attr('gas') !== false\r\n ) gasType = 'gas';\r\n\r\n if (\r\n typeof angular.element('#trackinginfo').attr('electric')\r\n !== typeof undefined\r\n && angular.element('#trackinginfo').attr('electric') !== false\r\n ) electricType = 'electric';\r\n\r\n let dataAction = '';\r\n if (gasType != '' && electricType != '') dataAction = `${gasType} ${electricType}`;\r\n else dataAction = gasType + electricType;\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'ServiceType',\r\n serviceType: dataAction,\r\n event: 'usage-analysis-web-service',\r\n });\r\n } else {\r\n // console.log(\"new analytics: \" + angular.element('#trackinginfo').attr('gas'));\r\n\r\n $rootScope.dataLayer.push({\r\n 'data-category': 'usage_analysis',\r\n 'data-label': 'Meter',\r\n 'data-action': $scope.meterTag,\r\n event: 'usage-analysis-meter-change',\r\n });\r\n }\r\n\r\n $scope.meter_certified = item.certified;\r\n\r\n // update table\r\n $scope.loaded = false;\r\n const tableObj = {\r\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\r\n };\r\n $http\r\n .post(api_url_table, tableObj, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(updateTableX, getErrorPanel);\r\n updateSelectors(item, 'Meter');\r\n };\r\n\r\n $scope.adjustTableMobile = function () {\r\n if ($scope.maxHeightChanged) $scope.maxHeightChanged = false;\r\n else $scope.maxHeightChanged = true;\r\n };\r\n}\r\n\r\nusageAnalysisController.$inject = [\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n];\r\napp.controller('usageAnalysisController', usageAnalysisController);\r\n","/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\nfunction AccountInfoControllerLightAuth($scope, $window, $rootScope, $element, $compile, $timeout) {\n var vm = this;\n $scope.accounts = [];\n vm.singleMultipleName = \"\";\n vm.accountSelected = false;\n $timeout(function () {\n if (vm.singleMultiple > 1) {\n vm.singleMultipleName = \"Multiple\";\n } else if (vm.singleMultiple == 1) {\n vm.singleMultipleName = \"Single\";\n }\n }, 0);\n vm.selectAccount = function (account) {\n vm.selectedAccount = JSON.stringify(account);\n vm.accountSelected = true;\n vm.accountNumberSelected = account.AccountNumber;\n };\n var $this = $scope,\n $el = $element,\n $moreInfoPane = null,\n showMoreBtn = angular.element('button.more-info-label');\n vm.showAllMsg = \"\";\n vm.showLessMsg = \"\";\n vm.currentShowMsg = \"\";\n $moreInfoPane = angular.element($el.find('.more-info-more'));\n vm.setShowLabels = function (more, less) {\n vm.showAllMsg = more;\n vm.showLessMsg = less;\n vm.currentShowMsg = vm.showAllMsg;\n vm.showIcon = \"caret-arrow-down\";\n };\n vm.toggleMoreInfo = function (toggleButton) {\n toggleButton.preventDefault();\n var currentToggleButton = angular.element(toggleButton.currentTarget);\n currentToggleButton.attr('aria-pressed', 'true');\n if (vm.currentShowMsg == vm.showLessMsg) {\n vm.showIcon = \"caret-arrow-down\";\n vm.currentShowMsg = vm.showAllMsg;\n currentToggleButton.attr('aria-expanded', 'false');\n currentToggleButton.attr('aria-pressed', 'false');\n } else {\n vm.showIcon = \"caret-arrow-up\";\n vm.currentShowMsg = vm.showLessMsg;\n currentToggleButton.attr('aria-expanded', 'true');\n }\n $moreInfoPane.slideToggle();\n $scope.$watch('accounts', function () {\n if ($scope.accounts.length < 11) {\n showMoreBtn.remove();\n }\n });\n var element = angular.element('table.moreaccounts.more');\n if ($(document).width() > 767) {\n $(element).attr('style', 'margin-bottom: 13px !important');\n } else {\n $(element).attr('style', 'margin-bottom: 0px !important');\n }\n var element2 = angular.element('table.moreaccounts.more.din-pad');\n if ($(document).width() > 767) {\n $(element2).attr('style', 'margin-bottom: 20px !important');\n } else {\n $(element2).attr('style', 'margin-bottom: 8px !important');\n }\n };\n $(window).resize(function () {\n var element = document.querySelectorAll('table.moreaccounts.more');\n if ($(document).width() > 767) $(element).attr('style', 'margin-bottom: 50px !important');else $(element).attr('style', 'margin-bottom: 37px !important');\n });\n $scope.closeModal = function ($element) {\n angular.element(\".modal\").modal(\"hide\");\n };\n}\n;\nAccountInfoControllerLightAuth.$inject = ['$scope', '$window', '$rootScope', '$element', '$compile', '$timeout'];\napp.controller('AccountInfoControllerLightAuth', AccountInfoControllerLightAuth);\n/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\nfunction AccountInfoController($scope, $window, $rootScope, $templateCache, $element, $controller) {\n var vm = this;\n vm.indexOfSelected = null;\n vm.selected = false;\n $scope.accounts = [];\n vm.isSelectedArray = [];\n vm.accountSelected = null;\n $('.test-tooltip-1').tooltip({\n container: '.container-1'\n });\n $('.test-tooltip-2').tooltip({\n container: '.container-2'\n });\n vm.indexSelected = function (index) {\n for (var i = 0; i < vm.isSelectedArray.length; i++) {\n vm.isSelectedArray[i] = false;\n $scope.accounts[i].IsPrimary = false;\n }\n vm.isSelectedArray[index] = true;\n $scope.accounts[index].IsPrimary = true;\n vm.accountSelected = $scope.accounts;\n };\n document.querySelectorAll('.input-control').maxLength = \"75\";\n $scope.clearSearch = function () {\n $scope.accountVerificationForm.data.lastSsn = \"\";\n $scope.accountVerificationForm.data.fedtax = \"\";\n };\n $scope.analytics = {\n value: \"\"\n };\n $scope.selectType = function (event, type) {\n var selectedRadio = $scope.analytics.value;\n };\n $scope.onSelectItem = function (item) {\n $scope.itemValueText = item.text;\n };\n $scope.radioselected = function (value) {\n $scope.analytics.value = value;\n };\n $scope.$watch('accounts', function () {\n for (var i = 0; i < $scope.accounts.length; i++) {\n vm.isSelectedArray.push(false);\n }\n vm.accountSelected = $scope.accounts;\n });\n var iW = angular.element(document).innerWidth();\n if (iW < 720) {\n $('.order-change-r').insertBefore('.order-change-l');\n } else {\n $('.order-change-r').insertAfter('.order-change-l');\n }\n $window.onresize = function () {\n var iW = angular.element(document).innerWidth();\n if (iW < 720) {\n $('.order-change-r').insertBefore('.order-change-l');\n } else {\n $('.order-change-r').insertAfter('.order-change-l');\n }\n };\n var $this = $scope,\n $el = $element,\n $moreInfoPane = null,\n showMoreBtn = angular.element('button.more-info-label');\n vm.showAllMsg = \"\";\n vm.showLessMsg = \"\";\n vm.currentShowMsg = \"\";\n $moreInfoPane = angular.element($el.find('.more-info-more'));\n vm.relativeURL = $window.location.pathname;\n vm.setShowLabels = function (more, less) {\n vm.showAllMsg = more;\n vm.showLessMsg = less;\n vm.currentShowMsg = vm.showAllMsg;\n vm.showIcon = \"caret-arrow-down\";\n };\n vm.toggleMoreInfo = function (toggleButton) {\n toggleButton.preventDefault();\n var currentToggleButton = angular.element(toggleButton.currentTarget);\n currentToggleButton.attr('aria-pressed', 'true');\n if (vm.currentShowMsg == vm.showLessMsg) {\n vm.showIcon = \"caret-arrow-down\";\n vm.currentShowMsg = vm.showAllMsg;\n currentToggleButton.attr('aria-expanded', 'false');\n currentToggleButton.attr('aria-pressed', 'false');\n } else {\n vm.showIcon = \"caret-arrow-up\";\n vm.currentShowMsg = vm.showLessMsg;\n currentToggleButton.attr('aria-expanded', 'true');\n }\n $moreInfoPane.slideToggle();\n $scope.$watch('accounts', function () {\n if ($scope.accounts.length < 11) {\n showMoreBtn.remove();\n }\n });\n var element = angular.element('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more');\n if ($(document).width() > 767) {\n $(element).attr('style', 'margin-bottom: 13px !important');\n } else {\n $(element).attr('style', 'margin-bottom: 0px !important');\n }\n var element2 = angular.element('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more.din-pad');\n if ($(document).width() > 767) {\n $(element2).attr('style', 'margin-bottom: 20px !important');\n } else {\n $(element2).attr('style', 'margin-bottom: 8px !important');\n }\n };\n $(window).resize(function () {\n var element = document.querySelectorAll('.auth.account-info .general-form-styles .auth-form.duke-form.table-responsive table.moreaccounts.more');\n if ($(document).width() > 767) $(element).attr('style', 'margin-bottom: 50px !important');else $(element).attr('style', 'margin-bottom: 37px !important');\n });\n vm.toggleMoreInfoOnKeyUp = function (toggleButton) {\n toggleButton.preventDefault();\n if (toggleButton.keyCode === 32) {\n vm.toggleMoreInfo(toggleButton);\n }\n };\n $scope.closeModal = function ($element) {\n angular.element(\".modal\").modal(\"hide\");\n };\n $scope.passwordStrengthIndicator = function () {\n var validations = [$scope.regexp_smallLetters, $scope.regexp_capitalLetters, $scope.regexp_digits, $scope.regexp_specialChars],\n validationsLength = validations.length,\n errors = [{\n 'exp': $scope.regexp_3times,\n 'value': 0\n }, {\n 'exp': $scope.regexp_whitespace,\n 'value': 0\n }],\n errorsLength = errors.length,\n password = \"\",\n passwordLength = 0,\n passwordField = \"\";\n var back,\n forth,\n i,\n letters = 'abcdefghijklmnopqrstuvwxyz',\n firstline = 'qwertyuiop',\n secondline = 'asdfghjkl',\n thirdline = 'zxcvbnm',\n numbers = '01234567890',\n symbols = '\\!@#$%&/()=?¿';\n function evalRegex(regex) {\n if (regex.test(password)) {\n return 1;\n } else {\n return 0;\n }\n }\n function strength() {\n var strengthRegex = 0,\n strengthLength = 0,\n strength = 0,\n i = 0;\n\n /* Checks if all the validations match. */\n for (i = 0; i < validationsLength; i++) {\n strengthRegex += evalRegex(validations[i]);\n }\n\n /* Verifies if the length of the string is more than 10 chars. */\n strengthLength = passwordLength < 10 ? 0 : 1;\n\n /* Assigns the proper strength based on the length and the regex values. */\n if (strengthRegex >= 3) {\n strength = strengthLength ? 2 : 1;\n } else {\n strength = 0;\n }\n return strength;\n }\n function returnErrorCode() {\n var strength = 1,\n i;\n\n /* Verifies if the string contains any error declared on the private variable \"errors\" */\n for (i = 0; i < errorsLength; i++) {\n if (evalRegex(errors[i].exp)) {\n strength = errors[i].value;\n break;\n }\n }\n return strength;\n }\n function getStrength() {\n var errorCode = returnErrorCode();\n var response = errorCode < 1 ? errorCode : strength();\n\n /* If the string is not valid, sets the value of the error. Othewise, the logic can be launched in order to improve the performance. */\n return response;\n }\n function setStrength(strength, tooShort) {\n /* Sets the strength and tooShort models. */\n $scope.strength = strength;\n $scope.tooShort = tooShort;\n if ($scope.tooShort || $scope.strength < 1) {\n passwordField.$setValidity(\"format\", false);\n passwordField.$validate();\n } else {\n passwordField.$setValidity(\"format\", true);\n }\n passwordField.$validate();\n }\n function startStrengthIndicator() {\n /* When the minlength is ok, gets the strength from getStrength() function. Otherwise sets the strength as too short. */\n password.length >= 8 ? setStrength(getStrength(password), false) : setStrength(-1, true);\n }\n var stringReverse = function stringReverse(str) {\n for (var _i = str.length - 1, _out = ''; _i >= 0; _out += str[_i--]) {}\n return out;\n };\n function passwordStrengthIndicator(pswrd) {\n passwordField = pswrd;\n\n /* Initialize the private variables. */\n //password = passwordField.$modelValue;\n password = angular.element(\"[name='\" + passwordField.$name + \"']\").val();\n //password = pswrd;\n passwordLength = password ? password.length : 0;\n\n /* Launches startStrengthIndicator() method upon the entry of 6 chars. */\n if (passwordLength >= 1) {\n checkWhiteSpaces() ? setStrength(-3, false) : startStrengthIndicator();\n } else {\n // 1 for whitespaces\n checkWhiteSpaces() ? setStrength(-3, false) : setStrength(-1, false);\n }\n\n // sequential letters (back and forth)\n for (i = 0; i < letters.length - 2; i++) {\n var p2 = password.toLowerCase();\n forth = letters.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (p2.indexOf(forth) !== -1 || p2.indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n\n // sequential firstline (back and forth)\n for (i = 0; i < firstline.length - 2; i++) {\n var _p = password.toLowerCase();\n forth = firstline.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (_p.indexOf(forth) !== -1 || _p.indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n\n // sequential secondline (back and forth)\n for (i = 0; i < secondline.length - 2; i++) {\n var _p2 = password.toLowerCase();\n forth = secondline.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (_p2.indexOf(forth) !== -1 || _p2.indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n\n // sequential thirdline (back and forth)\n for (i = 0; i < thirdline.length - 2; i++) {\n var _p3 = password.toLowerCase();\n forth = thirdline.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (_p3.indexOf(forth) !== -1 || _p3.indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n\n // sequential numbers (back and forth)\n for (i = 0; i < numbers.length - 2; i++) {\n forth = numbers.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (password.indexOf(forth) !== -1 || password.toLowerCase().indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n\n // sequential symbols (back and forth)\n for (i = 0; i < symbols.length - 2; i++) {\n forth = symbols.substring(i, parseInt(i + 4));\n back = stringReverse(forth);\n if (password.indexOf(forth) !== -1 || password.toLowerCase().indexOf(back) !== -1) {\n setStrength(0, false);\n break;\n }\n }\n }\n function checkWhiteSpaces() {\n var whitespaces_test = errors[1];\n return evalRegex(whitespaces_test.exp);\n }\n return {\n start: passwordStrengthIndicator\n };\n }();\n}\n;\nAccountInfoController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element', '$controller'];\napp.controller('AccountInfoController', AccountInfoController);\n\nfunction accountSummaryPaymentOptionsController($scope, $sce, $window, $element, $document, $cookies, $http, myAccountFactory, $timeout, $rootScope) {\n /**Use this script for ADA kewboard functionality**/\n $element.find(\".info-tooltip-accout-summary\").focusout(function () {\n var linkPopover = $element.find(\".ns-popover-right-placement .ns-popover-tooltip a\");\n linkPopover.hover();\n linkPopover.focusout(function () {\n var popoverRight = $element.find(\".ns-popover-right-placement\");\n popoverRight.css('display', 'none');\n });\n });\n $scope.placementPositionStr = \"auto right\";\n var checkWindow = function checkWindow() {\n var width = angular.element(window).width();\n if (width <= 767) {\n //$scope.placementPositionStr = \"bottom|center\";\n $scope.placementPositionStr = \"bottom\";\n } else {\n $scope.placementPositionStr = \"auto right\";\n }\n $scope.$apply();\n };\n angular.element(\"document\").ready(function (context, source) {\n checkWindow();\n });\n $scope.pO = {};\n myAccountFactory.getJson(\"/api/PaymentOptions/GetPaymentOptions\").then(function (greeting) {\n $scope.pO = greeting.data;\n if (greeting.data.JsonAnalitycs) {\n $scope.jsonAnalyticsPaymentOptions = greeting.data.JsonAnalitycs;\n }\n var poTrackings = document.getElementsByClassName('paymentOptionsTrackingInfo');\n for (var i = 0; i < poTrackings.length; i++) {\n poTrackings[i].setAttribute('json-analytics', JSON.stringify(greeting.data.JsonAnalitycs));\n }\n $rootScope.dataLayer.push(greeting.data.JsonAnalitycs);\n $scope.paymentLoader = false;\n $scope.paymentSatus = 200;\n }).catch(function (reason) {\n $scope.paymentLoader = false;\n $scope.paymentSatus = 500;\n });\n $scope.paymentSatus = 200;\n $scope.paymentLoader = true;\n}\naccountSummaryPaymentOptionsController.$inject = ['$scope', '$sce', '$window', '$element', '$document', '$cookies', '$http', 'myAccountFactory', '$timeout', '$rootScope'];\napp.controller('accountSummaryPaymentOptionsController', accountSummaryPaymentOptionsController);\nfunction accountSummaryController($scope, $sce, $window, $element, $document, $cookies, $http, myAccountFactory, $timeout, $rootScope) {\n /**Use this script for ADA kewboard functionality**/\n\n $element.find('.info-tooltip-accout-summary').focusout(function () {\n var linkPopover = $element.find('.ns-popover-right-placement .ns-popover-tooltip a');\n linkPopover.hover();\n linkPopover.focusout(function () {\n var popoverRight = $element.find('.ns-popover-right-placement');\n popoverRight.css('display', 'none');\n });\n });\n $scope.placementPositionStr = 'auto right';\n var checkWindow = function checkWindow() {\n var width = angular.element(window).width();\n if (width <= 767) {\n $scope.placementPositionStr = 'bottom';\n } else {\n $scope.placementPositionStr = 'auto right';\n }\n $scope.$apply();\n };\n angular.element('document').ready(function (context, source) {\n checkWindow();\n });\n var paybillMessage = $element.find('.i-message');\n if (paybillMessage) {\n paybillMessage.on('mouseenter', function () {\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover('show');\n }\n });\n }\n $(window).scroll(function () {\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover('hide');\n }\n });\n\n //See duke-tooltip-content.js directive to see dataLayer push foor tooltipMessage.\n $scope.tooltipMessage = '';\n $scope.updateTooltipMessage = function () {\n if ($scope.rv.Tooltip) {\n if ($scope.rv.ShowTooltipButton) {\n $scope.tooltipMessage = $scope.rv.Tooltip.Message + '
';\n if ($scope.rv.IsdeferredPayment) {\n $scope.tooltipMessage = $scope.tooltipMessage + '' + $scope.rv.Tooltip.SecondButtonLabel + '';\n }\n $scope.tooltipMessage = $scope.tooltipMessage + ' ' + $scope.rv.Tooltip.PayNowButtonLabel + '
';\n } else {\n $scope.tooltipMessage = $scope.rv.Tooltip.Message;\n }\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover({\n trigger: 'manual',\n content: function content() {\n return $('.popover-inside').html();\n },\n html: true,\n animation: false\n }).on('mouseenter', function () {\n var _this = this;\n $(this).popover('show');\n $('.popover').on('mouseleave', function () {\n $(_this).popover('hide');\n });\n }).on('mouseleave', function () {\n var _this = this;\n $timeout(function () {\n if (!$('.popover:hover').length) {\n $(_this).popover('hide');\n }\n }, 300);\n });\n }\n $('.info-tooltip-accout-summary').attr('data-title', $scope.tooltipMessage).tooltip();\n $('body').on('click', '.tooltip-btn-first', function () {\n $rootScope.dataLayer.push({\n event: 'tool-tip',\n 'data-category': 'response_code',\n 'data-label': 'Account Summary Important Message',\n 'data-action': $scope.rv.Tooltip.SecondButtonLabel\n });\n });\n $('body').on('click', '.tooltip-btn-pay-now', function () {\n $rootScope.dataLayer.push({\n event: 'tool-tip',\n 'data-category': 'response_code',\n 'data-label': 'Account Summary Important Message',\n 'data-action': $scope.rv.Tooltip.PayNowButtonLabel\n });\n });\n }\n };\n $scope.isMobile = angular.element(window).width() < 970 ? true : false;\n $scope.mouseOverTooltip = function () {\n $('.info-tooltip-accout-summary').attr('data-original-title', $scope.tooltipMessage).tooltip();\n if (typeof window.orientation !== 'undefined') {\n $('body').css('cursor', 'pointer');\n }\n };\n $scope.func = function () {\n $scope.isTooltipOpen = false;\n $('.info-tooltip-accout-summary').trigger('click');\n };\n $scope.callViewBill = function () {\n $element.find('#viewBillForm').trigger('submit');\n };\n var addValues = function addValues() {\n $timeout(function () {\n var data = {\n actionType: 'View Bill',\n billDate: $scope.rv.BillDate\n };\n data = JSON.stringify(data);\n $element.find('#dataViewBill').val(data);\n }, 0);\n };\n $scope.summarySatus = 200;\n $scope.summaryLoader = true;\n $scope.rv = {};\n myAccountFactory.getJson('/api/AccountSummary/GetAccountSummaryData').then(function (greeting) {\n $scope.rv = greeting.data;\n if (greeting.data.StrJsonAnalitycs) {\n $scope.jsonAnalyticsMyAccount = greeting.data.StrJsonAnalitycs;\n }\n var asTrackings = document.getElementsByClassName('myAccountTrackingInfo');\n for (var i = 0; i < asTrackings.length; i++) {\n asTrackings[i].setAttribute('json-analytics', JSON.stringify(greeting.data.StrJsonAnalitycs));\n }\n $rootScope.dataLayer.push(greeting.data.StrJsonAnalitycs);\n addValues();\n $scope.summaryLoader = false;\n $scope.summarySatus = $scope.rv.HTTPStatus;\n if ($.isFunction($.fn.popover)) {\n $scope.updateTooltipMessage();\n } else {\n $scope.rv.ShowTooltip = false;\n }\n }, function (error) {\n console.error(error);\n $scope.summaryLoader = false;\n $scope.summarySatus = 500;\n });\n}\naccountSummaryController.$inject = ['$scope', '$sce', '$window', '$element', '$document', '$cookies', '$http', 'myAccountFactory', '$timeout', '$rootScope'];\napp.controller('accountSummaryController', accountSummaryController);\napp.config(['nsPopoverProvider', function (nsPopoverProvider) {}]);\napp.filter('dukeCurrency', function () {\n return function (nStr) {\n if (nStr) {\n nStr += '';\n var x = nStr.split('.');\n var x1 = x[0];\n var x2 = x.length > 1 ? '.' + x[1] : '';\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\n }\n var xx = x1.split('-');\n x1 = xx.length == 2 ? '-$' + xx[1] : '$' + x1;\n return x1 + x2;\n }\n };\n});\n/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\n\nfunction addAccountVerify($scope, $window, $rootScope, $templateCache) {}\n;\naddAccountVerify.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller'];\napp.controller('addAccountVerify', addAccountVerify);\n/*\r\n * Controller for Application Error page primarily for GAT\r\n */\n\nfunction applicationErrorController($scope, $rootScope) {\n $scope.postDataLayer = function (action1, action2) {\n var category = 'error_application_error';\n action2 = 'na';\n var action = (action2 ? $rootScope.dataLayerFormat(action2) : '') + (action1 && action2 ? '-|-' : '') + (action1 ? $rootScope.dataLayerFormat(action1) : '');\n var label = 'application-error';\n $rootScope.dataLayer.push({\n event: 'fire-event',\n 'event-category': category,\n 'event-label': label,\n 'event-action': action\n });\n $rootScope.dataLayer.push({\n event: 'fire-vpv',\n 'vpv-name': '/vpv/authenticated/error-application-error/application-error/na/error'\n });\n };\n}\napplicationErrorController.$inject = ['$scope', '$rootScope'];\napp.controller('applicationErrorController', applicationErrorController);\n/*\r\n * Directive to handle table that has two main functions:\r\n * 1. Show more buttons at bottom, so you can hide the entire table until user interaction\r\n * 2. Control to select a row/item in data. \r\n * Currently used in Report an Outage and Paperles Billing Enroll\r\n */\n\nfunction autoPayController($filter, $scope, $document, $window, $element, $timeout) {\n var vm = this;\n vm.selectedCount = 0;\n $scope.analytics = {\n value: \"\"\n };\n $scope.closeModal = function ($element) {\n angular.element(\".modal\").modal(\"hide\");\n };\n}\n;\nautoPayController.$inject = ['$filter', '$scope', '$document', '$window', '$element', '$timeout'];\napp.controller('autoPayController', autoPayController);\nfunction automaticDraftInheritedTestController($scope, $window, $rootScope, $templateCache) {\n angular.extend($scope, baseFormUtilitiesController);\n}\nautomaticDraftInheritedTestController.$inject = ['$scope', '$window', '$rootScope', '$templateCache'];\napp.controller('automaticDraftInheritedTestController', automaticDraftInheritedTestController);\n/*\r\n * Angular controller\r\n * Automatic Draft Controller\r\n * \r\n */\nfunction automaticDraftController($element, $scope, $window, $rootScope, $templateCache, $timeout) {\n $scope.tooltipPlacement = \"right\";\n $scope.changeAccountNumberLabel = false;\n var width = angular.element(window).width();\n angular.element(\"document\").ready(function () {\n if (width <= 767) {\n $scope.tooltipPlacement = \"left\";\n } else if (width <= 979) {\n $scope.tooltipPlacement = \"top\";\n } else {\n $scope.tooltipPlacement = \"right\";\n }\n $scope.$apply();\n });\n angular.extend($scope, baseFormUtilitiesController);\n $scope.master = '';\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\n $element.find(\".cancel-btn\").blur();\n });\n $scope.reset = function () {\n //$scope.bankingInformationAutomaticDraftForm.data.accountNumber = angular.copy($scope.master);\n //$scope.patternBind = $rootScope.regexp_notSameDigits;\n $scope.changeAccountNumberLabel = true;\n };\n $scope.resetValue = function (name) {\n $scope.bankingInformationAutomaticDraftForm.accountNumber.$setViewValue('');\n $(\"input[name='accountNumber']\").val('');\n };\n $scope.init = function () {\n $timeout(function () {\n $scope.bankingInformationAutomaticDraftForm.$setPristine(true);\n }, 300);\n };\n $scope.analytics = {\n value: \"\"\n };\n $scope.radioselected = function (value) {\n $scope.analytics.value = value;\n };\n}\n;\nautomaticDraftController.$inject = ['$element', '$scope', '$window', '$rootScope', '$templateCache', '$timeout'];\napp.controller('automaticDraftController', automaticDraftController);\n/*\r\n * Angular controller\r\n * EqualPaymentPlanController manage a carousel with slides component\r\n * \r\n */\nfunction budgetBillingController($scope, $window, $rootScope, $templateCache, $element) {\n $scope.analytics = {\n value: \"\"\n };\n $scope.closeModal = function ($element) {\n angular.element(\".modal\").modal(\"hide\");\n };\n $scope.radioselected = function (value) {\n $scope.analytics.value = value;\n };\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\n $element.find(\".cancel-btn\").blur();\n });\n}\n;\nbudgetBillingController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element'];\napp.controller('budgetBillingController', budgetBillingController);\n/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\n\nfunction changeAccount($scope, $window, $filter, $rootScope, $templateCache, $element, $http, $timeout, apiServices) {\n $scope.invalidEmail = true;\n $scope.loadingSpinner = false;\n $scope.alreadyVerified = false;\n $scope.focusIn = false;\n var vm = this;\n vm.primaryAccountSaved = 0;\n vm.userChoice = null;\n vm.selectedRow = null;\n vm.indexOfSelected = null;\n vm.selected = false;\n $scope.accounts = [];\n var emailChanged;\n vm.isSelectedArray = [];\n $scope.isCheck = false;\n vm.selectedRow = null;\n vm.available = false;\n vm.setClickedRow = function ($index, $event, account) {\n for (var i = 0; i < vm.isSelectedArray.length; i++) {\n $scope.accounts[i].PrimaryAccount = false;\n }\n vm.selectedRow = $index;\n var radio = $($event.currentTarget).find(\"input[type='radio']\");\n radio.prop(\"checked\", true);\n vm.isSelectedArray[$index] = false;\n account.PrimaryAccount = true;\n $scope.srcAcctId = account.SrcAcctId;\n $scope.srcAcctId2 = account.SrcAcctId2;\n $scope.srcSysCd = account.SrcSysCd;\n $scope.isResidential = account.IsResidential;\n $scope.jurisdiction = account.Jurisdiction;\n };\n vm.dataLayerPush = function (saveOrCancel) {\n var action;\n if (saveOrCancel == 'save') {\n action = 'Save Changes';\n } else {\n action = 'Cancel';\n }\n var data;\n data = {\n 'data-category': 'manage_profile',\n 'data-label': 'Change Primary Account',\n 'data-action': action,\n 'event': 'event-click'\n };\n data = {\n 'data-category': 'manage_profile',\n 'data-label': 'Change Primary Account',\n 'data-action': action,\n 'event': 'event-click'\n };\n if (dataLayer && ($scope.srcAcctId != undefined || saveOrCancel != 'save')) {\n dataLayer.push(data);\n }\n };\n $('#email-modal').modal({\n backdrop: 'static',\n keyboard: false\n });\n var closeBtn = angular.element('.no-close .close');\n var closeSesion = angular.element('.no-close .modal-action');\n $(closeBtn).on('click', function (e) {\n angular.element('.no-close button.modal-action').trigger('click');\n });\n $scope.closeModal = function () {\n angular.element(\".modal\").modal(\"hide\");\n };\n $scope.$watch('ProfileDataForm.data.emailAddress', function (present, old) {\n emailChanged = true;\n });\n function serviceSuccess(data) {\n $scope.loadingSpinner = false;\n $scope.alreadyVerified = true;\n if (data.ValidEmail) {\n $scope.invalidEmail = false;\n $scope.validationIcon = data.ReturnCodeIcon;\n $scope.validationMsg = data.ReturnCodeMessage;\n } else if (!data.ValidEmail && data.ReturnCode != \"370012047\") {\n $scope.invalidEmail = true;\n $scope.validationIcon = data.ReturnCodeIcon;\n $scope.validationMsg = data.ReturnCodeMessage;\n } else if (data.ReturnCode == \"370012047\") {\n $scope.fiveAttempts = true;\n $scope.validationIcon = data.ReturnCodeIcon;\n $scope.validationMsg = data.ReturnCodeMessage;\n $timeout(function () {\n $scope.ProfileDataForm.$setPristine();\n $scope.ProfileDataForm.$setValidity();\n $scope.ProfileDataForm.$setUntouched();\n }, 0);\n }\n }\n function serviceError(data) {\n $scope.loadingSpinner = false;\n }\n $scope.validateEmail = function (item) {\n if (emailChanged) {\n emailChanged = false;\n $scope.loadingSpinner = true;\n var model = $element.find(\"#\" + item).controller('ngModel');\n if (model.$valid) {\n var dataObj = {\n email: model.$viewValue\n };\n apiServices.validateEmail(dataObj, serviceSuccess, serviceError);\n } else {\n $scope.invalidEmail = true;\n $scope.loadingSpinner = false;\n $scope.alreadyVerified = false;\n }\n }\n };\n $scope.analytics = {\n value: \"\"\n };\n $scope.selectType = function (event, type) {\n var selectedRadio = $scope.analytics.value;\n };\n $scope.onSelectItem = function (item) {\n $scope.itemValueText = item.text;\n };\n $scope.radioselected = function (value) {\n $scope.analytics.value = value;\n };\n\n //$timeout(function () {\n // $scope.isDirty = $scope.ProfileDataForm.$dirty;\n //});\n\n vm.indexSelected = function (index) {\n for (var i = 0; i < vm.isSelectedArray.length; i++) {\n vm.isSelectedArray[i] = false;\n }\n vm.isSelectedArray[index] = true;\n };\n $scope.$watch('accounts', function () {\n for (var i = 0; i < $scope.accounts.length; i++) {\n if ($scope.accounts[i].PrimaryAccount) {\n var toTheTop = $scope.accounts[i];\n $scope.accounts.splice(i, 1);\n $scope.accounts.splice(0, 0, toTheTop);\n }\n vm.isSelectedArray.push(false);\n }\n });\n $scope.$watch('accounts', function () {\n if ($scope.accounts.length <= 5) {\n showMoreBtn.remove();\n } else if ($scope.accounts.length > 5) {\n var table = angular.element('.auth.Manage-Profile.primary-account table.moreaccounts.six');\n $(table).attr('style', 'margin-bottom: 13px !important');\n }\n });\n var $this = $scope,\n $el = $element,\n showMoreBtn = angular.element('button.more-info-label'),\n $moreInfoPane = null;\n $scope.showAllMsg = \"\";\n $scope.showLessMsg = \"\";\n $scope.currentShowMsg = \"\";\n $moreInfoPane = angular.element($el.find('.more-info-more'));\n $scope.relativeURL = $window.location.pathname;\n $scope.setShowLabels = function (more, less) {\n $scope.showAllMsg = more;\n $scope.showLessMsg = less;\n $scope.currentShowMsg = $scope.showAllMsg;\n $scope.showIcon = \"caret-arrow-down\";\n };\n $scope.toggleMoreInfo = function (toggleButton) {\n toggleButton.preventDefault();\n var currentToggleButton = angular.element(toggleButton.currentTarget);\n currentToggleButton.attr('aria-pressed', 'true');\n if ($scope.currentShowMsg == $scope.showLessMsg) {\n $scope.showIcon = \"caret-arrow-down\";\n $scope.currentShowMsg = $scope.showAllMsg;\n currentToggleButton.attr('aria-expanded', 'false');\n currentToggleButton.attr('aria-pressed', 'false');\n } else {\n $scope.showIcon = \"caret-arrow-up\";\n $scope.currentShowMsg = $scope.showLessMsg;\n currentToggleButton.attr('aria-expanded', 'true');\n }\n $moreInfoPane.slideToggle();\n $scope.$watch('accounts', function () {\n if ($scope.accounts.length < 11) {\n showMoreBtn.remove();\n } else if ($scope.accounts.length > 11) {\n var el = angular.element('.auth.Manage-Profile.primary-account table.more');\n $(el).attr('style', 'margin-bottom: 13px !important');\n }\n });\n };\n $scope.toggleMoreInfoOnKeyUp = function (toggleButton) {\n toggleButton.preventDefault();\n if (toggleButton.keyCode === 32) {\n $scope.toggleMoreInfo(toggleButton);\n }\n };\n}\n;\nchangeAccount.$inject = ['$scope', '$window', '$filter', '$rootScope', '$templateCache', '$element', '$http', '$timeout', 'apiServices'];\napp.controller('changeAccount', changeAccount);\n/*\r\n * Angular controller\r\n * Pick your due date Controller\r\n *\r\n */\n\nfunction deferredPaymentArrangementController($scope, $templateCache, $controller, $element, $window, $http, $timeout, $compile, $filter, $q) {\n $scope.formCtrl = {};\n $scope.formCtrl.forms = {};\n $scope.formCtrl.forms.my_form = {};\n $scope.goTo = function (link) {\n if (document.querySelectorAll('.de-page-level-message:not(.ng-hide)').length > 0) {\n var pageTitle = document.getElementsByClassName('header-1')[0].innerHTML.trim();\n var message = document.querySelectorAll('.de-page-level-message:not(.ng-hide) .de-page-level-message__title')[0].innerHTML.trim();\n var label = \"\".concat(pageTitle, \" | \").concat(message);\n var action = document.querySelectorAll('.de-page-level-message:not(.ng-hide) .de-button')[0].innerHTML.trim();\n $scope.dataLayerPush('dpa', label, action);\n }\n $window.location.href = link;\n };\n var enrollInDeferredPaymentService = function enrollInDeferredPaymentService() {\n var deferred = $q.defer();\n $http({\n method: 'POST',\n url: '/api/PaymentArrangement/EnrollInDPA',\n headers: {\n 'Content-Type': 'application/json'\n },\n timeout: deferred.promise\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (error) {\n deferred.reject(error.data);\n });\n return deferred.promise;\n };\n $scope.enroll = function () {\n enrollInDeferredPaymentService().then(function (response) {\n if (response.Success === 'True' || response.Success === true) {\n $scope.enrollSuccess = true;\n var pageTitle = document.getElementsByClassName('header-1')[0].innerHTML.trim();\n var label = \"\".concat(pageTitle, \" | Enroll\");\n var action = 'enroll';\n $scope.dataLayerPush('dpa', label, action, pageTitle, 'Click enroll to sign up for payment arrangement', 'success');\n $window.scrollTo(0, 0);\n } else {\n window.location.href = response.RedirectUrl;\n }\n },\n // Error\n function (response) {\n console.log(response);\n window.location.href = response.RedirectUrl;\n });\n };\n $scope.eligible = function (eligible) {\n if (!eligible) {\n var data = {\n 'data-category': 'find_account',\n 'data-label': 'set-up-a-payment-arrangement-|-select-and-confirm-your-account',\n 'data-action': 'error-|-sorry,-your account-is-ineligible',\n event: 'event-click'\n };\n var vpvObject = {\n event: 'send-VPV',\n 'vpv-name': '/vpv/find_account/Set up a Payment Arrangement/Select and confirm your account/ineligible'\n };\n if (dataLayer) {\n dataLayer.push(data);\n dataLayer.push(vpvObject);\n }\n }\n };\n $scope.displayModal = function () {\n angular.element('#cancel-modal').modal('show');\n };\n $scope.dataLayerPush = function () {\n var category = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var title = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n var subtitle = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var successOrFailure = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '';\n var dataLayerObject = {\n 'data-category': 'DPA',\n 'data-label': label,\n 'data-action': action,\n event: 'event-click'\n };\n var vpvObject = {\n event: 'send-VPV',\n 'vpv-name': \"/vpv/\".concat(category, \"/\").concat(title, \"/\").concat(subtitle, \"/\").concat(action, \"/\").concat(successOrFailure)\n };\n if (dataLayer) {\n dataLayer.push(dataLayerObject);\n if (successOrFailure != '') {\n dataLayer.push(vpvObject);\n }\n }\n };\n}\ndeferredPaymentArrangementController.$inject = ['$scope', '$templateCache', '$controller', '$element', '$window', '$http', '$timeout', '$compile', '$filter', '$q'];\napp.controller('deferredPaymentArrangementController', deferredPaymentArrangementController);\nfunction delegatedInterceptTableController($scope, $element, $window, $http, $document, $rootScope, myAccountFactory, $sce, cookiesService, commongaTaggingService) {\n var vm = $scope;\n\n // API\n\n var getUrl = '/api/Delegation/GetPendingOptions';\n if (window.location.hostname == 'localhost') {\n getUrl = '/api/Delegation/getDelegationAccounts';\n }\n var delegationList = document.getElementById('delegated-intercept-list');\n vm.delegationRequest = {};\n vm.updateRequest = {};\n vm.suppliers = [];\n vm.accountIDs = [];\n vm.isLoading = true;\n\n // disabled button display\n vm.isDisabled = true;\n vm.isExpanded = false;\n vm.totalAccounts = 0;\n vm.init = function () {\n myAccountFactory.getJson(getUrl).then(function (data) {\n vm.delegationRequest = data.data;\n if (vm.delegationRequest.Collection.length === 0) {\n // we get a redirected page i.e disambiguation.\n window.location.href = '/my-account/sign-in/disambiguationpage';\n } else {\n angular.forEach(vm.delegationRequest.Collection, function (value) {\n vm.suppliers.push(value);\n vm.totalAccounts = vm.suppliers.length;\n });\n vm.checkboxAll();\n vm.checkedAccounts = vm.accountIDs.length;\n }\n }).then(function () {\n vm.isLoading = false;\n if (delegationList.classList.contains('loading')) {\n delegationList.classList.remove('loading');\n }\n }).catch(function (reason) {\n console.log(reason);\n });\n };\n vm.checkboxClick = function (supplier) {\n if (vm.inter.form[supplier]) {\n // add account id to array\n vm.accountIDs.push({\n id: supplier\n });\n } else {\n // remove account id from array\n var index = vm.accountIDs.indexOf(supplier);\n vm.accountIDs.splice(index, 1);\n }\n };\n\n // CHECK ALL LOOPS //\n vm.checkboxAll = function () {\n // toggle checkboxAll value\n vm.inter.form.checkall = !vm.inter.form.checkall;\n // empty accountIDs array\n vm.accountIDs = [];\n vm.suppliers.forEach(function (supplier) {\n // toggle checkbox value\n vm.inter.form[supplier.accountDelegationRequestId] = vm.inter.form.checkall;\n // add supplier id to array if checkall is true\n if (vm.inter.form.checkall) {\n vm.accountIDs.push({\n id: supplier.accountDelegationRequestId\n });\n }\n });\n };\n\n // CHECK FOR COOKIE //\n angular.element(document).ready(function () {\n if (cookiesService.getCookie('delegation-update-success')) {\n cookiesService.deleteCookie('delegation-update-success');\n }\n });\n vm.postConsentResponse = function (consentResponse, redirectUrl) {\n var consentUrl = '/api/UniversalConsent/PostConsentResponse';\n myAccountFactory.getJsonParams(consentUrl, {\n consentResponse: consentResponse\n }).then(function (res) {\n if (res.data.accountConsentPostDTO.response === 'accept') {\n vm.consentUpdated = true;\n } else if (res.data.accountConsentPostDTO.response === 'revoke') {\n vm.consentRevoked = true;\n }\n }).catch(function (err) {\n console.error('There has been an error with the Latest Consent URL, ', err);\n });\n };\n function virtualPagePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n\n // SAVE BUTTON //\n vm.submitForm = function (acceptTrue) {\n var acceptUrl = '/api/Delegation/AcceptPendingOptions';\n var declineUrl = '/api/Delegation/DeclinePendingOptions';\n // http post to sitecore service, pass in id's\n // const postObjArr = [];\n // vm.accountIDs.forEach((obj) => {\n // accountObj = {\n // accountDelegationRequestId: Number(obj.id),\n // status: acceptTrue ? 'accept' : 'decline',\n // };\n // postObjArr.push(accountObj);\n // });\n\n // const postObj = { delegations: postObjArr };\n // const postHeaders = { 'Content-Type': 'application/json' };\n var postObj = {\n accountIds: vm.accountIDs\n };\n postObj = \"delegation=\".concat(JSON.stringify({\n accountIds: vm.accountIDs\n }));\n var postHeaders = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n vm.isLoading = true;\n delegationList.classList.add('loading');\n if (acceptTrue) {\n document.getElementById('consent').addEventListener('scroll', checkScrollHeight, false);\n $rootScope.postService(postObj, acceptUrl, postHeaders).then(function (res) {\n if (res === 'True') {\n // show T&C\n vm.userAcceptInvite = true;\n } else {\n // show success message\n virtualPagePush($('#delegation-intercept-gat').attr('businessFunction'), $('#delegation-intercept-gat').attr('headLine'), $('#delegation-intercept-gat').attr('subhead2'), $('#delegation-intercept-gat').attr('buttonText'));\n vm.delegationSuccess = true;\n }\n cookiesService.setCookie('delegation-update-success');\n vm.isLoading = false;\n delegationList.classList.remove('loading');\n }).catch(function (err) {\n console.error('There has been an error POSTing user account data, ', err);\n });\n } else {\n $rootScope.postService(postObj, declineUrl, postHeaders).then(function (res) {\n cookiesService.setCookie('delegation-update-success');\n virtualPagePush($('#delegation-intercept-gat').attr('businessFunction'), $('#delegation-intercept-gat').attr('headLine'), $('#delegation-intercept-gat').attr('subhead'), $('#delegation-intercept-gat').attr('buttonText'));\n vm.userDeclineInvite = true;\n vm.isLoading = false;\n delegationList.classList.remove('loading');\n }).catch(function (err) {\n console.error('There has been an error POSTing user account data, ', err);\n });\n }\n };\n vm.acceptTermsOfUse = function () {\n var termsCondUrl = '/api/Delegation/AcceptTC';\n var postObj = {\n accountIds: vm.accountIDs\n };\n postObj = \"delegation= \".concat(JSON.stringify({\n accountIds: vm.accountIDs\n }));\n var postHeaders = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n $rootScope.postService(postObj, termsCondUrl, postHeaders).then(function (res) {\n virtualPagePush($('#delegation-intercept-gat').attr('businessFunction'), $('#delegation-intercept-gat').attr('headLine'), $('#delegation-intercept-gat').attr('subhead2'), $('#delegation-intercept-gat').attr('buttonText'));\n vm.delegationSuccess = true;\n cookiesService.setCookie('delegation-update-success');\n }).catch(function (err) {\n console.error('There has been an error POSTing user account data, ', err);\n });\n };\n vm.getRedirectHandling = function () {\n var getRedirectUrl = 'api/Delegation/GetRedirectUrl';\n var postObj = {\n accountIds: vm.accountIDs\n };\n postObj = \"delegation= \".concat(JSON.stringify({\n accountIds: vm.accountIDs\n }));\n var postHeaders = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n $rootScope.postService(postObj, getRedirectUrl, postHeaders).then(function (res) {\n cookiesService.setCookie('delegation-update-success');\n vm.delegationSuccess = true;\n }).catch(function (err) {\n console.error('There has been an error POSTing user account data, ', err);\n });\n };\n\n // success, revoke, error plm screens\n vm.consentUpdated = false;\n vm.consentRevoked = false;\n\n // disabled button display\n vm.isDisabled = true;\n vm.isExpanded = false;\n\n // expand button display\n vm.expandBtnText = 'Expand for more information';\n\n // redirect from GOT IT button\n vm.goTo = function (link) {\n $window.location.href = link;\n };\n\n // expand functionality\n vm.toggleContent = function () {\n var expandBtn = document.getElementById('umc-btn');\n var consentText = document.getElementById('consent');\n vm.isExpanded = !vm.isExpanded;\n var expanded = (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\n expandBtn.setAttribute('aria-expanded', !expanded);\n consentText.setAttribute('aria-expanded', !expanded);\n if (vm.isExpanded) {\n consent.style.height = \"\".concat(consent.scrollHeight, \"px\");\n vm.isDisabled = false;\n vm.expandBtnText = 'Show less';\n } else {\n consent.style.height = '350px';\n vm.expandBtnText = 'Expand for more information';\n }\n };\n\n // scroll trigger functionality\n function checkScrollHeight() {\n var agreementTextElement = document.getElementsByName('umcConsent')[0];\n if (agreementTextElement.scrollTop + agreementTextElement.offsetHeight >= agreementTextElement.scrollHeight) {\n $scope.$apply(function () {\n vm.isDisabled = false;\n });\n }\n }\n\n /* function declaration */\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n $scope.$watch('accountIDs', function (newValue) {\n vm.checkedAccounts = vm.accountIDs.length;\n }, true);\n}\ndelegatedInterceptTableController.$inject = ['$scope', '$element', '$window', '$http', '$document', '$rootScope', 'myAccountFactory', '$sce', 'cookiesService', 'commongaTaggingService'];\napp.controller('delegatedInterceptTableController', delegatedInterceptTableController);\n/*\r\n * Angular controller\r\n * disambiguation\r\n *\r\n */\n\nfunction disambiguation($scope, $rootScope) {\n $scope.disableTiles = function (url) {\n var theTiles = document.getElementsByClassName('nav-cards__item');\n var disableURL = url;\n var theURL;\n for (var index = 0; index < theTiles.length; index++) {\n theURL = theTiles[index].getElementsByClassName('tile-url')[0].value;\n if (theURL === disableURL) {\n theTiles[index].classList.add('disabled');\n }\n }\n document.getElementById('disambiguation-loading').classList.add('hidden');\n };\n $scope.pushDataLayer = function (action, $event) {\n // preventDefault for testing only\n // $event.preventDefault();\n // convert spaces to dashes and lowercase\n var act = $rootScope.dataLayerFormat(action);\n var pageTitle = document.getElementsByTagName('h1')[0];\n if (pageTitle) {\n // convert spaces to dashes and lowercase\n pageTitle = $rootScope.dataLayerFormat(pageTitle.innerText);\n } else {\n // failsafe\n pageTitle = $rootScope.dataLayerFormat('Select Your Experience');\n }\n $rootScope.dataLayer.push({\n event: 'fire-event',\n 'event-category': 'disambiguation',\n 'event-action': act,\n 'event-label': pageTitle\n });\n $rootScope.dataLayer.push({\n event: 'fire-vpv',\n 'vpv-name': '/vpv/disambiguation/' + act + '/success'\n });\n };\n}\ndisambiguation.$inject = ['$scope', '$rootScope'];\napp.controller('disambiguation', disambiguation);\nfunction DisplayIframeController($element, $scope, $timeout, $window) {\n $scope.success = false;\n var theForm = $element.find(\"form\");\n $timeout(function () {\n theForm.submit();\n }, 0);\n document.querySelector(\"iframe:not(#egot_iframe)\").onload = function () {\n $scope.success = true;\n $scope.$apply();\n document.getElementsByTagName('body')[0].scrollIntoView();\n };\n}\nDisplayIframeController.$inject = ['$element', '$scope', '$timeout', '$window'];\napp.controller('DisplayIframeController', DisplayIframeController);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction usageAnalysisControllerTest($scope, $element, $window, $http, $timeout, $rootScope) {\n // Line for testing, erasing after test is done\n window.$rootScope = $rootScope;\n $scope.newCalendar = true;\n var api_url_table = '/api/UsageAnalysis/GetBillingInformation';\n var api_url_graph = '/api/UsageAnalysis/GetUsageChartData';\n var export_url = '/api/UsageAnalysis/ExportData';\n var grexport_url = '/api/UsageAnalysis/DownloadMyData';\n var chart_selector = $element.find('.duke-chart');\n var calendar = $element.find('.testCalendar');\n var graphText = '';\n var changedGraph = false;\n var newPeriodValue = '';\n var dropdownInteraction = 'Meter';\n var meterLoaded = false;\n var exportData;\n var exportFilename;\n var grExportData;\n var grExportFilename;\n var DailyAvgWeekException = false;\n $scope.grexport = false;\n $scope.usage_table = [];\n $scope.loaded = false;\n $scope.grLoaded = false;\n $scope.grError = false;\n $scope.table_type = '';\n $scope.forms = {};\n $scope.error_message_default = 'This information is currently unavailable. Please check again later.';\n $scope.error_message = $scope.error_message_default;\n $scope.errorPanel = false;\n $scope.analytics = {\n chartType: 'Smart Meter'\n };\n $scope.period_items = [];\n $scope.graph_items = [];\n $scope.chart = {};\n $scope.openModal = function (id) {\n $(\"#\".concat(id)).modal('show');\n };\n $scope.start_date = '';\n $scope.original_end_date = $scope.end_date;\n $scope.current_date = '';\n $scope.meter_certified = false;\n $scope.maxHeightChanged = false;\n $scope.showChart = true;\n $scope.dropDownChartItems = JSON.parse(angular.element(document.querySelector('#usageAnalysisMeter')).attr('items'))[0];\n var isHourly = false;\n var isDayPeriod = false;\n var yesterday = new Date();\n var userAgent;\n\n // Flag to see if last dropdown change was for hourly+day\n var hourlyDayTriggered = false;\n var formatedDate = function formatedDate(recivedDate) {\n var dd = recivedDate.getDate();\n dd = dd < 10 ? \"0\".concat(dd) : dd;\n var mm = recivedDate.getMonth() + 1;\n mm = mm < 10 ? \"0\".concat(mm) : mm;\n var aa = \"\".concat(mm, \" / \").concat(dd, \" / \").concat(recivedDate.getFullYear());\n // console.log(\"formated date is \",aa);\n\n return \"\".concat(mm, \" / \").concat(dd, \" / \").concat(recivedDate.getFullYear());\n };\n var formatedDateNoSpaces = function formatedDateNoSpaces(recivedDate) {\n var dd = recivedDate.getDate();\n dd = dd < 10 ? \"0\".concat(dd) : dd;\n var mm = recivedDate.getMonth() + 1;\n mm = mm < 10 ? \"0\".concat(mm) : mm;\n var aa = \"\".concat(mm, \"/\").concat(dd, \"/\").concat(recivedDate.getFullYear());\n // console.log(\"formated date is \",aa);\n\n return \"\".concat(mm, \"/\").concat(dd, \"/\").concat(recivedDate.getFullYear());\n };\n var today = new Date();\n today = formatedDate(today);\n var todayNoSpaces = new Date();\n todayNoSpaces = formatedDateNoSpaces(todayNoSpaces);\n\n /* PRINT FUNCTIONALITY */\n jQuery(document).bind('keyup keydown', function (e) {\n if (e.ctrlKey && e.keyCode == 80 && !(userAgent.indexOf('Edge/') > -1)) {\n window.print();\n e.preventDefault();\n return false;\n }\n });\n var isIE = function isIE(userAgent) {\n userAgent = userAgent || navigator.userAgent;\n return userAgent.indexOf('MSIE ') > -1 || userAgent.indexOf('Trident/') > -1 || userAgent.indexOf('Edge/') > -1;\n };\n var detectBrowser = function () {\n userAgent = navigator.userAgent;\n var printClass = '';\n if (/Google Inc/.test(navigator.vendor)) printClass = 'chrome-print';else if (/Edge/.test(navigator.userAgent)) printClass = 'edge-print';else if (/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)) printClass = 'safari-print';else if (/Trident/.test(navigator.userAgent)) printClass = 'ie-print';else if (/Firefox/.test(navigator.userAgent)) printClass = 'firefox-print';\n if (printClass != '') {\n angular.element('body').addClass(printClass);\n }\n }(function () {\n var afterPrint = function afterPrint() {\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n // tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\n $('.duke-chart-container').css('width', '100%');\n $('.duke-chart-container').css('max-width', '100%');\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 1000;\n chart_selector.swidget().refresh();\n }\n };\n if ($window.matchMedia) {\n var mediaQueryList = $window.matchMedia('print');\n mediaQueryList.addListener(function (mql) {\n if (!mql.matches) {\n afterPrint();\n }\n });\n }\n $window.onafterprint = afterPrint;\n var _print = $window.print;\n $window.print = function () {\n $scope.innerWidth = $window.innerWidth;\n $('.duke-chart-container').css('width', '100%').css('max-width', '100%');\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n // tablet resolutions\n $('.duke-chart-container').css('width', '100%').css('max-width', '100%');\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 0;\n chart_selector.swidget().refresh();\n setTimeout(function () {\n _print();\n }, 500);\n } else {\n _print();\n }\n angular.element('.print-button').blur();\n };\n }());\n $scope.printPage = function () {\n pushAnalytics('Print Page');\n $window.print();\n };\n /* END PRINT FUNCTIONALITY */\n\n $scope.exportData = function () {\n pushAnalytics('Export Data');\n saveTextAs(exportData, \"\".concat(exportFilename, \".csv\"));\n angular.element('.export-button').blur();\n };\n var getExportData = function getExportData() {\n var dateValue;\n if ($scope.newCalendar) {\n dateValue = formatedDate($scope.forms.usageAnalysis.data.date) ? formatedDate($scope.forms.usageAnalysis.data.date) : today;\n } else {\n dateValue = $scope.forms.usageAnalysis.date.$viewValue ? $scope.forms.usageAnalysis.date.$viewValue : today;\n }\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: dateValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText\n };\n $http({\n method: 'POST',\n url: export_url,\n data: chartObj,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data, status, headers, config) {\n if (data) {\n exportFilename = 'EnergyUsageExport';\n exportData = data.data;\n // saveTextAs(data, filename + \".csv\");\n }\n }).catch(function (data, status, headers, config) {\n // handle error\n });\n };\n $scope.exportXML = function () {\n pushAnalytics('Download My Data XML');\n saveTextAs(grExportData, \"\".concat(grExportFilename, \".xml\"));\n angular.element('.duke-gr-btn').blur();\n };\n var getExportXML = function getExportXML() {\n var grChartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\n };\n $http({\n method: 'POST',\n url: grexport_url,\n data: grChartObj,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data, status, headers, config) {\n if (data.data != \"\" && data.data != null && data.data != \"Unexpected Failure\") {\n grExportFilename = 'DownloadMyData';\n grExportData = data.data;\n $scope.grLoaded = true;\n } else {\n $scope.grError = true;\n }\n }).catch(function (data, status, headers, config) {\n // handle error\n });\n };\n var pushAnalytics = function pushAnalytics(dataLabel) {\n var dataActionTag = \"\".concat($scope.meterTag, \" - \").concat(angular.element('div#graph > button > span').text(), \" - \").concat(angular.element('.shared-calendar > div.date-area > input').val(), \" - \").concat(angular.element('div#period > button > span').text());\n var eventTag = 'usage-analysis-export-data';\n if (dataLabel == 'Print Page') eventTag = 'usage-analysis-print-page';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-action': dataActionTag,\n 'data-label': dataLabel,\n event: eventTag\n });\n };\n var updateTableX = function updateTableX(response) {\n if (response.data.Status == 'OK') {\n $scope.usage_table = response.data.Data;\n } else if (response.data.Status == 'ERROR') {\n $scope.error_message = response.data.ErrorMsg;\n getErrorPanel();\n }\n };\n var updateChartX = function updateChartX(response) {\n if ($scope.toPreviousDate && !$scope.newCalendar) {\n angular.element('.shared-calendar > div.date-area > input')[0].value = $scope.forms.usageAnalysis.date.$viewValue;\n }\n enableSelectors();\n // if(!(isHourly && isDayPeriod))\n getExportData();\n if ($scope.grexport === true) {\n getExportXML();\n }\n if (response.data.Status == 'OK') {\n // $scope.analytics = { chartType: \"Smart Meter\" };\n // $scope.analytics.chartType = $scope.analytics.chartType + response.data.DataLabelInfo;\n // pushAnalytics($scope.analytics.chartType);\n\n if (DailyAvgWeekException) response.data.temperatures = [];\n getDataGraph(response.data);\n } else if (response.data.Status == 'ERROR') {\n $scope.error_message = response.data.ErrorMsg;\n getErrorPanel();\n }\n };\n var getDataGraph = function getDataGraph(data) {\n if (data.meterData.Electric && data.meterData.Gas) {\n $scope.table_type = 'all';\n getAllMeter(data);\n return;\n }\n if (data.meterData.Electric) {\n $scope.table_type = 'electric';\n getElectricMeter(data);\n return;\n }\n if (data.meterData.Gas) {\n $scope.table_type = 'gas';\n getGasMeter(data);\n return;\n }\n if (!data.meterData.Electric && !data.meterData.Gas) {\n $scope.loaded = true;\n getErrorPanel();\n }\n };\n var getAllMeter = function getAllMeter() {\n getErrorPanel();\n };\n var getElectricMeter = function getElectricMeter(newData) {\n var electricdata = {\n dataSeries: [{\n axisY: 0,\n collectionAlias: 'ELECTRIC',\n data: newData.meterData.Electric,\n color: '#54B848'\n }, {\n seriesType: 'line',\n axisY: 2,\n collectionAlias: 'AVERAGE',\n color: 'gray'\n }, {\n seriesType: 'line',\n axisY: 1,\n collectionAlias: 'TEMPERATURE',\n data: newData.temperatures,\n color: 'green',\n zIndex: 9\n }],\n labels: newData.labels,\n average: newData.average,\n chartTitle: newData.chartTitle,\n chartMessage: newData.chartMessage,\n chartFooter: newData.chartFooter,\n leftText: newData.unitOfMeasure1,\n rightText: newData.unitOfMeasure2\n };\n if (!newData.temperatures || newData.temperatures && !(newData.temperatures.length > 0)) {\n var index = _.indexOf(electricdata.dataSeries, _.find(electricdata.dataSeries, 'collectionAlias', 'TEMPERATURE'));\n electricdata.dataSeries.splice(index, 1);\n }\n updateChart(electricdata);\n };\n var getGasMeter = function getGasMeter(newData) {\n var gasdata = {\n dataSeries: [{\n axisY: 0,\n collectionAlias: 'GAS',\n data: newData.meterData.Gas,\n color: '#52B0F0'\n }, {\n seriesType: 'line',\n axisY: 2,\n collectionAlias: 'AVERAGE',\n color: 'gray'\n }, {\n seriesType: 'line',\n axisY: 1,\n collectionAlias: 'TEMPERATURE',\n data: newData.temperatures,\n color: 'green',\n zIndex: 9\n }],\n labels: newData.labels,\n average: newData.average,\n chartTitle: newData.chartTitle,\n chartMessage: newData.chartMessage,\n chartFooter: newData.chartFooter,\n leftText: newData.unitOfMeasure1,\n rightText: newData.unitOfMeasure2\n };\n if (!newData.temperatures) {\n var index = _.indexOf(gasdata.dataSeries, _.find(gasdata.dataSeries, 'collectionAlias', 'TEMPERATURE'));\n gasdata.dataSeries.splice(index, 1);\n }\n updateChart(gasdata);\n };\n var getErrorPanel = function getErrorPanel() {\n var data_label_error = \"Error: \".concat($scope.error_message);\n enableSelectors();\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis_error',\n 'data-label': 'Usage Analysis',\n 'data-action': data_label_error,\n event: 'usage-analysis-error-message'\n });\n if ($scope.error_message == '' || !$scope.error_message) {\n $scope.error_message = $scope.error_message_default;\n }\n $scope.errorPanel = true;\n };\n var updateChart = function updateChart(newData) {\n var timeOut = 600;\n usageData.axisX.categoricalValues = newData.labels;\n usageData.axisY[0].plotLines[0].start = newData.average;\n usageData.axisY[0].title.text = newData.leftText;\n usageData.axisY[1].title.text = newData.rightText;\n usageData.dataSeries = newData.dataSeries;\n $scope.chart.title = newData.chartTitle;\n $scope.chart.message = newData.chartMessage;\n $scope.chart.footer = newData.chartFooter;\n var widget = chart_selector.swidget();\n if ($scope.errorPanel) {\n $timeout(function () {\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.shieldChart(usageData);\n }, timeOut);\n } else {\n $timeout(function () {\n if (widget) {\n $scope.loaded = true;\n $scope.$apply();\n widget.refresh(usageData);\n } else {\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.shieldChart(usageData);\n }\n var testFunction = function testFunction() {\n chart_selector.swidget().refresh();\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.swidget().refresh();\n };\n $timeout(function () {\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 1000;\n testFunction();\n }, 600);\n }, timeOut);\n }\n };\n var usageData = {\n chartLegend: {\n enable: false\n },\n theme: 'bootstrap',\n exportOptions: {\n image: true,\n print: true\n },\n events: {\n legendSeriesClick: function legendSeriesClick(e) {\n // stop the series item click event, so that\n // user clicks do not toggle visibility of the serie\n e.preventDefault();\n }\n },\n tooltipSettings: {\n chartBound: true\n },\n primaryHeader: {\n text: ''\n },\n axisX: {\n categoricalValues: []\n },\n axisY: [{\n plotLines: [{\n start: 100,\n zIndex: 5,\n drawWidth: 2,\n drawColor: 'gray',\n label: {\n style: {\n color: 'gray'\n }\n }\n }],\n title: {\n enable: false,\n text: 'kWh',\n enale: false,\n ontWeight: 'bold',\n style: {\n color: '#696969',\n fontSize: '14px'\n }\n }\n }, {\n title: {\n enable: false,\n text: 'CCF',\n textAngle: 270,\n fontWeight: 'bold',\n style: {\n color: '#696969',\n fontSize: '14px'\n }\n },\n swapLocation: true\n }, {\n axisTickText: {\n enabled: false\n },\n min: 0\n }, {\n axisTickText: {\n enabled: false\n },\n min: 0\n }],\n seriesSettings: {\n line: {\n dataPointText: {\n enabled: true,\n borderColor: 'green',\n borderWidth: 1,\n y: 10,\n borderRadius: 500,\n padding: 5,\n backgroundColor: '#FFF',\n style: 'font-size: 11px'\n },\n applyAnimation: {\n duration: 0\n }\n },\n bar: {\n applyAnimation: {\n duration: 1000\n }\n }\n },\n plotLines: [{\n start: 100,\n drawWidth: 2,\n drawColor: '#C90515',\n zIndex: 2\n }]\n };\n var updateGraphFilters = function updateGraphFilters(item) {\n $scope.graph_items = item.graphItems;\n };\n $scope.updatePeriodFilters = function (item) {\n updatePeriodFilters(item);\n };\n $scope.updateGraphFilters = function (item) {\n updateGraphFilters(item);\n };\n var findSelected = function findSelected(items) {\n if (_.find(items, {\n selected: true\n })) {\n return _.find(items, {\n selected: true\n });\n }\n items[0].selected = true;\n return items[0];\n };\n var disableSelectors = function disableSelectors() {\n var selectors = angular.element('.data-selector input, .data-selector button');\n selectors.attr('disabled', 'disabled');\n selectors.css('opacity', '.7');\n };\n var enableSelectors = function enableSelectors() {\n var selectors = angular.element('.data-selector input, .data-selector button');\n selectors.removeAttr('disabled');\n selectors.css('opacity', '1');\n };\n var _updateSelectors = function updateSelectors(item, extra) {\n if (extra === 'Meter') {\n updateGraphFilters(item);\n $scope.start_date = item.CalendarStartDate;\n $scope.end_date = item.CalendarEndDate;\n // $scope.start_date = \"10/15/2016\";\n // $scope.end_date = \"10/15/2018\";\n $scope.original_end_date = $scope.end_date;\n $scope.current_date = item.CalendarCurrentDate;\n _updateSelectors(findSelected(item.graphItems), 'Graph');\n return;\n }\n if (extra === 'Graph') {\n graphText = item.text;\n updatePeriodFilters(item);\n $timeout(function () {\n $scope.updateOnlyChart();\n }, 500);\n }\n };\n $scope.interactGraph = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n isHourly = item.value.toLowerCase().indexOf('hourly') > -1;\n dropdownInteraction = 'Graph';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Graph',\n 'data-action': item.text,\n event: 'usage-analysis-graph-change'\n });\n graphText = item.text;\n changedGraph = true;\n updatePeriodFilters(item);\n $scope.updateOnlyChart(item);\n };\n $scope.interactDate = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n // Google Analytics\n $scope.toPreviousDate = false;\n if (isHourly && isDayPeriod) fetchPreviousDay();\n var dateForAction;\n if ($scope.newCalendar) dateForAction = formatedDate($scope.forms.usageAnalysis.data.date);else {\n dateForAction = $scope.forms.usageAnalysis.date.$modelValue ? $scope.forms.usageAnalysis.date.$modelValue : $scope.forms.usageAnalysis.date.$viewValue;\n }\n // console.log(\"new date is \"+dateForAction);\n\n dropdownInteraction = 'Date';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Date',\n 'data-action': dateForAction,\n event: 'usage-analysis-date-change'\n });\n // $scope.interactPeriod();\n $scope.updateOnlyChart(item);\n };\n var fetchPreviousDay = function fetchPreviousDay() {\n var yesterday;\n if ($scope.newCalendar) {\n hourlyDayTriggered = true;\n yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n $scope.end_date = formatedDate(yesterday);\n if (formatedDate($scope.forms.usageAnalysis.data.date) == today) {\n $scope.toPreviousDate = true;\n $scope.forms.usageAnalysis.data.date = new Date($scope.forms.usageAnalysis.data.date.getFullYear(), $scope.forms.usageAnalysis.data.date.getMonth(), $scope.forms.usageAnalysis.data.date.getDate() - 1);\n }\n } else if ($scope.forms.usageAnalysis.date.$modelValue == today && $scope.forms.usageAnalysis.date.$viewValue == today) {\n yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n var temp = new Date();\n temp.setDate(temp.getDate() - 1);\n yesterday = formatedDate(yesterday);\n $scope.forms.usageAnalysis.date.$modelValue == today ? ($scope.forms.usageAnalysis.date.$modelValue = yesterday, $scope.toPreviousDate = true) : $scope.forms.usageAnalysis.date.$modelValue;\n $scope.forms.usageAnalysis.date.$viewValue == today ? ($scope.forms.usageAnalysis.date.$viewValue = yesterday, $scope.toPreviousDate = true) : $scope.forms.usageAnalysis.date.$viewValu;\n angular.element('.shared-calendar > div.date-area > input').scope().changeCalendarPointer(temp.getFullYear(), temp.getMonth(), temp.getDate());\n }\n };\n var triggerCalendarValidation = function triggerCalendarValidation() {\n if (hourlyDayTriggered) {\n $scope.end_date = formatedDate(new Date());\n if (!isNaN(Date.parse($('.md-datepicker-input').val()))) {\n var inputDate = $('.md-datepicker-input').val().split(' / ');\n $scope.forms.usageAnalysis.data.date = new Date(inputDate[2], inputDate[0] - 1, inputDate[1]);\n }\n }\n hourlyDayTriggered = false;\n };\n $scope.interactPeriod = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n isDayPeriod = item.value.toLowerCase().indexOf('day') > -1;\n if (isHourly && isDayPeriod) fetchPreviousDay();\n dropdownInteraction = 'Period';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Period',\n 'data-action': item.text,\n event: 'usage-analysis-period-change'\n });\n $scope.updateOnlyChart(item);\n };\n $scope.updateOnlyChart = function (item) {\n disableSelectors();\n $scope.loaded = false;\n $scope.errorPanel = false;\n var chartObj;\n if ($scope.newCalendar) {\n if (changedGraph) {\n chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: newPeriodValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n changedGraph = false;\n } else {\n chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n }\n } else if (changedGraph) {\n chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: $scope.forms.usageAnalysis.date.$viewValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: newPeriodValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n changedGraph = false;\n } else {\n chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: $scope.forms.usageAnalysis.date.$viewValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n }\n DailyAvgWeekException = false;\n if (chartObj.Graph == 'DailyEnergy' && chartObj.BillingFrequency == 'Week') DailyAvgWeekException = true;\n $http.post(api_url_graph, chartObj, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(updateChartX, updateChartX);\n };\n var updatePeriodFilters = function updatePeriodFilters(item) {\n newPeriodValue = item.periodItems[0].value;\n for (var i = 0; i < item.periodItems.length; i++) {\n item.periodItems[i].selected = true;\n if (i > 0) item.periodItems[i].selected = false;\n }\n $scope.period_items = item.periodItems;\n };\n $scope.changeDateFormat = function (billDate) {\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\n };\n\n // $scope.submitForm = function (url, billDate) {\n // billDate = billDate.replace(/(..).(..).(....)/, \"$3-$1-$2\");\n // console.log(billDate);\n // var param = [{ 'ActionType': 'ViewBill' }, { 'Billdate': billDate }];\n // submitPostCall(url, param);\n // }\n\n // function submitPostCall(url, params) {\n // var form = document.createElement(\"form\");\n // form.setAttribute(\"method\", \"post\");\n // form.setAttribute(\"action\", url);\n\n // for (var element = 0; element < params.length; element++) {\n // var temp = params[element];\n // for (var i in temp) {\n // if (temp.hasOwnProperty(i)) {\n // var input = document.createElement('input');\n // input.type = 'hidden';\n // input.name = i;\n // input.value = temp[i];\n // form.appendChild(input);\n // }\n // }\n // }\n\n // document.body.appendChild(form);\n // form.submit();\n // document.body.removeChild(form);\n // }\n\n $scope.initSelectors = function (item) {\n $timeout(function () {\n $scope.onMeterChange(item);\n }, 1300);\n };\n $scope.onMeterChange = function (item, analytics_value) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n dropdownInteraction = 'Meter';\n var meterDataAction = item.text.split('-');\n $scope.meterTag = $.trim(meterDataAction[0]);\n // Google Analytics\n if (!meterLoaded) {\n meterLoaded = true;\n var gasType = '';\n var electricType = '';\n if (_typeof(angular.element('#trackinginfo').attr('gas')) !== (typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) && angular.element('#trackinginfo').attr('gas') !== false) gasType = 'gas';\n if (_typeof(angular.element('#trackinginfo').attr('electric')) !== (typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) && angular.element('#trackinginfo').attr('electric') !== false) electricType = 'electric';\n var dataAction = '';\n if (gasType != '' && electricType != '') dataAction = \"\".concat(gasType, \" \").concat(electricType);else dataAction = gasType + electricType;\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'ServiceType',\n serviceType: dataAction,\n event: 'usage-analysis-web-service'\n });\n } else {\n // console.log(\"new analytics: \" + angular.element('#trackinginfo').attr('gas'));\n\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Meter',\n 'data-action': $scope.meterTag,\n event: 'usage-analysis-meter-change'\n });\n }\n $scope.meter_certified = item.certified;\n\n // update table\n $scope.loaded = false;\n var tableObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\n };\n $http.post(api_url_table, tableObj, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(updateTableX, getErrorPanel);\n _updateSelectors(item, 'Meter');\n };\n $scope.adjustTableMobile = function () {\n if ($scope.maxHeightChanged) $scope.maxHeightChanged = false;else $scope.maxHeightChanged = true;\n };\n}\nusageAnalysisControllerTest.$inject = ['$scope', '$element', '$window', '$http', '$timeout', '$rootScope'];\napp.controller('usageAnalysisControllerTest', usageAnalysisControllerTest);\n/*\r\n * Angular controller\r\n * EqualPaymentPlanController manage a carousel with slides component\r\n * \r\n */\n\nfunction EqualPaymentPlanController($scope, $window, $rootScope, $templateCache, $element) {\n $scope.analytics = {\n value: \"\"\n };\n $scope.submitForm = function ($event, form_controller) {\n if (form_controller.$invalid) {\n $event.preventDefault();\n angular.forEach(form_controller.$error, function (field) {\n angular.forEach(field, function (errorField) {\n errorField.$setTouched();\n });\n });\n return false;\n }\n };\n $scope.closeModal = function ($element) {\n angular.element(\".modal\").modal(\"hide\");\n };\n $element.find(\".cancel-modal\").on('hidden.bs.modal', function (e) {\n $element.find(\".cancel-btn\").blur();\n });\n $scope.radioselected = function (value) {\n $scope.analytics.value = value;\n };\n}\n;\nEqualPaymentPlanController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$element'];\napp.controller('EqualPaymentPlanController', EqualPaymentPlanController);\nvar shortCopyOffersCtrl = function shortCopyOffersCtrl($scope, $http, myAccountFactory) {\n $scope.features = [];\n myAccountFactory.getJsonParams('/api/ShortCopy/GetVendors', {}).then(function (response) {\n $scope.features = response.data;\n console.log($scope.features);\n console.log(response);\n }).catch(function (reason) {});\n};\nshortCopyOffersCtrl.$inject = ['$scope', '$http', 'myAccountFactory'];\napp.controller('shortCopyOffersCtrl', shortCopyOffersCtrl);\napp.controller('FPPdfTest', FPPdfTest);\nFPPdfTest.$inject = ['$scope', 'apiConfigService', 'assetService', 'FPServiceOrdersFactory', 'FPSitecoreServices', 'commonService', 'FPDataModelsDTOService', 'FPAddendumService', 'FPPdfServiceOrder'];\nfunction FPPdfTest($scope, apiConfigService, assetService, serviceOrdersFactory, sitecoreServices, commonService, dtoService, addendumService, pdfServiceOrder) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _url = null;\n\n /**\r\n * Global Vars\r\n */\n // SERVICE REQUEST\n vm.serviceOrder = '{\"assignedOtherTechnician\":\"Technician Name\",\"assignedTechnician\":{\"badgeNumber\":\"\",\"cdpId\":\"SP1542290102188\",\"name\":\"Jamie Martinez\",\"phone\":\"303020404\"},\"cancelledReason\":{\"cancelReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"contactName\":\"Contact Name Test\",\"contractorInvoiceNumber\":\"00054\",\"createdDate\":\"2018-11-27T20:44:59-05:00\",\"customer\":{\"alternatePhone\":\"2021234567\",\"name\":\"Phil T Phillips\",\"primaryEmailAddress\":\"demo@example.com\",\"primaryPhone\":\"2024843959\",\"firstName\":\"\",\"lastName\":\"\",\"middleName\":\"\"},\"customerContactHistory\":{\"contactComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"firstAttemptDate\":\"2018-11-30T08:00-05:00\",\"noOfContactAttempts\":4,\"surveyReceivedByCustomer\":true,\"customerPreferredSurveyOption\":\"\"},\"customerContactPreferences\":{\"bestTimeToCallEnd\":\"12:00 PM\",\"bestTimeToCallStart\":\"8:00 AM\",\"notifyCustomerWhenInRoute\":true,\"preferredEmailAddress\":\"test@testemail.com\"},\"declinedReason\":{\"declineReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"dukeInvoiceNumber\":\"\",\"isRushOrder\":true,\"multipleTechnicianRequired\":true,\"orderCostTimeDetails\":{\"entitlementLaborCost\":{\"value\":0},\"entitlementLaborHours\":5,\"laborCostNotCovered\":{\"value\":10,\"currencyIso\":\"\",\"formattedValue\":\"$ 10\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"partsCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"partsCostNotCovered\":{\"value\":15,\"currencyIso\":\"\",\"formattedValue\":\"$ 15\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"regularLaborCost\":{\"value\":10, \"formattedValue\": \"$ 10\"},\"regularLaborHours\":10,\"totalDueFromCustomer\":{\"value\":150,\"currencyIso\":\"\",\"formattedValue\":\"$ 150\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalLaborCost\":{\"value\":200,\"currencyIso\":\"\",\"formattedValue\":\"$ 200\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalLaborPartsCoveredCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"tripFee\":{\"value\":120,\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"entitlementlaborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":120},\"laborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 30\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":30},\"materialCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 15\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":15},\"regularLabourCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 40\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":40},\"totalOrderCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 300\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":300}},\"program\":\"Contractor Network - Clermont & Winter Garden\",\"programAnnualCoverageLimit\":{\"value\":10,\"currencyIso\":\"\",\"formattedValue\":\"$ 10\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"programEntitlementBalance\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"repairType\":{\"code\":\"\",\"name\":\"Repair Type Name\"},\"rescheduledEndDate\":\"\",\"rescheduledStartDate\":\"\",\"resolutionDetails\":{\"resolutionDate\":\"2018-12-14T00:00-05:00\",\"resolutionType\":{\"code\":\"REPAIR\",\"name\":\"Repair\"}},\"returnTripRequired\":true,\"scheduledEndDate\":\"2018-12-20T08:30-05:00\",\"scheduledStartDate\":\"2018-12-20T08:00-05:00\",\"serviceAddress\":{\"city\":\"Orlando\",\"county\":\"United States\",\"directions\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"jurisdiction\":\"DEF\",\"line1\":\"321 1st Street\",\"line2\":\"\",\"meterNumber\":[{\"meterId\":\"005643101\"}],\"postalCode\":\"32824\",\"state\":\"FL\",\"subDivision\":\"Sub Division test\",\"countryIso\":\"US\"},\"serviceComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"serviceOrderBalance\":{\"value\":100,\"currencyIso\":\"\",\"formattedValue\":\"$ 100\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"serviceOrderId\":\"70001023\",\"soStatus\":\"COMPLETED\",\"soType\":\"CONTRACTOR_NETWORK\",\"woorSR\":\"SERVICE REQUEST\",\"descriptionOfWorkQtyParts\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"descriptionOfWorkQtyPartsCovered\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"descriptionOfWorkQtyPartsNonCovered\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"equipmentDetails\":{\"deviceName\":\"\",\"deviceOperational\":\"\",\"deviceSerialNumber\":\"\",\"replacementDeviceName\":\"\",\"replacementDeviceSerialNo\":\"\",\"replacementNeeded\":\"\"},\"groundingDetails\":{\"groundingRepairsNeeded\":\"\",\"singlePointGrounding\":\"\"},\"kvDatas\":{\"kvDataList\":[{\"name\":\"\",\"value\":\"\"}]},\"regularLaborHours\":\"\",\"soDbStatus\":\"\",\"soTypeName\":\"CONTRACTOR NETWORK\",\"soStatusName\":\"Completed\",\"programCode\":\"ECN-Clermont&WinterGarden\"}';\n // WORK ORDER\n //vm.serviceOrder = '{\"assignedOtherTechnician\":\"Technician Name\",\"assignedTechnician\":{\"badgeNumber\":\"\",\"cdpId\":\"SP1542290102188\",\"name\":\"Jamie Martinez\",\"phone\":\"303020404\"},\"cancelledReason\":{\"cancelReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"contactName\":\"\",\"contractorInvoiceNumber\":\"00058\",\"createdDate\":\"2018-11-27T21:56:40-05:00\",\"customer\":{\"alternatePhone\":\"2345678901\",\"name\":\"BETTY NULL NICHOLS\",\"primaryEmailAddress\":\"demo@example.com\",\"primaryPhone\":\"1234567890\",\"firstName\":\"\",\"lastName\":\"\",\"middleName\":\"\"},\"customerContactHistory\":{\"contactComments\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"firstAttemptDate\":\"2018-11-05T08:15:30-05:00\",\"noOfContactAttempts\":4,\"surveyReceivedByCustomer\":false,\"customerPreferredSurveyOption\":\"\"},\"customerContactPreferences\":{\"bestTimeToCallEnd\":\"12:00 PM\",\"bestTimeToCallStart\":\"8:00 AM\",\"notifyCustomerWhenInRoute\":false,\"preferredEmailAddress\":\"\"},\"declinedReason\":{\"declineReasonType\":{\"code\":\"\",\"name\":\"\"},\"reasonComments\":\"\"},\"descriptionOfWorkQtyParts\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\"dukeInvoiceNumber\":\"\",\"equipmentDetails\":{\"deviceName\":\"PEMCO LP SS320-LB25\",\"deviceOperational\":false,\"deviceSerialNumber\":\"\",\"replacementDeviceName\":\"\",\"replacementDeviceSerialNo\":\"\",\"replacementNeeded\":false},\"groundingDetails\":{\"groundingRepairsNeeded\":false,\"singlePointGrounding\":false},\"isRushOrder\":false,\"multipleTechnicianRequired\":false,\"orderCostTimeDetails\":{\"entitlementLaborHours\":0,\"laborCost\":{\"value\":20,\"currencyIso\":\"\",\"formattedValue\":\"$ 20\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"materialCost\":{\"value\":50,\"currencyIso\":\"\",\"formattedValue\":\"$ 50\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"regularLaborHours\":0,\"totalLaborCost\":{\"value\":0,\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"totalOrderCost\":{\"value\":0,\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"tripFee\":{\"value\":120,\"currencyIso\":\"\",\"formattedValue\":\"$ 120\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\"},\"entitlementlaborCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"laborCostNotCovered\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 150\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"150\"},\"partsCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"partsCostNotCovered\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"regularLabourCost\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"totalDueFromCustomer\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"totalLaborPartsCoveredCost\":{\"currencyIso\":\"\",\"formattedValue\":\"$ 200\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"200\"}},\"program\":\"Surge Protection\",\"rescheduledEndDate\":\"\",\"rescheduledStartDate\":\"\",\"resolutionDetails\":{\"resolutionDate\":\"\",\"resolutionType\":\"\"},\"returnTripRequired\":false,\"scheduledEndDate\":\"2018-11-05T08:15:30-05:00\",\"scheduledStartDate\":\"2018-11-05T08:15:30-05:00\",\"serviceAddress\":{\"city\":\"ANDERSON\",\"county\":\"\",\"directions\":\"\",\"jurisdiction\":\"DEC\",\"line1\":\"\",\"line2\":\"\",\"postalCode\":\"29625\",\"state\":\"SC\",\"subDivision\":\"Tryon Suites\",\"countryIso\":\"\",\"meterNumber\":\"\"},\"serviceComments\":\"Test Service Comments\",\"serviceOrderId\":\"80001093\",\"soStatus\":\"SCHEDULED\",\"soType\":\"INSTALLATION\",\"woorSR\":\"WORK ORDER\",\"descriptionOfWorkQtyPartsCovered\":\"\",\"descriptionOfWorkQtyPartsNonCovered\":\"\",\"kvDatas\":{\"kvDataList\":[{\"name\":\"\",\"value\":\"\"}]},\"regularLaborHours\":\"\",\"programAnnualCoverageLimit\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"programEntitlementBalance\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"repairType\":\"\",\"serviceOrderBalance\":{\"currencyIso\":\"\",\"formattedValue\":\"\",\"maxQuantity\":\"\",\"minQuantity\":\"\",\"priceType\":\"\",\"value\":\"\"},\"soDbStatus\":\"\",\"soTypeName\":\"INSTALLATION\",\"soStatusName\":\"Scheduled\",\"programCode\":\"PQ\"}';\n /**\r\n * Function Declarations\r\n */\n vm.openPdf = openPdf;\n\n /**\r\n * Function Definitions\r\n */\n function openPdf() {\n pdfServiceOrder.open(JSON.parse(vm.serviceOrder));\n }\n\n /* function load(){\r\n _url = apiConfigService.testServiceOrderUrl();\r\n var promises = [getServiceOrders()];\r\n commonService.executePromises(promises)\r\n .then(function(){\r\n vm.loaded = true; \r\n });\r\n function getServiceOrders(){\r\n return serviceOrdersFactory.getServiceOrders(_url)\r\n .then(\r\n function (result) {\r\n \r\n if (result.data.serviceOrders) {\r\n vm.serviceOrder = result.data.serviceOrders[0];\r\n }\r\n },\r\n function (error) {\r\n sitecoreServices.logException(error);\r\n });\r\n }; \r\n };\r\n \r\n /**\r\n * Initialization\r\n */\n /* var init = function(){\r\n load();\r\n };\r\n init(); */\n}\nfunction kubraIframeController($http, $scope, $element, $timeout) {\n var vm = this;\n vm.setFormValues;\n vm.success = false;\n vm.xmlBlob = '';\n vm.url = '';\n vm.processForm = processForm;\n var urlFlag,\n xmlFlag = false;\n $scope.$watchGroup([function () {\n return vm.xmlBlob;\n }, function () {\n return vm.url;\n }], function (newValues, oldValues) {\n if (newValues[0] && newValues[1]) {\n //check for changes in both values\n //$timeout( function (){//wait for $digest cycle to finish\n // //$element.find('form').submit();\n // angular.element('.submitButton').trigger('click');\n //});\n $timeout(function () {\n $element.find('form').submit();\n }, 0);\n }\n });\n $timeout(function () {\n $element.find('form').submit();\n }, 0);\n function processForm() {\n if (vm.url != '') $http({\n url: vm.url,\n method: 'POST',\n data: vm.xmlBlob,\n headers: {\n 'Content-Type': 'text/xml'\n }\n }).then(function (response) {\n vm.success = true;\n }, function (response) {});\n }\n}\nkubraIframeController.$inject['$http', '$scope', '$element', '$timeout'];\napp.controller('kubraIframeController', kubraIframeController);\n/*\r\n * Angular controller\r\n * Create Profile Controller\r\n *\r\n */\n\nfunction manageProfileController($scope, $window, $rootScope, $templateCache, $controller, $element, $http, $timeout, $compile) {\n $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';\n $scope.invalidEmail = true;\n $scope.loadingSpinner = false;\n $scope.alreadyVerified = false;\n $scope.confirmAnalytic = '';\n var emailChanged = false;\n $scope.$watch('ChangeEmailForm.data.emailAddress', function (present, old) {\n emailChanged = true;\n });\n var disableLink = function disableLink(option) {\n var link = $element.find('.accept-terms-registration .link');\n var conversion = $element.hasClass('conversion');\n if (option) {\n link.removeAttr('tabindex');\n } else {\n link.attr('tabindex', '0');\n }\n if (conversion) {\n $timeout(function () {\n $scope.confirmAnalytic = $element.find('.validation-confirm .help-label').text();\n }, 1000);\n }\n };\n $scope.validateEmail = function (item) {\n if (emailChanged) {\n emailChanged = false;\n var model = $element.find(\"#\".concat(item)).controller('ngModel');\n if (model.$valid) {\n var dataObj = {\n email: model.$viewValue\n };\n } else {\n $scope.invalidEmail = true;\n $scope.alreadyVerified = false;\n disableLink($scope.invalidEmail);\n }\n }\n };\n $scope.submitForm = function ($event, form_controller) {\n if (form_controller.$invalid) {\n $event.preventDefault();\n angular.forEach(form_controller.$error, function (field) {\n angular.forEach(field, function (errorField) {\n errorField.$setTouched();\n });\n });\n return false;\n }\n };\n}\nmanageProfileController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller', '$element', '$http', '$timeout', '$compile'];\napp.controller('manageProfileController', manageProfileController);\n/*\r\n * Angular controller\r\n * Create Profile Controller\r\n *\r\n */\n\nfunction multipleAccountsController($scope, $window, $rootScope, $templateCache, $controller, $element, $http, $timeout, $compile, $filter, $q) {\n var $moreInfoPane = null;\n var showMoreBtn = angular.element('button.more-info-label');\n var $el = $element;\n var orderBy = $filter('orderBy');\n var one = 1;\n var negOne = -1;\n var three = 3;\n var two = 2;\n var zero = 0;\n var ten = 10;\n var thirtyTwo = 32;\n var eleven = 11;\n var inputChangedPromise;\n $moreInfoPane = angular.element($el.find('.more-info-more'));\n $scope.accounts = [];\n $scope.pageChange = 0;\n $scope.disabled = true;\n $scope.reverse = false;\n $scope.filteredaccounts = [];\n $scope.groupedaccounts = [];\n $scope.accountsPerPage = 10;\n $scope.pagedAccounts = [];\n $scope.currentPage = 0;\n $scope.middle = 3;\n $scope.propertyName = '';\n $scope.pauseLoop = false;\n $scope.allDeferredPromises = [];\n var itemsCounted = {};\n itemsCounted.count = 0;\n $scope.setActive = function (event) {\n if ($(event.target).parent().hasClass('active')) {\n $(event.target).parent().removeClass('active');\n } else {\n $(event.target).parent().addClass('active');\n }\n };\n var dueDateAndBalanceService = function dueDateAndBalanceService(dataObject) {\n var deferred = $q.defer();\n var dataObj = dataObject || {};\n $scope.allDeferredPromises.push(deferred);\n $http({\n method: 'POST',\n url: '/api/MultipleAccountsTable/GetBalanceResponse',\n data: dataObj,\n headers: {\n 'Content-Type': 'application/json'\n },\n timeout: deferred.promise\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (error) {\n deferred.reject(error.data);\n });\n return deferred.promise;\n };\n var payNowService = function payNowService(url, dataObject) {\n var deferred = $q.defer();\n var dataObj = dataObject || {};\n $scope.allDeferredPromises.push(deferred);\n $http({\n method: 'POST',\n url: url,\n data: dataObj,\n headers: {\n 'Content-Type': 'application/json'\n },\n timeout: deferred.promise\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (error) {\n deferred.reject(error.data);\n });\n return deferred.promise;\n };\n $scope.setAccounts = function (accounts) {\n $scope.accounts = accounts;\n $scope.preSort = accounts;\n $scope.accounts[0].PrimaryAccount = true;\n $scope.sortBy('ServiceAddress');\n $scope.updatedAccounts = [];\n if (accounts === undefined) {\n $scope.errorText = 'AN ERROR HAS OCCURED';\n } else {\n $scope.errorText = 'There are no accounts matching your search. We recommend searching by typing an account number, nickname or address.';\n }\n };\n var getDataForFilteredAccounts = function getDataForFilteredAccounts() {\n $scope.pagedAccounts.forEach(function (page, index) {\n getDueDateAndAmountDue(page);\n });\n };\n var getDueDateAndAmountDue = function getDueDateAndAmountDue(currentPageAccounts) {\n currentPageAccounts.forEach(function (element, index) {\n var newElement = element;\n var dataObj = {\n srcsyscd: newElement.SrcSysCd,\n srcacctid: newElement.SrcAcctId,\n srcacctid2: newElement.SrcAcctId2\n };\n if (!$scope.pauseLoop && element.Amount === undefined) {\n dueDateAndBalanceService(dataObj).then(function (response) {\n if (!$scope.pauseLoop) {\n var dueDateAndBill = response;\n var accountNumber = newElement.AccountNumber;\n delete newElement.AccountNumber;\n newElement.AccountNumber = accountNumber;\n newElement.DueDate = dueDateAndBill.DueDate;\n if (dueDateAndBill.ErrorCode !== null) {\n newElement.ErrorCode = dueDateAndBill.ErrorCode;\n }\n newElement.Amount = dueDateAndBill.Amount;\n displayDisabled();\n }\n },\n // Error\n function (response) {\n console.log(response);\n });\n checkPayNowLinkValidity(dataObj, element);\n }\n displayDisabled();\n });\n };\n $scope.loadPayNowLink = function (account) {\n var dataObj = {\n srcsyscd: account.SrcSysCd,\n srcacctid: account.SrcAcctId,\n srcacctid2: account.SrcAcctId2\n };\n $scope.allDeferredPromises.forEach(function (element) {\n element.resolve('Cancelled!');\n });\n payNowService('/api/MultipleAccountsTable/PayNow', dataObj).then(function (response) {\n $window.location.href = response;\n },\n // Error\n function (response) {\n console.log(response);\n });\n };\n var checkPayNowLinkValidity = function checkPayNowLinkValidity(dataObj, element) {\n var newElement = element;\n if (!$scope.pauseLoop) {\n payNowService('/api/MultipleAccountsTable/CheckPayNow', dataObj).then(function (response) {\n if (!$scope.pauseLoop) {\n newElement.ShowPayNow = response === 'True' ? true : response === 'False' ? false : response;\n }\n },\n // Error\n function (response) {\n console.log(response);\n });\n }\n };\n var viewAccountService = function viewAccountService(url, dataObject) {\n var deferred = $q.defer();\n var dataObj = dataObject || {};\n $http({\n method: 'POST',\n url: url,\n data: dataObj,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (data) {\n deferred.reject(data.data);\n });\n return deferred.promise;\n };\n $scope.viewAccount = function (element) {\n $scope.pauseLoop = true;\n $scope.allDeferredPromises.forEach(function (element) {\n element.resolve('Cancelled!');\n });\n var dataObj = {\n srcsyscd: element.SrcSysCd,\n srcacctid: element.SrcAcctId,\n srcacctid2: element.SrcAcctId2\n };\n $window.location.href = '/my-account/dashboard';\n };\n $scope.toggleMoreInfo = function (toggleButton) {\n toggleButton.preventDefault();\n var currentToggleButton = angular.element(toggleButton.currentTarget);\n currentToggleButton.attr('aria-pressed', 'true');\n if ($scope.currentShowMsg === $scope.showLessMsg) {\n $scope.showIcon = 'caret-arrow-down';\n $scope.currentShowMsg = $scope.showAllMsg;\n currentToggleButton.attr('aria-expanded', 'false');\n currentToggleButton.attr('aria-pressed', 'false');\n } else {\n $scope.showIcon = 'caret-arrow-up';\n $scope.currentShowMsg = $scope.showLessMsg;\n currentToggleButton.attr('aria-expanded', 'true');\n }\n $moreInfoPane.slideToggle();\n $scope.$watch('accounts', function () {\n if ($scope.accounts.length < eleven) {\n showMoreBtn.remove();\n } else if ($scope.accounts.length > eleven) {\n var moreElement = angular.element('.auth.Manage-Profile.primary-account table.more');\n $(moreElement).attr('style', 'margin-bottom: 13px !important');\n }\n });\n };\n $scope.toggleMoreInfoOnKeyUp = function (toggleButton) {\n toggleButton.preventDefault();\n if (toggleButton.keyCode === thirtyTwo) {\n $scope.toggleMoreInfo(toggleButton);\n }\n };\n $scope.toggleClass = function (thNumber) {\n if (thNumber === 'th1') {\n $scope.th1 = thNumber;\n $scope.th2 = false;\n $scope.th3 = false;\n $scope.th4 = false;\n } else if (thNumber === 'th2') {\n $scope.th2 = thNumber;\n $scope.th1 = false;\n $scope.th3 = false;\n $scope.th4 = false;\n } else if (thNumber === 'th3') {\n $scope.th3 = thNumber;\n $scope.th2 = false;\n $scope.th1 = false;\n $scope.th4 = false;\n } else {\n $scope.th4 = thNumber;\n $scope.th2 = false;\n $scope.th3 = false;\n $scope.th1 = false;\n }\n };\n $scope.dataLayerPush = function (action, label) {\n var data = {\n 'data-category': 'multi_account_selector',\n 'data-label': label,\n 'data-action': action,\n event: 'event-click'\n };\n if (dataLayer) {\n dataLayer.push(data);\n }\n };\n var searchMatch = function searchMatch(haystack, needle) {\n if (!needle) {\n return true;\n }\n return haystack.toString().toLowerCase().indexOf(needle.toString().toLowerCase()) !== negOne;\n };\n\n // init the filtered accounts\n $scope.search = function () {\n $scope.filteredaccounts = $filter('filter')($scope.accounts, function (account) {\n var myvar = false;\n Object.keys(account).forEach(function (attr) {\n if (account[attr]) {\n if (searchMatch(account[attr], $scope.query)) myvar = true;\n }\n });\n return myvar;\n });\n\n // take care of the sorting order\n\n /*\r\n if ($scope.sortingOrder !== '') {\r\n $scope.filteredaccounts = $filter('orderBy')(\r\n $scope.filteredaccounts, $scope.sortingOrder, $scope.reverse\r\n );\r\n }\r\n */\n $scope.currentPage = 0;\n $scope.middle = 3;\n // now group by pages\n $scope.groupToPages();\n if ($scope.filteredaccounts.length < $scope.accounts.length) {\n // const oneThousand = 1000;\n $scope.allDeferredPromises.forEach(function (element) {\n element.resolve('Cancelled!');\n });\n if (_inputChangedPromise) {\n $timeout.cancel(_inputChangedPromise);\n }\n var _inputChangedPromise = $timeout(getDueDateAndAmountDue($scope.filteredaccounts), 1000);\n } else {\n getDataForFilteredAccounts();\n }\n };\n\n // calculate page in place\n $scope.groupToPages = function () {\n $scope.pagedAccounts = [];\n if ($scope.filteredaccounts.length < ten) {\n $scope.pagedAccounts[zero] = $scope.filteredaccounts;\n } else {\n for (var index = zero; index < $scope.filteredaccounts.length; index += one) {\n if (index % $scope.accountsPerPage === zero) {\n $scope.pagedAccounts[Math.floor(index / $scope.accountsPerPage)] = [$scope.filteredaccounts[index]];\n } else {\n $scope.pagedAccounts[Math.floor(index / $scope.accountsPerPage)].push($scope.filteredaccounts[index]);\n }\n }\n }\n };\n $scope.range = function (start, end) {\n var ret = [];\n if (!end) {\n var newEnd = start;\n var newStart = zero;\n for (var index = newStart; index < newEnd; index += one) {\n ret.push(index);\n }\n return ret;\n }\n for (var _index = start; _index < end; _index += one) {\n ret.push(_index);\n }\n return ret;\n };\n var pageChangeHighlight = function pageChangeHighlight() {\n $scope.pageChange = true;\n var fiveHund = 500;\n $timeout(function () {\n $scope.pageChange = false;\n }, fiveHund);\n };\n $scope.prevPage = function () {\n $scope.pauseLoop = false;\n if ($scope.currentPage > zero) {\n $scope.currentPage -= one;\n if ($scope.middle > three && $scope.currentPage < $scope.pagedAccounts.length - two) {\n $scope.middle -= one;\n }\n if ($scope.currentPage < three) {\n $scope.middle = 3;\n }\n pageChangeHighlight();\n // getPageAccounts($scope.currentPage);\n }\n };\n $scope.nextPage = function () {\n $scope.pauseLoop = false;\n if ($scope.currentPage < $scope.pagedAccounts.length) {\n $scope.currentPage += one;\n if ($scope.middle < $scope.pagedAccounts.length - two && $scope.currentPage > three) {\n $scope.middle += one;\n }\n pageChangeHighlight();\n // getPageAccounts($scope.currentPage);\n }\n };\n $scope.setPage = function (index, mid) {\n $scope.pauseLoop = false;\n $scope.currentPage = index;\n if ($scope.currentPage > two && $scope.currentPage < $scope.pagedAccounts.length - two) {\n $scope.middle = mid;\n }\n if (index === $scope.pagedAccounts.length - one) {\n $scope.middle = $scope.pagedAccounts.length - two;\n }\n if (index < three) {\n $scope.middle = three;\n }\n pageChangeHighlight();\n // getPageAccounts(index);\n };\n\n /*\r\n let getPageAccounts = (index) => {\r\n let currentPageAccounts = $scope.pagedAccounts[index];\r\n getDueDateAndAmountDue(currentPageAccounts);\r\n } */\n\n // functions have been describe process the data for display\n $scope.search();\n var displayDisabled = function displayDisabled() {\n $scope.filteredaccounts.every(checkIfKeyExists);\n function checkIfKeyExists(account) {\n return account.hasOwnProperty('Amount') && account.Amount != undefined;\n }\n if ($scope.filteredaccounts.every(checkIfKeyExists)) {\n $scope.disabled = false;\n $scope.preSort = $scope.accounts.slice(0);\n } else {\n $scope.disabled = true;\n }\n };\n $scope.sortBy = function (propertyName) {\n $scope.propertyName = propertyName;\n if (propertyName === 'DueDate') {\n $scope.accounts = orderBy($scope.accounts, $scope.propertyName, $scope.reverse);\n }\n if (propertyName === 'Amount') {\n var compare = function compare(a, b) {\n // Use toUpperCase() to ignore character casing\n var amountA = Number(a.Amount);\n var amountB = Number(b.Amount);\n var comparison = 0;\n if (amountA > amountB) {\n comparison = 1;\n } else if (amountA < amountB) {\n comparison = -1;\n }\n if (!$scope.reverse) {\n return comparison;\n }\n return comparison * -1;\n };\n $scope.accounts.sort(compare);\n }\n if (propertyName === 'ServiceAddress') {\n $scope.accounts = $scope.preSort;\n }\n $scope.search();\n $scope.reverse = !$scope.reverse;\n };\n}\nmultipleAccountsController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller', '$element', '$http', '$timeout', '$compile', '$filter', '$q'];\napp.controller('multipleAccountsController', multipleAccountsController);\n/*\r\n * Angular controller\r\n * MyAccountSummaryController\r\n *\r\n */\n\nfunction MyAccountSummaryController($scope, $rootScope) {\n var s = $scope;\n var root = $rootScope;\n s.view = {};\n s.init = function () {\n /*\r\n *\r\n once we have the api/web method specifications we will need to replease the let url and params in the correct way, then the prommise will return the data and then we ll need to replase the attributes in the s.view object\r\n *\r\n */\n\n //let url='';\n //let params={};\n //root.getService(params,url).then().error();\n //root.postService(params,url).then().error();\n };\n //s.view = {\n // CreditBalance: 124.99, // Credit Balance in blue\n // ImportantMessage: 1, // this will controll the popover that shows a message when the mouse is over the icon (!)\n // PayNowBtn: 1, // this controlls if the button pay now will appear or not\n // LastPaymentDate: 1396731724000, // last payment date in the bellow legend -> its a currency\n // LastPaymentAmount: 119.43, // last payment date in the bellow legend\n // PaperlessStatus: 1, // status showed in the paument options\n // AutoPayStatus: 0, // status showed in the paument options\n // EqualPayStatus: 1 // status showed in the paument options\n //};\n}\n;\nMyAccountSummaryController.$inject = ['$scope', '$rootScope'];\napp.controller('MyAccountSummaryController', MyAccountSummaryController);\nfunction ohioChoiceCalendarCtrl($document) {\n var vm = this;\n var today = new Date();\n vm.init = function (date, past, range, disPrev, disNext, supplierId) {\n if (date != null && date != \"\" && date != undefined) {\n vm.dateSelected = new Date(date);\n } else {\n vm.dateSelected = new Date(addDays(today, vm.endDateRange));\n }\n vm.dateSelectedMonth = vm.dateSelected.getMonth();\n vm.dateSelectedMonthName = vm.months[vm.dateSelectedMonth];\n vm.dateSelectedDay = vm.dateSelected.getDay();\n vm.dateSelectedDayName = vm.days.single[vm.dateSelectedDay];\n vm.disablePastDates = past;\n vm.endDateRange = range;\n vm.disablePrevMonth = disPrev;\n vm.disableNextMonth = disNext;\n vm.supplierId = supplierId;\n vm.CreateMonth(today, vm.previousDayDate);\n };\n vm.days = {\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n single: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n };\n vm.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n vm.holidays = [];\n vm.presentMonth = today.getMonth();\n vm.presentYear = today.getFullYear();\n var previousDay = new Date(vm.presentYear, vm.presentMonth + 1, 0);\n vm.previousDayDate = previousDay.getDate();\n vm.currentMonth = {\n month: '',\n year: '',\n monthName: '',\n date: today,\n dates: [],\n firstDate: null,\n lastDate: null\n };\n function addDays(date, days) {\n var result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n }\n ;\n vm.weekStart = function (date, dates) {\n var dateMonth = date.getMonth();\n var dateYear = date.getFullYear();\n var firstDayDate = new Date(dateYear, dateMonth, 1);\n var dayPosition = firstDayDate.getDay();\n var i = 0;\n for (i; i < dayPosition; i++) {\n dates.push({\n date: '',\n show: false\n });\n }\n return dates;\n };\n vm.compareDates = function (date1, date2) {\n var firstMonth = date1.getMonth();\n var secondMonth = date2.getMonth();\n var firstActualDate = date1.getDate();\n var secondActualDate = date2.getDate();\n var firstYear = date1.getFullYear();\n var secondYear = date2.getFullYear();\n if (firstMonth === secondMonth && firstYear === secondYear && firstActualDate === secondActualDate) {\n return true;\n } else {\n return false;\n }\n };\n vm.pastDate = function (date) {\n var newDate = new Date(date);\n if (newDate < today) {\n return true;\n } else {\n return false;\n }\n };\n vm.endDate = function (date, endDate) {\n var Month = date.getMonth();\n var ActualDate = date.getDate();\n var Year = date.getFullYear();\n var endMonth = endDate.getMonth();\n var endActualDate = endDate.getDate();\n var endYear = endDate.getFullYear();\n if (Month >= endMonth && ActualDate > endActualDate && Year >= endYear) {\n return true;\n } else {\n return false;\n }\n };\n vm.CreateMonth = function (date, previousDay) {\n var selectedID = null;\n vm.lastDate = new Date(addDays(today, vm.endDateRange));\n vm.currentMonth.day = date.getDate();\n vm.currentMonth.date = date;\n vm.currentMonth.year = date.getFullYear();\n vm.currentMonth.dates = [];\n vm.currentMonth.currentDates = vm.weekStart(date, vm.currentMonth.dates);\n vm.currentMonth.month = date.getMonth();\n vm.currentMonth.monthName = vm.months[date.getMonth()];\n for (var i = 1; i <= previousDay; i++) {\n var newDate = new Date(date.getFullYear(), date.getMonth(), i);\n if (vm.compareDates(newDate, today) && vm.compareDates(newDate, vm.dateSelected)) {\n vm.currentMonth.dates.push({\n date: newDate,\n today: true,\n selected: true,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: false\n });\n } else if (vm.compareDates(newDate, today)) {\n vm.currentMonth.dates.push({\n date: newDate,\n today: true,\n selected: false,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: false\n });\n } else if (vm.compareDates(newDate, vm.dateSelected)) {\n vm.currentMonth.dates.push({\n date: newDate,\n today: false,\n selected: true,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: false\n });\n selectedID = 'id' + i;\n } else if (vm.disablePastDates === true && vm.pastDate(newDate)) {\n vm.currentMonth.dates.push({\n date: newDate,\n today: false,\n selected: false,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: true\n });\n } else if (vm.endDateRange != null && vm.endDate(newDate, vm.lastDate)) {\n vm.currentMonth.dates.push({\n date: newDate,\n today: false,\n selected: false,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: true\n });\n } else {\n vm.currentMonth.dates.push({\n date: newDate,\n today: false,\n selected: false,\n id: 'id' + i,\n show: true,\n fade: false,\n disabled: false\n });\n }\n }\n if (selectedID != null) {\n var selectedIndex = vm.findDateIndex(selectedID);\n vm.SelectDate(vm.currentMonth.dates[selectedIndex].id, true);\n }\n selectedID = null;\n vm.checkPrevNext();\n return;\n };\n vm.checkPrevNext = function () {\n var currentMonthDates = angular.copy(vm.currentMonth.dates);\n for (var i = 0; i < currentMonthDates.length; i++) {\n if (currentMonthDates[i].show === false) {\n currentMonthDates.splice(i, 1);\n i--;\n }\n ;\n }\n var l = currentMonthDates.length - 1;\n if (currentMonthDates[0].disabled === true && currentMonthDates[l].disabled === false) {\n vm.disablePrevMonth = true;\n vm.disableNextMonth = false;\n } else if (currentMonthDates[l].disabled === true && currentMonthDates[0].disabled === false) {\n vm.disablePrevMonth = false;\n vm.disableNextMonth = true;\n } else if (currentMonthDates[l].disabled === true && currentMonthDates[0].disabled === true) {\n vm.disablePrevMonth = true;\n vm.disableNextMonth = true;\n } else if (currentMonthDates[l].disabled === false && currentMonthDates[0].disabled === false) {\n vm.disablePrevMonth = false;\n vm.disableNextMonth = false;\n }\n ;\n // PREVENT FUNKY BEHAVIOR IF LAST AVAILABLE DATE IS END OF MONTH //\n if (vm.compareDates(currentMonthDates[l].date, vm.lastDate) && currentMonthDates[l].disabled === false) {\n vm.disableNextMonth = true;\n }\n ;\n };\n vm.findDateIndex = function (id) {\n var i = 0;\n var length = vm.currentMonth.dates.length;\n for (i; i < length; i++) {\n var newId = vm.currentMonth.dates[i].id;\n if (newId === id) {\n return i;\n }\n }\n return;\n };\n vm.SelectDate = function (id, status) {\n if (status) {\n var index = vm.findDateIndex(id);\n var length = vm.currentMonth.dates.length;\n var i = 0;\n for (i; i < length; i++) {\n vm.currentMonth.dates[i].selected = false;\n if (i > index) {\n vm.currentMonth.dates[i].fade = true;\n } else {\n vm.currentMonth.dates[i].fade = false;\n }\n }\n vm.currentMonth.dates[index].selected = true;\n vm.currentMonth.dates[index].fade = false;\n vm.dateSelected = vm.currentMonth.dates[index].date;\n vm.dateSelectedMonth = vm.dateSelected.getMonth();\n vm.dateSelectedDay = vm.dateSelected.getDay();\n var date = document.getElementById('date-' + vm.supplierId);\n var dateView = document.getElementById('date-view-' + vm.supplierId);\n if (date != null) {\n date.value = formatDateJSON(vm.dateSelected);\n dateView.innerHTML = formatDate(vm.dateSelected);\n }\n }\n return;\n };\n vm.nextMonth = function (date) {\n var newMonthDate;\n var newMonthDay;\n var newMonthDayDate;\n if (date.getMonth() === 11) {\n newMonthDate = new Date(date.getFullYear() + 1, 0, 1);\n newMonthDay = new Date(date.getFullYear() + 1, 1, 0);\n newMonthDayDate = newMonthDay.getDate();\n vm.CreateMonth(newMonthDate, newMonthDayDate);\n return;\n } else {\n newMonthDate = new Date(date.getFullYear(), date.getMonth() + 1, 1);\n if (date.getMonth() === 10) {\n newMonthDay = new Date(date.getFullYear() + 1, 0, 0);\n } else {\n newMonthDay = new Date(date.getFullYear(), date.getMonth() + 2, 0);\n }\n newMonthDayDate = newMonthDay.getDate();\n vm.CreateMonth(newMonthDate, newMonthDayDate);\n return;\n }\n };\n vm.previousMonth = function (date) {\n if (date.getMonth() === 0) {\n var _newMonthDate = new Date(date.getFullYear() - 1, 11, 1);\n var _newMonthDay = new Date(date.getFullYear(), 0, 0);\n var _newMonthDayDate = _newMonthDay.getDate();\n vm.CreateMonth(_newMonthDate, _newMonthDayDate);\n return;\n } else {\n newMonthDate = new Date(date.getFullYear(), date.getMonth() - 1, 1);\n newMonthDay = new Date(date.getFullYear(), date.getMonth(), 0);\n }\n var newMonthDayDate = newMonthDay.getDate();\n vm.CreateMonth(newMonthDate, newMonthDayDate);\n return;\n };\n var formatMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\n var formatDays = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];\n function formatDateJSON(date) {\n var formattedDate = date;\n var Year = formattedDate.getFullYear();\n var Month = formattedDate.getMonth();\n Month = formatMonths[Month];\n var Day = formattedDate.getDate();\n if (Day < 10) {\n Day = formatDays[Day - 1];\n }\n formattedDate = Year + \"-\" + Month + \"-\" + Day + \"T00:00:00.0\";\n return formattedDate;\n }\n function formatDate(date) {\n var formattedDate = date;\n var Year = formattedDate.getFullYear();\n var Month = formattedDate.getMonth();\n Month = formatMonths[Month];\n var Day = formattedDate.getDate();\n if (Day < 10) {\n Day = formatDays[Day - 1];\n }\n formattedDate = Month + \"-\" + Day + \"-\" + Year;\n return formattedDate;\n }\n vm.toggleDate = function (supplier) {\n var dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\n var dateTick = $document.find('li.check-id-' + supplier + ' .date .date-tick');\n var toggleDisable = dateWrapper.hasClass('disabled');\n if (!toggleDisable) {\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\n dateWrapper.removeClass('active');\n dateWrapper.addClass('inactive');\n dateTick.removeClass('open');\n } else if (dateWrapper.hasClass('inactive')) {\n dateWrapper.addClass('active');\n dateWrapper.removeClass('inactive');\n dateTick.addClass('open');\n }\n }\n };\n}\nohioChoiceCalendarCtrl.$inject = ['$document'];\napp.controller('ohioChoiceCalendarCtrl', ohioChoiceCalendarCtrl);\nfunction ohioChoiceTableController($scope, $element, $window, $http, $timeout, $rootScope, $filter, $document, myAccountFactory, cookiesService) {\n var vm = $scope;\n\n // SITECORE API URLs //\n var getUrl = \"/api/OhioChoice/GetAllSuppliers\";\n var updateUrl = \"/api/OhioChoice/UpdateAllSuppliers\";\n if (window.location.hostname == \"localhost\") {\n getUrl = \"/api/OhioCustomerChoiceSettings/getOCCSettings\";\n updateUrl = \"/api/OhioCustomerChoiceSettings/updateOCCSettings\";\n }\n var today = new Date();\n today.setHours(0, 0, 0, 0);\n var endDateRange = 365;\n\n // CONSTANTS //\n var formatMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\n var formatDays = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];\n var ohioList = document.getElementById('ohio-choice-list');\n var octButtons = document.getElementById('ohio-choice-form').getElementsByClassName('oct-buttons')[0];\n var octTC = document.getElementById('ohio-choice-form').getElementsByClassName('oct-tc')[0];\n\n /* Data Import */\n vm.supplierRequest = {};\n vm.suppliers = [];\n\n // INIT FUNCTION WITH SERVICE CALL TO POPULATE TABLE - ACCEPTS DEFAULT DATE RANGE //\n vm.init = function (range) {\n endDateRange = range;\n myAccountFactory.getJson(getUrl).then(function (data) {\n vm.supplierRequest = data.data;\n angular.forEach(vm.supplierRequest.SupplierDataList, function (value) {\n vm.suppliers.push(value);\n if (value.authEndDateTime === \"\" || value.authEndDateTime === null || value.authEndDateTime === undefined || pastDate(value.authEndDateTime) || value.authorized === false) {\n value.authEndDateTime = defaultDate(endDateRange);\n value.authorized = false;\n }\n });\n }).then(function () {\n if (ohioList.classList.contains('loading')) {\n ohioList.classList.remove('loading');\n }\n if (octButtons) {\n octButtons.classList.add('show');\n }\n if (octTC) {\n octTC.classList.add('show');\n }\n }).catch(function (reason) {\n //ohioList.classList.remove('loading').add('error');\n console.log(reason);\n });\n };\n\n // CALCULATE DEFAULT DATE BASED ON RANGE //\n function defaultDate(days) {\n var oneYear = new Date();\n oneYear = oneYear.setDate(oneYear.getDate() + days);\n oneYear = new Date(oneYear);\n var Year = oneYear.getFullYear();\n var Month = oneYear.getMonth();\n Month = formatMonths[Month];\n var Day = oneYear.getDate();\n if (Day < 10) {\n Day = formatDays[Day - 1];\n }\n var defaultDate = Year + \"-\" + Month + \"-\" + Day + \"T00:00:00.0\";\n return defaultDate;\n }\n function pastDate(date) {\n var newDate = new Date(date);\n if (newDate < today) {\n return true;\n } else {\n return false;\n }\n }\n vm.toggleDate = function (supplier) {\n var dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\n var dateTick = $document.find('li.check-id-' + supplier + ' .date .date-tick');\n var toggleDisable = dateWrapper.hasClass('disabled');\n if (!toggleDisable) {\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\n dateWrapper.removeClass('active');\n dateWrapper.addClass('inactive');\n dateTick.removeClass('open');\n } else if (dateWrapper.hasClass('inactive')) {\n dateWrapper.addClass('active');\n dateWrapper.removeClass('inactive');\n dateTick.addClass('open');\n }\n }\n };\n vm.checkboxClick = function (supplier) {\n var checkbox = document.getElementById('check-id-' + supplier);\n if (checkbox.attributes.checked) {\n checkbox.removeAttribute('checked');\n checkbox.checked = false;\n } else {\n checkbox.setAttribute('checked', 'checked');\n checkbox.checked = true;\n }\n };\n\n // CHECK ALL LOOPS //\n vm.checkboxAll = function () {\n var checkbox = document.getElementById('checkall');\n var checkboxes = document.getElementsByClassName('checkbox-suppliers');\n if (checkbox.attributes.checked) {\n checkbox.removeAttribute('checked');\n checkbox.checked = false;\n Array.prototype.forEach.call(checkboxes, function (check) {\n if (check.attributes.checked) {\n check.removeAttribute('checked');\n check.checked = false;\n }\n });\n } else {\n checkbox.setAttribute('checked', 'checked');\n checkbox.checked = true;\n Array.prototype.forEach.call(checkboxes, function (check) {\n check.setAttribute('checked', 'checked');\n check.checked = true;\n });\n }\n };\n vm.checkboxChecked = function (supplier) {\n var checkbox = document.getElementById('check-id-' + supplier);\n var dateWrapper = $document.find('li.check-id-' + supplier + ' div.date-select');\n if (dateWrapper.hasClass('active') && !checkbox.checked) {\n vm.toggleDate(supplier);\n }\n return checkbox.checked;\n };\n\n // UPDATE SUPPLIERS OBJECT BEFORE POST //\n vm.updateSuppliers = function () {\n angular.forEach(vm.suppliers, function (value) {\n var checkbox = document.getElementById('check-id-' + value.supplierId);\n var supIndex = vm.findSupplierIndex(value.supplierId);\n var date = document.getElementById('date-' + value.supplierId);\n if (checkbox.checked) {\n vm.suppliers[supIndex].authorized = true;\n vm.suppliers[supIndex].authEndDateTime = date.value;\n } else {\n vm.suppliers[supIndex].authorized = false;\n vm.suppliers[supIndex].authEndDateTime = null;\n }\n });\n };\n vm.findSupplierIndex = function (id) {\n var i = 0;\n var length = vm.suppliers.length;\n for (i; i < length; i++) {\n var newId = vm.suppliers[i].supplierId;\n if (newId === id) {\n return i;\n }\n }\n return;\n };\n vm.openSuccessModal = function () {\n angular.element(\"#oct-success-modal\").modal(\"show\");\n };\n\n // CHECK FOR COOKIE AND OPEN SUCCESS MODAL //\n angular.element(document).ready(function () {\n if (cookiesService.getCookie('oct-update-success')) {\n vm.openSuccessModal();\n cookiesService.deleteCookie('oct-update-success');\n }\n });\n\n // LEAVE MODAL BUTTON //\n vm.leaveBtn = function (url) {\n $window.location.href = url;\n };\n\n // SAVE BUTTON //\n vm.submitForm = function () {\n octButtons.classList.add('loading');\n ohioList.classList.add('hide');\n octTC.classList.remove('show');\n vm.updateSuppliers();\n var postData = angular.copy(vm.suppliers);\n postData = \"postData=\" + encodeURIComponent(JSON.stringify({\n postData: postData\n }));\n var postHeaders = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n $rootScope.postService(postData, updateUrl, postHeaders).then(function (response) {\n if (response == \"True\") {\n cookiesService.setCookie('oct-update-success', 'True');\n window.location.reload();\n } else {\n console.log(response);\n octTC.classList.add('show');\n ohioList.classList.remove('hide');\n octButtons.classList.remove('loading');\n octButtons.classList.add('error');\n }\n },\n // Error\n function (response) {\n console.log(response);\n octTC.classList.add('show');\n ohioList.classList.remove('hide');\n octButtons.classList.remove('loading');\n octButtons.classList.add('error');\n });\n };\n}\nohioChoiceTableController.$inject = ['$scope', '$element', '$window', '$http', '$timeout', '$rootScope', '$filter', '$document', 'myAccountFactory', 'cookiesService'];\napp.controller('ohioChoiceTableController', ohioChoiceTableController);\nfunction paperlessBillingController($document, $element, $scope, $timeout, $window, $filter) {\n var vm = this;\n vm.accounts = [];\n vm.accountsFilter = [];\n vm.currentShowMsg = '';\n vm.searchAccount = '';\n vm.isShowMoreCollapsed = true;\n vm.shownAccounts = 5;\n vm.selected = [];\n vm.relativeURL = $window.location.pathname;\n vm.isAllSelected = false;\n vm.readyToSubmit = false;\n vm.shownAll = true;\n vm.selectedCount = 0;\n vm.dataActionReason = '';\n vm.alreadyEnrolled = false;\n vm.result = [];\n var availableAccounts = 0;\n vm.shownAccounts = 5;\n vm.disableAll = false;\n var tableCurrentHeight;\n var messages = {\n showMore: '',\n showLess: ''\n },\n showMoreBtn = angular.element('button.more-info-label'),\n tableContainer,\n tableInitialHeight = tableCurrentHeight = 0,\n initialShownAccounts = vm.shownAccounts,\n transitionEvent = getTransitionEvent(),\n ul;\n vm.setShowLabels = setShowLabels;\n vm.toggleShowMore = toggleShowMore;\n vm.radioSelected = radioSelected;\n vm.checkboxChanged = checkboxChanged;\n vm.toggleSelectAll = toggleSelectAll;\n vm.enrollOnPaperlessBilling = enrollOnPaperlessBilling;\n $element.find('.cancel-modal').on('hidden.bs.modal', function (e) {\n $element.find('.cancel-btn').blur();\n });\n function radioSelected(value) {\n vm.dataActionReason = value;\n }\n function toggleSelectAll() {\n var isAllSelected = vm.isAllSelected;\n var index = -1;\n angular.forEach(vm.accounts, function (account) {\n index = vm.result.indexOf(account);\n if (account.IsSuccess && index < 0) {\n account.selected = isAllSelected;\n vm.result.push(account);\n }\n });\n if (isAllSelected) {\n vm.selectedCount = vm.accounts.length;\n } else {\n vm.selectedCount = 0;\n angular.forEach(vm.accounts, function (account) {\n account.selected = false;\n vm.result = [];\n });\n }\n }\n function checkboxChanged(account) {\n var index = vm.result.indexOf(account);\n if (account.selected && index < 0) {\n vm.result.push(account);\n } else {\n vm.result.splice(index, 1);\n }\n vm.isAllSelected = vm.accounts.every(function (account) {\n return account.selected;\n });\n vm.selectedCount = $filter('filter')(vm.accounts, {\n selected: true\n }).length;\n if (vm.selectedCount == availableAccounts) {\n vm.isAllSelected = true;\n } else {\n vm.isAllSelected = false;\n }\n }\n function setShowLabels(more, less) {\n messages.showMore = more;\n messages.showLess = less;\n vm.currentShowMsg = messages.showMore;\n vm.showIcon = 'caret-arrow-down';\n }\n function toggleShowMore() {\n $element.find('.more-info-label').blur();\n vm.isShowMoreCollapsed = !vm.isShowMoreCollapsed;\n if (vm.accounts.length > 4 && vm.accounts.length < 11) {\n vm.shownAll = false;\n }\n var accountCheckboxes = $element.find(\".table-select-controls input[type='checkbox']\");\n var failureTooltips = $element.find('.enrollment-status .failure-icon');\n if (vm.isShowMoreCollapsed) {\n vm.currentShowMsg = messages.showMore;\n vm.showIcon = 'caret-arrow-down';\n showMoreBtn.attr('aria-expanded', 'false');\n tableContainer.css('overflow-y', 'hidden');\n tableContainer.css('max-height', tableInitialHeight);\n tableContainer.one(transitionEvent, function () {\n $timeout(function () {\n vm.shownAccounts = initialShownAccounts;\n tableContainer.css('overflow-y', 'visible');\n });\n });\n setTabIndex('-1', accountCheckboxes);\n setTabIndex('-1', failureTooltips);\n } else {\n vm.currentShowMsg = messages.showLess;\n vm.showIcon = 'caret-arrow-up';\n showMoreBtn.attr('aria-expanded', 'true');\n vm.shownAccounts = vm.accountsFilter.length;\n tableContainer.css('overflow-y', 'hidden');\n tableContainer.css('max-height', tableInitialHeight);\n setTabIndex('0', accountCheckboxes);\n setTabIndex('0', failureTooltips);\n }\n\n // Remove button (no toggle) if less than 11 accounts\n if (vm.accounts.length < 11) {\n showMoreBtn.remove();\n }\n }\n function enrollOnPaperlessBilling($event) {\n vm.disableAll = true;\n $event.preventDefault();\n if (vm.accounts.length == 1) {\n vm.accounts[0].selected = true;\n vm.result = vm.accounts;\n }\n var selectedItems = $filter('filter')(vm.accounts, {\n selected: true\n });\n var modalNeededExist = $filter('filter')(selectedItems, {\n ModalNeeded: true\n }).length;\n var form = $event.currentTarget;\n if (modalNeededExist && !vm.readyToSubmit) {\n vm.disableAll = false;\n }\n if (modalNeededExist > 0 && !vm.readyToSubmit) {\n vm.readyToSubmit = true;\n $('#already-enrolled-modal').modal('show');\n } else {\n $element.find('.enroll-btn').attr('disabled', 'disabled');\n $timeout(function () {\n form.submit();\n }, 0);\n }\n }\n var setTabIndex = function setTabIndex(index, elements) {\n elements.attr('tabindex', index);\n var typeComplete = $element.hasClass('complete');\n if (index == '0' || typeComplete) {\n elements.attr('tabindex', '0');\n } else if (!typeComplete) {\n elements.attr('tabindex', '-1');\n for (var i = 0; i < 5; i++) {\n angular.element(elements[i]).attr('tabindex', '0');\n }\n }\n };\n $scope.$on('tablecontent_loaded', function (e) {\n e.stopPropagation();\n var targetTable = $element.find('table');\n tableContainer = $element.find('.table-responsive');\n tableInitialHeight = initialShownAccounts == vm.shownAccounts ? targetTable[0].offsetHeight : tableInitialHeight;\n tableCurrentHeight = initialShownAccounts != vm.shownAccounts ? targetTable[0].offsetHeight : tableInitialHeight;\n if (vm.shownAccounts === vm.accountsFilter.length) {\n //table opens to show more\n tableContainer.css('max-height', tableCurrentHeight);\n }\n tableContainer.one(transitionEvent, function () {\n tableContainer.css('overflow-y', 'visible');\n });\n if (vm.accounts.length === 1) {\n vm.selectedCount = 1;\n }\n var modalNeededLength = $filter('filter')(vm.accounts, {\n ModalNeeded: true\n }).length;\n if (modalNeededLength > 0) {\n vm.alreadyEnrolled = true;\n }\n availableAccounts = $filter('filter')(vm.accounts, {\n IsSuccess: false\n }).length;\n availableAccounts = vm.accounts.length - availableAccounts;\n $('#already-enrolled-modal').on('hidden.bs.modal', function () {\n vm.readyToSubmit = false;\n });\n var accountCheckboxes = $element.find(\".table-select-controls input[type='checkbox']\");\n setTabIndex('-1', accountCheckboxes);\n var failureTooltips = $element.find('.enrollment-status .failure-icon');\n setTabIndex('-1', failureTooltips);\n });\n function getTransitionEvent() {\n var t,\n el = document.createElement('transitionElement');\n var transitions = {\n transition: 'transitionend',\n Otransition: 'oTransitionEnd',\n MozTransition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd'\n };\n for (t in transitions) {\n if (el.style[t] !== undefined) {\n return transitions[t];\n }\n }\n }\n}\npaperlessBillingController.$inject = ['$document', '$element', '$scope', '$timeout', '$window', '$filter'];\napp.controller('paperlessBillingController', paperlessBillingController);\nfunction payBillController($scope, $sce, $window, $element, $document, $rootScope, $timeout) {\n $('.info-tooltip-accout-summary').tooltip();\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover({\n trigger: 'manual',\n content: function content() {\n return $('.popover-inside').html();\n },\n html: true,\n animation: false\n }).on('mouseenter', function () {\n var _this = this;\n $(this).popover('show');\n $('.popover').on('mouseleave', function () {\n $(_this).popover('hide');\n });\n }).on('mouseleave', function () {\n var _this = this;\n $timeout(function () {\n if (!$('.popover:hover').length) {\n $(_this).popover('hide');\n }\n }, 300);\n });\n }\n $(window).scroll(function () {\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover('hide');\n }\n });\n var paybillMessage = $element.find('.i-message');\n if (paybillMessage) {\n paybillMessage.on('mouseenter', function () {\n if ($.isFunction($.fn.popover)) {\n $('[data-toggle=popover]').popover('show');\n }\n });\n }\n\n /**Use this script for ADA kewboard functionality**/\n $element.find('.info-tooltip-accout-summary').focusout(function () {\n var linkPopover = $element.find('.ns-popover-right-placement .ns-popover-tooltip a');\n linkPopover.hover();\n linkPopover.focusout(function () {\n var popoverRight = $element.find('.ns-popover-right-placement');\n popoverRight.css('display', 'none');\n });\n });\n $('body').on('click', '.tooltip-btn-pay-now', function () {\n $rootScope.dataLayer.push({\n event: 'tool-tip',\n 'data-category': 'response_code',\n 'data-label': 'Account Summary Important Message',\n 'data-action': $('.tooltip-btn-pay-now').attr('data-action')\n });\n });\n $scope.mouseOverTooltip = function () {\n $('.info-tooltip-accout-summary').tooltip();\n if (typeof window.orientation !== 'undefined') {\n $('body').css('cursor', 'pointer');\n }\n };\n $scope.func = function () {\n $scope.isTooltipOpen = false;\n $('.info-tooltip-accout-summary').trigger('click');\n };\n}\npayBillController.$inject = ['$scope', '$sce', '$window', '$element', '$document', '$rootScope', '$timeout'];\napp.controller('payBillController', payBillController);\napp.config(['nsPopoverProvider', function (nsPopoverProvider) {}]);\nfunction paymentBillingHistoryController($scope, $element, $window, $http, $timeout, $rootScope) {\n var vm = this;\n var filename = 'BillingAndPaymentHistoryExport';\n var dataExport;\n vm.focusOut = function () {\n $window.document.activeElement.blur();\n };\n vm.popModal = function (modalID) {\n angular.element(modalID).modal('show');\n };\n angular.element('document').ready(function () {\n if (navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1) {\n angular.element('.auth.billing-and-payment .more-info-more table.table').css({\n 'margin-top': '0'\n });\n }\n var paymentStatus = document.getElementsByClassName('paymentinfo');\n for (var i = 0; i < paymentStatus.length; i++) {\n $rootScope.dataLayer.push({\n paymentStatus: paymentStatus[i].getAttribute('payment-status'),\n event: 'payment_status_event'\n });\n }\n });\n\n /* PRINT FUNCTIONALITY */\n jQuery(document).bind('keyup keydown', function (e) {\n if (e.ctrlKey && e.keyCode == 80) {\n window.print();\n e.preventDefault();\n return false;\n }\n });\n var isIE = function isIE(userAgent) {\n userAgent = userAgent || navigator.userAgent;\n return userAgent.indexOf('MSIE ') > -1 || userAgent.indexOf('Trident/') > -1 || userAgent.indexOf('Edge/') > -1;\n };\n\n //If the user is Edge user we remove negative table margin\n if (navigator.userAgent.indexOf('Edge/') > -1) {\n angular.element('.more-info-more table').css('margin-top', '0px');\n }\n (function () {\n var afterPrint = function afterPrint() {\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n //tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\n $('.data-table-container').css('width', '100%');\n $('.data-table-container').css('max-width', '100%');\n //var widget = chart_selector.swidget();\n //widget.options.seriesSettings.line.applyAnimation = 0;\n //widget.options.seriesSettings.bar.applyAnimation = 1000;\n //chart_selector.swidget().refresh();\n }\n };\n if ($window.matchMedia) {\n var mediaQueryList = $window.matchMedia('print');\n mediaQueryList.addListener(function (mql) {\n if (!mql.matches) {\n afterPrint();\n }\n });\n }\n $window.onafterprint = afterPrint;\n var _print = $window.print;\n $window.print = function () {\n $scope.innerWidth = $window.innerWidth;\n var tableWidth = $scope.innerWidth * 0.9;\n //$(\".data-table-container\").width(tableWidth);\n //$(\".data-table-container\").css(\"max-width\", $scope.innerWidth + \"px !important\")\n\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n //tablet resolutions\n //$(\".data-table-container\").css(\"width\", \"960px\").css(\"max-width\", \"960px\");\n //var widget = chart_selector.swidget();\n //widget.options.seriesSettings.line.applyAnimation = 0;\n //widget.options.seriesSettings.bar.applyAnimation = 0;\n //chart_selector.swidget().refresh();\n _print();\n } else {\n _print();\n }\n };\n })();\n $scope.printPage = function () {\n $('.info-tooltip').tooltip('hide');\n $timeout(function () {\n $window.print();\n }, 250);\n };\n /*END PRINT FUNCTIONALITY */\n\n angular.element('document').ready(function () {\n $('tr.clickable').each(function (index) {\n var dataTarget = $(this).data('target');\n dataTarget = dataTarget.replace('#tr', '');\n dataTarget = parseInt(dataTarget);\n if (dataTarget % 2 == 0) {\n $(this).addClass('white-row');\n } else {\n $(this).addClass('blue-row');\n }\n });\n angular.element('tr.clickable:odd').css('background-color', 'white');\n angular.element('tr .collapse').on('show.bs.collapse', function () {\n angular.element('tr .collapse').not($(this)).collapse('hide');\n var tr = $(this).parent().parent();\n tr.show();\n $rootScope.dataLayer.push({\n 'data-category': 'billing_payment_history',\n 'data-action': 'Expand',\n 'data-label': 'Billing & Payment History',\n event: 'payment-billing-history-accordion-change'\n });\n });\n angular.element('tr .collapse').on('hidden.bs.collapse', function () {\n var tr = $(this).parent().parent();\n tr.hide();\n $rootScope.dataLayer.push({\n 'data-category': 'billing_payment_history',\n 'data-action': 'Contract',\n 'data-label': 'Billing & Payment History',\n event: 'payment-billing-history-accordion-change'\n });\n });\n $http({\n method: 'POST',\n url: '/api/BillingAndPaymentHistory/GetExportData',\n data: '',\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data, status, headers, config) {\n dataExport = data.data;\n //saveTextAs(data, filename + \".csv\");\n }).catch(function (data, status, headers, config) {\n // handle error\n });\n });\n vm.openModal = function (id, event) {\n event.stopPropagation();\n event.preventDefault();\n angular.element('#' + id).modal('show');\n };\n $scope.exportData = function () {\n saveTextAs(dataExport, filename + '.csv');\n };\n $scope.changeDateFormat = function (billDate) {\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\n };\n function submitPostCall(url, params) {\n var form = document.createElement('form');\n form.setAttribute('method', 'post');\n form.setAttribute('action', url);\n for (var element = 0; element < params.length; element++) {\n var temp = params[element];\n for (var i in temp) {\n if (temp.hasOwnProperty(i)) {\n var input = document.createElement('input');\n input.type = 'hidden';\n input.name = i;\n input.value = temp[i];\n form.appendChild(input);\n }\n }\n }\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n }\n}\npaymentBillingHistoryController.$inject = ['$scope', '$element', '$window', '$http', '$timeout', '$rootScope'];\napp.controller('paymentBillingHistoryController', paymentBillingHistoryController);\nfunction paymentBillingHistoryControllerRefactor($scope, $element, $window, $http, $timeout, $rootScope) {\n var vm = this;\n vm.historySelected = -1;\n angular.element('document').ready(function () {\n $('[data-toggle=\"tooltip\"]').tooltip();\n //angular.element(\".auth .auth-body .plan-charges .rich-text-editor table:last-child.table thead\").css(\"visibility\",\"hidden\");\n angular.element('tr.clickable:odd').css('background-color', 'white');\n angular.element('tr .collapse').on('show.bs.collapse', function () {\n angular.element('tr .collapse').not($(this)).collapse('hide');\n var tr = $(this).parent().parent();\n tr.show();\n $rootScope.dataLayer.push({\n 'data-category': 'billing_payment_history',\n 'data-action': 'Expand',\n 'data-label': 'Billing & Payment History'\n });\n });\n angular.element('tr .collapse').on('hidden.bs.collapse', function () {\n var tr = $(this).parent().parent();\n tr.hide();\n $rootScope.dataLayer.push({\n 'data-category': 'billing_payment_history',\n 'data-action': 'Contract',\n 'data-label': 'Billing & Payment History'\n });\n });\n });\n vm.openModal = function (id, event) {\n event.stopPropagation();\n event.preventDefault();\n angular.element('#' + id).modal('show');\n };\n}\npaymentBillingHistoryControllerRefactor.$inject = ['$scope', '$element', '$window', '$http', '$timeout', '$rootScope'];\napp.controller('paymentBillingHistoryControllerRefactor', paymentBillingHistoryControllerRefactor);\nfunction paymentOptionsController($element, $scope, $timeout, $window) {\n $timeout(function () {\n var destionationUrl = $element.attr(\"data-url\");\n var iframe = $element.find(\"#paymentIframe\");\n iframe.on('load', function () {\n $window.location.href = destionationUrl;\n });\n });\n}\npaymentOptionsController.$inject = ['$element', '$scope', '$timeout', '$window'];\napp.controller('paymentOptionsController', paymentOptionsController);\n/* eslint-disable no-use-before-define */\napp.controller('PBilling', PBilling);\nfunction PBilling() {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n // vm.PB_Description = 'Easily enroll all of your accounts.';\n vm.PB_Description = undefined;\n vm.PB_LinkText = undefined;\n vm.PB_ClickEnroll = undefined;\n vm.PB_BigPadding = false;\n vm.PB_ToggleComponent = true;\n\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n function load() {}\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n\n // init();\n}\n/*\r\n * Angular controller\r\n * Pick your due date Controller\r\n *\r\n */\n\nfunction pickYourDueDateController($scope, $templateCache, $controller, $element, $window, $http, $timeout, $compile, $filter, $q) {\n $scope.formCtrl = {};\n $scope.formCtrl.forms = {};\n $scope.formCtrl.forms.my_form = {};\n $scope.selectNumber = function (number) {\n var elements = document.getElementsByClassName('pydd__calendar-number active');\n while (elements.length > 0) {\n elements[0].setAttribute(\"aria-selected\", \"false\");\n elements[0].classList.remove('active');\n }\n var mySelectedNumber = angular.element(document.querySelector('.pydd__calendar-date-' + number));\n var pyddInput = angular.element(document.querySelector('.pydd__hidden-input'));\n var classList = 'active pydd__calendar-number pydd__calendar-date-' + number;\n mySelectedNumber.attr('class', classList);\n mySelectedNumber.attr('aria-selected', 'true');\n pyddInput.attr('value', number);\n $scope.formCtrl.forms.my_form.dueDate = number;\n };\n $scope.goTo = function (link) {\n $window.location.href = link;\n };\n $scope.checkForm = function (formData) {\n var dataObject = {};\n dataObject['dueDate'] = formData.my_form.dueDate.toString();\n dataObject['email'] = formData.my_form.email;\n sendDueDateAndEmailService(dataObject).then(function (response) {\n if (response.Success === 'True' || response.Success === true) {\n $scope.enrollSuccess = true;\n var pageTitle = angular.element(document.getElementsByClassName(\"header-1\"))[0].innerHTML.trim();\n var pageSubTitle = angular.element(document.getElementsByClassName(\"intro-txt\"))[0].innerHTML.trim();\n var label = pageTitle + ' | Select Your Date';\n var action = document.querySelector(\".pydd__form .duke-submit-button\").innerHTML.trim();\n $scope.dataLayerPush('pydd', label, action, pageTitle, 'Select Your Date');\n $window.scrollTo(0, 0);\n } else {\n window.location.href = response.RedirectUrl;\n }\n },\n // Error\n function (response) {\n $scope.enrollFailure = true;\n });\n };\n $scope.displayModal = function () {\n angular.element('#cancel-modal').modal('show');\n };\n $scope.dataLayerPush = function () {\n var category = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var title = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n var subtitle = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var ctaText = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '';\n var data = {\n 'data-category': category,\n 'data-label': label,\n 'data-action': action,\n 'event': 'event-click'\n };\n var vpv = {\n 'event': 'send-VPV',\n 'vpv-name': \"/vpv/\".concat(title, \"/\").concat(subtitle, \"/\").concat(action, \"/success\")\n };\n if (dataLayer) {\n dataLayer.push(data);\n dataLayer.push(vpv);\n }\n };\n var sendDueDateAndEmailService = function sendDueDateAndEmailService(dataObject) {\n var deferred = $q.defer();\n var dataObj = dataObject || {};\n $http({\n method: 'POST',\n url: '/api/PickYourDueDate/EnrollAccount',\n data: dataObj,\n headers: {\n 'Content-Type': 'application/json'\n },\n timeout: deferred.promise\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (error) {\n deferred.reject(error.data);\n });\n return deferred.promise;\n };\n}\npickYourDueDateController.$inject = ['$scope', '$templateCache', '$controller', '$element', '$window', '$http', '$timeout', '$compile', '$filter', '$q'];\napp.controller('pickYourDueDateController', pickYourDueDateController);\n/*\r\n * Angular controller\r\n * ForgotPasswordController manage a carousel with slides component\r\n * \r\n */\n\nfunction profileSettingsController($scope, $window, $rootScope, $templateCache) {\n var vm = this;\n var profileUpdated = angular.element('#profileUpdated').val();\n var dataLayerPushSuccessfulUpdate = function dataLayerPushSuccessfulUpdate(label) {\n var formattedLabel = label.toLowerCase().split(' ').join('-');\n var data = {\n 'data-category': 'manage_profile',\n 'data-label': 'change-' + formattedLabel,\n 'data-action': 'successful-confirmation',\n 'event': 'event-click'\n };\n if (dataLayer) {\n dataLayer.push(data);\n }\n };\n if (profileUpdated) {\n dataLayerPushSuccessfulUpdate(profileUpdated);\n }\n vm.dataLayerPush = function (label) {\n var data = {\n 'data-category': 'manage_profile',\n 'data-label': label,\n 'data-action': 'edit',\n 'event': 'event-click'\n };\n if (dataLayer) {\n dataLayer.push(data);\n }\n };\n vm.goTo = function (href) {\n $window.open(href, '_parent');\n };\n}\n;\nprofileSettingsController.$inject = ['$scope', '$window', '$rootScope', '$templateCache', '$controller'];\napp.controller('profileSettingsController', profileSettingsController);\n/*\r\n * Angular controller\r\n * RequestTemporaryPasswordController\r\n * \r\n */\n\nfunction ReportAnOutageController($scope, $window, $rootScope, $element, $location, $attrs, $timeout) {\n var vm = this;\n var showMoreBtn;\n vm.searchAccount = '';\n vm.userChoice = null;\n vm.selectedRow = null;\n vm.value = null;\n vm.selected = null;\n vm.limitRows = 5;\n vm.account = null;\n vm.accounts = [];\n vm.available = false;\n vm.isShowMoreCollapsed = true;\n vm.setClickedRow = function ($index, $event, account) {\n vm.selectedRow = $index;\n var radio = $($event.currentTarget).find(\"input[type='radio']\");\n radio.prop(\"checked\", true);\n vm.available = true;\n vm.hiddenattrs = account.source;\n vm.selectedAcct = account;\n };\n vm.setClickedRadio = function (account, $event) {\n vm.selected = account;\n vm.selectedAcct = account;\n $timeout(function () {\n angular.element('.checked').trigger('click');\n }, 1);\n vm.available = true;\n var radio = $($event.currentTarget).find(\"input[type='radio']\");\n radio.prop(\"checked\", true);\n vm.limitRows = 4;\n vm.selected.isDefault = true;\n vm.hiddenattrs = account.source;\n };\n\n // TODO: Deprecated. Confirm it's not used in Sitecore views before removing.\n vm.checkDups = function (item) {\n if (vm.selected == null) {\n return true;\n }\n if (item.id == vm.selected.id) {\n return false;\n } else {\n return true;\n }\n };\n var $this = vm,\n $el = $element,\n $moreInfoPane = null;\n vm.showAllMsg = \"\";\n vm.showLessMsg = \"\";\n vm.currentShowMsg = \"\";\n vm.relativeURL = $window.location.pathname;\n vm.setShowLabels = function (more, less) {\n vm.showAllMsg = more;\n vm.showLessMsg = less;\n vm.currentShowMsg = vm.showAllMsg;\n vm.showIcon = \"caret-arrow-down\";\n };\n function toggleShowAll(event) {\n // Catch panel on function call. Attempting to get it outside will fail due to element depending on ngIf.\n $moreInfoPane = angular.element($el.find('.more-info-more'));\n showMoreBtn = angular.element(event.currentTarget);\n vm.isShowMoreCollapsed = !vm.isShowMoreCollapsed;\n if (vm.isShowMoreCollapsed) {\n vm.currentShowMsg = vm.showAllMsg;\n vm.showIcon = \"caret-arrow-down\";\n showMoreBtn.attr('aria-expanded', 'false');\n } else {\n vm.currentShowMsg = vm.showLessMsg;\n vm.showIcon = \"caret-arrow-up\";\n showMoreBtn.attr('aria-expanded', 'true');\n //vm.shownAccounts = vm.filteredAccounts.length;\n }\n $moreInfoPane.slideToggle();\n\n // Remove button (no toggle) if less than 11 accounts\n if (vm.accounts.length < 11) {\n angular.element('button.more-info-label').remove();\n }\n }\n vm.toggleShowAll = toggleShowAll;\n}\n;\nReportAnOutageController.$inject = ['$scope', '$window', '$rootScope', '$element', '$location', '$attrs', '$timeout'];\napp.controller('ReportAnOutageController', ReportAnOutageController);\n/*\r\n * sign-in-auth.js\r\n * Javascript file to manage all interaction with Sign in for AUthenticated.\r\n */\n\nfunction authSignInController($scope, $window, $element, $cookies, $http, $rootScope, dataAttribution) {\n $element.find('.info-tooltip').tooltip();\n\n //Relative Url for Analytics\n $scope.relativeURL = $window.location.pathname;\n $scope.attributionPush = function (category, action, label, event, link, $event) {\n $event.preventDefault();\n dataAttribution.pushData(category, action, label, event);\n window.location.href = link;\n };\n $scope.attributionSubmitForm = function (category, action, label, event, formId, $event) {\n $event.preventDefault();\n dataAttribution.pushData(category, action, label, event);\n document.getElementById(formId).submit();\n };\n $scope.signInAccordion = function (event) {\n var menuItem = angular.element(event.currentTarget);\n menuItem.toggleClass('active');\n var slideMenu = menuItem.parent().parent().next();\n slideMenu.toggleClass('active');\n event.preventDefault();\n };\n $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';\n $scope.unavailable = false;\n $scope.noMatch = false;\n $scope.loggedIn = false;\n $scope.interceptActive = true;\n\n /*\r\n * Form Validation\r\n */\n\n $scope.submitLogInForm = function ($event, theForm) {\n // MERGE: Not in A. Might not be needed.\n // theForm.userId.$setTouched();\n // theForm.userPassword.$setTouched();\n\n if (theForm.$invalid) {\n $event.preventDefault();\n angular.forEach(theForm.$error, function (field) {\n angular.forEach(field, function (errorField) {\n errorField.$setTouched();\n });\n });\n return false;\n }\n if (theForm.$valid) {\n $rootScope.dataLayer.push({\n signInStatus: 'authenticated',\n event: 'signInSubmit'\n });\n var api_url = '/api/Login/CreateCookie';\n var remember_data;\n if ($element.find(\"input[name='loginRemember']\").is(':checked')) {\n remember_data = {\n rememberMe: true,\n username: $scope.user.userId\n };\n } else {\n remember_data = {\n rememberMe: false\n };\n }\n $http({\n method: 'POST',\n url: api_url,\n data: remember_data,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data) {\n var form = $event.currentTarget;\n form.submit();\n }).catch(function (data) {});\n $event.preventDefault();\n }\n };\n $scope.init = function () {\n if ($element.hasClass('logged-in')) {\n $scope.loggedIn = true;\n }\n };\n $scope.init();\n}\nauthSignInController.$inject = ['$scope', '$window', '$element', '$cookies', '$http', '$rootScope', 'dataAttribution'];\napp.controller('authSignInController', authSignInController);\n/*\r\n * tertiaryNav.js\r\n * Javascript file to manage all interaction with the Tertiary Navigation elements.\r\n */\n\napp.factory('accountToggleFactory', function () {\n var currentAccountClick = 0;\n\n // public API\n var obj = {};\n obj.getCurrentAccountClick = function () {\n return currentAccountClick;\n };\n obj.setCurrentAccountClick = function () {\n currentAccountClick++;\n };\n return obj;\n});\nfunction TertiaryNavAuthCtrl($scope, $rootScope, $window, $cookies, $timeout, $http, $element, accountToggleFactory, myAccountFactory, $log, $q) {\n $scope.isActive = false;\n $scope.disableBack = false;\n $scope.isTNavReady = false;\n $scope.getTNavFailed = false;\n var bodyHeight = angular.element('body').height();\n var body = angular.element('body');\n $scope.toggleTertiary = function () {\n angular.element('#tertiary').collapse('toggle');\n angular.element('#tertiary-wrapper').removeClass('sticky-content');\n $rootScope.accountSelectorOpen = false;\n $scope.isActive = !$scope.isActive;\n if ($scope.isActive) {\n body.addClass('in-body');\n } else {\n body.removeClass('in-body');\n }\n accountToggleFactory.setCurrentAccountClick();\n $scope.disableBack = !$scope.disableBack;\n if (window.innerWidth < 768) {\n angular.element('.disable-bg').css('height', \"\".concat(bodyHeight, \"px\"));\n var tertWrapperToTopOfScreenHeight = angular.element('#tertiary-wrapper').position().top + angular.element('#tertiary-wrapper').outerHeight(true);\n var viewPortHeight = window.innerHeight;\n var tertiaryNavSubmenu = viewPortHeight - tertWrapperToTopOfScreenHeight;\n if ($scope.isActive) {\n angular.element('.tertiary-nav-submenu .container').css('height', \"\".concat(tertiaryNavSubmenu, \"px\"));\n }\n }\n };\n $window.onresize = function () {\n if (window.innerWidth < 768) {\n var tertWrapperToTopOfScreenHeight = angular.element('#tertiary-wrapper').position().top + angular.element('#tertiary-wrapper').outerHeight(true);\n var viewPortHeight = window.innerHeight;\n var tertiaryNavSubmenu = viewPortHeight - tertWrapperToTopOfScreenHeight;\n angular.element('.tertiary-nav-submenu .container').css('height', \"\".concat(tertiaryNavSubmenu, \"px\"));\n }\n };\n $('#carousel-example-generic').carousel({\n interval: false,\n wrap: false\n });\n var checkitem = function checkitem() {\n var $this;\n $this = $('#carousel-example-generic');\n if ($('#carousel-example-generic .carousel-inner .item:first').hasClass('active')) {\n $('.left').hide();\n $('.right').show();\n } else if ($('#carousel-example-generic .carousel-inner .item:last').hasClass('active')) {\n $('.right').hide();\n $('.left').show();\n } else {\n $this.children('.carousel-control').show();\n }\n };\n checkitem();\n var carouselContainer;\n var tabletColumns;\n var firstCol;\n var viewBillElem;\n var switchElem;\n var iColumns;\n var sliderItem;\n var listItems;\n $scope.$on('reorder_tertiary_nav', function (e) {\n e.stopPropagation();\n carouselContainer = angular.element('.carousel-inner');\n tabletColumns = angular.element('.tnav-tablet');\n listItems = tabletColumns.first().find('li');\n for (iColumns = 0; iColumns < tabletColumns.length; iColumns++) {\n if (iColumns % 2 === 0) {\n sliderItem = new angular.element('
');\n sliderItem.appendTo(carouselContainer);\n if (iColumns === 0) {\n sliderItem.addClass('active');\n }\n }\n angular.element(tabletColumns[iColumns]).appendTo(sliderItem);\n }\n checkitem();\n if ($scope.model.ViewBillTertiary && $scope.model.ViewBillTertiary.IndexInList != 0) {\n // Desktop and Mobile only\n listItems = angular.element('.tnav-desk').first().find('li');\n viewBillElem = listItems[0];\n switchElem = listItems[$scope.model.ViewBillTertiary.IndexInList];\n angular.element(switchElem).after(viewBillElem);\n\n // Now switch links for Tablet\n listItems = tabletColumns.first().find('li');\n viewBillElem = listItems[0];\n switchElem = listItems[$scope.model.ViewBillTertiary.IndexInList];\n angular.element(switchElem).after(viewBillElem);\n }\n\n // TODO: COULD need to be in a try-catch block\n $scope.isTNavReady = true;\n });\n $('#carousel-example-generic').on('slid.bs.carousel', '', checkitem);\n $scope.getTNavData = function (stringId) {\n myAccountFactory.getJsonParams('/api/AuthTertiaryNav/GetTertiaryNavData', {\n stringId: stringId\n }).then(serviceSuccess).catch(serviceError);\n };\n var clearCacheService = function clearCacheService() {\n var deferred = $q.defer();\n $http({\n method: 'POST',\n url: '/api/AuthTertiaryNav/ClearGetUserCacheAndRedirectToPreferenceCenter',\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data) {\n deferred.resolve(data.data);\n }).catch(function (data) {\n deferred.reject(data.data);\n });\n return deferred.promise;\n };\n $scope.clearCache = function (url) {\n clearCacheService().then(function (response) {\n $window.location.href = url;\n },\n // Error\n function (response) {\n console.log(response);\n });\n };\n function serviceSuccess(data) {\n $scope.model = data.data;\n }\n function serviceError(data) {\n $log('Could not load Tertiary Nav Menu.');\n $scope.getTNavFailed = true;\n }\n angular.element(document).ready(function () {\n angular.element($window).bind('scroll', function () {\n var width = angular.element(window).width();\n if (width >= 768) {\n $scope.isActive = false;\n window.setTimeout(function () {\n angular.element('#tertiary').collapse('hide');\n }, 100);\n $scope.$apply();\n }\n $scope.disableBack = true;\n $scope.disableBack = !$scope.disableBack;\n angular.element('.disable-bg').css('height', \"\".concat(bodyHeight, \"px\"));\n });\n $scope.carouselItems = angular.element('#carousel-example-generic');\n var prevSlide = function prevSlide(event) {\n if (event.keyCode == 32) {\n $scope.carouselItems.carousel('prev');\n event.preventDefault();\n }\n };\n var nextSlide = function nextSlide(event) {\n if (event.keyCode == 32) {\n $scope.carouselItems.carousel('next');\n event.preventDefault();\n }\n };\n });\n}\nTertiaryNavAuthCtrl.$inject = ['$scope', '$rootScope', '$window', '$cookies', '$timeout', '$http', '$element', 'accountToggleFactory', 'myAccountFactory', '$log', '$q'];\napp.controller('TertiaryNavAuthCtrl', TertiaryNavAuthCtrl);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction usageAnalysisController($scope, $element, $window, $http, $timeout, $rootScope) {\n // Line for testing, erasing after test is done\n window.$rootScope = $rootScope;\n $scope.newCalendar = true;\n var api_url_table = '/api/UsageAnalysis/GetBillingInformation';\n var api_url_graph = '/api/UsageAnalysis/GetUsageChartData';\n var export_url = '/api/UsageAnalysis/ExportData';\n var grexport_url = '/api/UsageAnalysis/DownloadMyData';\n var chart_selector = $element.find('.duke-chart');\n var calendar = $element.find('.testCalendar');\n var graphText = '';\n var changedGraph = false;\n var newPeriodValue = '';\n var dropdownInteraction = 'Meter';\n var meterLoaded = false;\n var exportData;\n var exportFilename;\n var grExportData;\n var grExportFilename;\n var DailyAvgWeekException = false;\n $scope.grexport = false;\n $scope.usage_table = [];\n $scope.loaded = false;\n $scope.grLoaded = false;\n $scope.grError = false;\n $scope.table_type = '';\n $scope.forms = {};\n $scope.error_message_default = 'This information is currently unavailable. Please check again later.';\n $scope.error_message = $scope.error_message_default;\n $scope.errorPanel = false;\n $scope.analytics = {\n chartType: 'Smart Meter'\n };\n $scope.period_items = [];\n $scope.graph_items = [];\n $scope.chart = {};\n $scope.openModal = function (id) {\n $(\"#\".concat(id)).modal('show');\n };\n $scope.start_date = '';\n $scope.original_end_date = $scope.end_date;\n $scope.current_date = '';\n $scope.meter_certified = false;\n $scope.maxHeightChanged = false;\n $scope.showChart = true;\n $scope.dropDownChartItems = JSON.parse(angular.element(document.querySelector('#usageAnalysisMeter')).attr('items'))[0];\n var isHourly = false;\n var isDayPeriod = false;\n var yesterday = new Date();\n var userAgent;\n\n // Flag to see if last dropdown change was for hourly+day\n var hourlyDayTriggered = false;\n var formatedDate = function formatedDate(recivedDate) {\n var dd = recivedDate.getDate();\n dd = dd < 10 ? \"0\".concat(dd) : dd;\n var mm = recivedDate.getMonth() + 1;\n mm = mm < 10 ? \"0\".concat(mm) : mm;\n var aa = \"\".concat(mm, \" / \").concat(dd, \" / \").concat(recivedDate.getFullYear());\n // console.log(\"formated date is \",aa);\n\n return \"\".concat(mm, \" / \").concat(dd, \" / \").concat(recivedDate.getFullYear());\n };\n var formatedDateNoSpaces = function formatedDateNoSpaces(recivedDate) {\n var dd = recivedDate.getDate();\n dd = dd < 10 ? \"0\".concat(dd) : dd;\n var mm = recivedDate.getMonth() + 1;\n mm = mm < 10 ? \"0\".concat(mm) : mm;\n var aa = \"\".concat(mm, \"/\").concat(dd, \"/\").concat(recivedDate.getFullYear());\n // console.log(\"formated date is \",aa);\n\n return \"\".concat(mm, \"/\").concat(dd, \"/\").concat(recivedDate.getFullYear());\n };\n var today = new Date();\n today = formatedDate(today);\n var todayNoSpaces = new Date();\n todayNoSpaces = formatedDateNoSpaces(todayNoSpaces);\n\n /* PRINT FUNCTIONALITY */\n jQuery(document).bind('keyup keydown', function (e) {\n if (e.ctrlKey && e.keyCode == 80 && !(userAgent.indexOf('Edge/') > -1)) {\n window.print();\n e.preventDefault();\n return false;\n }\n });\n var isIE = function isIE(userAgent) {\n userAgent = userAgent || navigator.userAgent;\n return userAgent.indexOf('MSIE ') > -1 || userAgent.indexOf('Trident/') > -1 || userAgent.indexOf('Edge/') > -1;\n };\n var detectBrowser = function () {\n userAgent = navigator.userAgent;\n var printClass = '';\n if (/Google Inc/.test(navigator.vendor)) printClass = 'chrome-print';else if (/Edge/.test(navigator.userAgent)) printClass = 'edge-print';else if (/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)) printClass = 'safari-print';else if (/Trident/.test(navigator.userAgent)) printClass = 'ie-print';else if (/Firefox/.test(navigator.userAgent)) printClass = 'firefox-print';\n if (printClass != '') {\n angular.element('body').addClass(printClass);\n }\n }(function () {\n var afterPrint = function afterPrint() {\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n // tablet resolutions ($window.innerWidth > 320 && $window.innerWidth <= 768)\n $('.duke-chart-container').css('width', '100%');\n $('.duke-chart-container').css('max-width', '100%');\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 1000;\n chart_selector.swidget().refresh();\n }\n };\n if ($window.matchMedia) {\n var mediaQueryList = $window.matchMedia('print');\n mediaQueryList.addListener(function (mql) {\n if (!mql.matches) {\n afterPrint();\n }\n });\n }\n $window.onafterprint = afterPrint;\n var _print = $window.print;\n $window.print = function () {\n $scope.innerWidth = $window.innerWidth;\n $('.duke-chart-container').css('width', '100%').css('max-width', '100%');\n if ($scope.innerWidth > 320 && $scope.innerWidth <= 768 || isIE && $scope.innerWidth > 1200) {\n // tablet resolutions\n $('.duke-chart-container').css('width', '100%').css('max-width', '100%');\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 0;\n chart_selector.swidget().refresh();\n setTimeout(function () {\n _print();\n }, 500);\n } else {\n _print();\n }\n angular.element('.print-button').blur();\n };\n }());\n $scope.printPage = function () {\n pushAnalytics('Print Page');\n $window.print();\n };\n /* END PRINT FUNCTIONALITY */\n\n $scope.exportData = function () {\n pushAnalytics('Export Data');\n saveTextAs(exportData, \"\".concat(exportFilename, \".csv\"));\n angular.element('.export-button').blur();\n };\n var getExportData = function getExportData() {\n var dateValue;\n if ($scope.newCalendar) {\n dateValue = formatedDate($scope.forms.usageAnalysis.data.date) ? formatedDate($scope.forms.usageAnalysis.data.date) : today;\n } else {\n dateValue = $scope.forms.usageAnalysis.date.$viewValue ? $scope.forms.usageAnalysis.date.$viewValue : today;\n }\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: dateValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText\n };\n $http({\n method: 'POST',\n url: export_url,\n data: chartObj,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data, status, headers, config) {\n if (data) {\n exportFilename = 'EnergyUsageExport';\n exportData = data.data;\n // saveTextAs(data, filename + \".csv\");\n }\n }).catch(function (data, status, headers, config) {\n // handle error\n });\n };\n $scope.exportXML = function () {\n pushAnalytics('Download My Data XML');\n saveTextAs(grExportData, \"\".concat(grExportFilename, \".xml\"));\n angular.element('.duke-gr-btn').blur();\n };\n var getExportXML = function getExportXML() {\n var grChartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\n };\n $http({\n method: 'POST',\n url: grexport_url,\n data: grChartObj,\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (data, status, headers, config) {\n if (data.data != \"\" && data.data != null && data.data != \"Unexpected Failure\") {\n grExportFilename = 'DownloadMyData';\n grExportData = data.data;\n $scope.grLoaded = true;\n } else {\n $scope.grError = true;\n }\n }).catch(function (data, status, headers, config) {\n // handle error\n });\n };\n var pushAnalytics = function pushAnalytics(dataLabel) {\n var dataActionTag = \"\".concat($scope.meterTag, \" - \").concat(angular.element('div#graph > button > span').text(), \" - \").concat(angular.element('.shared-calendar > div.date-area > input').val(), \" - \").concat(angular.element('div#period > button > span').text());\n var eventTag = 'usage-analysis-export-data';\n if (dataLabel == 'Print Page') eventTag = 'usage-analysis-print-page';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-action': dataActionTag,\n 'data-label': dataLabel,\n event: eventTag\n });\n };\n var updateTableX = function updateTableX(response) {\n if (response.data.Status == 'OK') {\n $scope.usage_table = response.data.Data;\n } else if (response.data.Status == 'ERROR') {\n $scope.error_message = response.data.ErrorMsg;\n getErrorPanel();\n }\n };\n var updateChartX = function updateChartX(response) {\n if ($scope.toPreviousDate && !$scope.newCalendar) {\n angular.element('.shared-calendar > div.date-area > input')[0].value = $scope.forms.usageAnalysis.date.$viewValue;\n }\n enableSelectors();\n // if(!(isHourly && isDayPeriod))\n getExportData();\n if ($scope.grexport === true) {\n getExportXML();\n }\n if (response.data.Status == 'OK') {\n // $scope.analytics = { chartType: \"Smart Meter\" };\n // $scope.analytics.chartType = $scope.analytics.chartType + response.data.DataLabelInfo;\n // pushAnalytics($scope.analytics.chartType);\n\n if (DailyAvgWeekException) response.data.temperatures = [];\n getDataGraph(response.data);\n } else if (response.data.Status == 'ERROR') {\n $scope.error_message = response.data.ErrorMsg;\n getErrorPanel();\n }\n };\n var getDataGraph = function getDataGraph(data) {\n if (data.meterData.Electric && data.meterData.Gas) {\n $scope.table_type = 'all';\n getAllMeter();\n return;\n }\n if (data.meterData.Electric) {\n $scope.table_type = 'electric';\n getElectricMeter(data);\n return;\n }\n if (data.meterData.Gas) {\n $scope.table_type = 'gas';\n getGasMeter(data);\n return;\n }\n if (!data.meterData.Electric && !data.meterData.Gas) {\n $scope.loaded = true;\n getErrorPanel();\n }\n };\n var getAllMeter = function getAllMeter() {\n getErrorPanel();\n };\n var getElectricMeter = function getElectricMeter(newData) {\n var electricdata = {\n dataSeries: [{\n axisY: 0,\n collectionAlias: 'ELECTRIC',\n data: newData.meterData.Electric,\n color: '#54B848'\n }, {\n seriesType: 'line',\n axisY: 2,\n collectionAlias: 'AVERAGE',\n color: 'gray'\n }, {\n seriesType: 'line',\n axisY: 1,\n collectionAlias: 'TEMPERATURE',\n data: newData.temperatures,\n color: 'green',\n zIndex: 9\n }],\n labels: newData.labels,\n average: newData.average,\n chartTitle: newData.chartTitle,\n chartMessage: newData.chartMessage,\n chartFooter: newData.chartFooter,\n leftText: newData.unitOfMeasure1,\n rightText: newData.unitOfMeasure2\n };\n if (!newData.temperatures || newData.temperatures && !(newData.temperatures.length > 0)) {\n var index = _.indexOf(electricdata.dataSeries, _.find(electricdata.dataSeries, 'collectionAlias', 'TEMPERATURE'));\n electricdata.dataSeries.splice(index, 1);\n }\n updateChart(electricdata);\n };\n var getGasMeter = function getGasMeter(newData) {\n var gasdata = {\n dataSeries: [{\n axisY: 0,\n collectionAlias: 'GAS',\n data: newData.meterData.Gas,\n color: '#52B0F0'\n }, {\n seriesType: 'line',\n axisY: 2,\n collectionAlias: 'AVERAGE',\n color: 'gray'\n }, {\n seriesType: 'line',\n axisY: 1,\n collectionAlias: 'TEMPERATURE',\n data: newData.temperatures,\n color: 'green',\n zIndex: 9\n }],\n labels: newData.labels,\n average: newData.average,\n chartTitle: newData.chartTitle,\n chartMessage: newData.chartMessage,\n chartFooter: newData.chartFooter,\n leftText: newData.unitOfMeasure1,\n rightText: newData.unitOfMeasure2\n };\n if (!newData.temperatures) {\n var index = _.indexOf(gasdata.dataSeries, _.find(gasdata.dataSeries, 'collectionAlias', 'TEMPERATURE'));\n gasdata.dataSeries.splice(index, 1);\n }\n updateChart(gasdata);\n };\n var getErrorPanel = function getErrorPanel() {\n var data_label_error = \"Error: \".concat($scope.error_message);\n enableSelectors();\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis_error',\n 'data-label': 'Usage Analysis',\n 'data-action': data_label_error,\n event: 'usage-analysis-error-message'\n });\n if ($scope.error_message == '' || !$scope.error_message) {\n $scope.error_message = $scope.error_message_default;\n }\n $scope.errorPanel = true;\n };\n var updateChart = function updateChart(newData) {\n var timeOut = 600;\n usageData.axisX.categoricalValues = newData.labels;\n usageData.axisY[0].plotLines[0].start = newData.average;\n usageData.axisY[0].title.text = newData.leftText;\n usageData.axisY[1].title.text = newData.rightText;\n usageData.dataSeries = newData.dataSeries;\n $scope.chart.title = newData.chartTitle;\n $scope.chart.message = newData.chartMessage;\n $scope.chart.footer = newData.chartFooter;\n var widget = chart_selector.swidget();\n if ($scope.errorPanel) {\n $timeout(function () {\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.shieldChart(usageData);\n }, timeOut);\n } else {\n $timeout(function () {\n if (widget) {\n $scope.loaded = true;\n $scope.$apply();\n widget.refresh(usageData);\n } else {\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.shieldChart(usageData);\n }\n var testFunction = function testFunction() {\n chart_selector.swidget().refresh();\n $scope.loaded = true;\n $scope.$apply();\n chart_selector.swidget().refresh();\n };\n $timeout(function () {\n var widget = chart_selector.swidget();\n widget.options.seriesSettings.line.applyAnimation = 0;\n widget.options.seriesSettings.bar.applyAnimation = 1000;\n testFunction();\n }, 600);\n }, timeOut);\n }\n };\n var usageData = {\n chartLegend: {\n enable: false\n },\n theme: 'bootstrap',\n exportOptions: {\n image: true,\n print: true\n },\n events: {\n legendSeriesClick: function legendSeriesClick(e) {\n // stop the series item click event, so that\n // user clicks do not toggle visibility of the serie\n e.preventDefault();\n }\n },\n tooltipSettings: {\n chartBound: true\n },\n primaryHeader: {\n text: ''\n },\n axisX: {\n categoricalValues: []\n },\n axisY: [{\n plotLines: [{\n start: 100,\n zIndex: 5,\n drawWidth: 2,\n drawColor: 'gray',\n label: {\n style: {\n color: 'gray'\n }\n }\n }],\n title: {\n enable: false,\n text: 'kWh',\n enale: false,\n ontWeight: 'bold',\n style: {\n color: '#696969',\n fontSize: '14px'\n }\n }\n }, {\n title: {\n enable: false,\n text: 'CCF',\n textAngle: 270,\n fontWeight: 'bold',\n style: {\n color: '#696969',\n fontSize: '14px'\n }\n },\n swapLocation: true\n }, {\n axisTickText: {\n enabled: false\n },\n min: 0\n }, {\n axisTickText: {\n enabled: false\n },\n min: 0\n }],\n seriesSettings: {\n line: {\n dataPointText: {\n enabled: true,\n borderColor: 'green',\n borderWidth: 1,\n y: 10,\n borderRadius: 500,\n padding: 5,\n backgroundColor: '#FFF',\n style: 'font-size: 11px'\n },\n applyAnimation: {\n duration: 0\n }\n },\n bar: {\n applyAnimation: {\n duration: 1000\n }\n }\n },\n plotLines: [{\n start: 100,\n drawWidth: 2,\n drawColor: '#C90515',\n zIndex: 2\n }]\n };\n var updateGraphFilters = function updateGraphFilters(item) {\n $scope.graph_items = item.graphItems;\n };\n $scope.updatePeriodFilters = function (item) {\n updatePeriodFilters(item);\n };\n $scope.updateGraphFilters = function (item) {\n updateGraphFilters(item);\n };\n var findSelected = function findSelected(items) {\n if (_.find(items, {\n selected: true\n })) {\n return _.find(items, {\n selected: true\n });\n }\n items[0].selected = true;\n return items[0];\n };\n var disableSelectors = function disableSelectors() {\n var selectors = angular.element('.data-selector input, .data-selector button');\n selectors.attr('disabled', 'disabled');\n selectors.css('opacity', '.7');\n };\n var enableSelectors = function enableSelectors() {\n var selectors = angular.element('.data-selector input, .data-selector button');\n selectors.removeAttr('disabled');\n selectors.css('opacity', '1');\n };\n var _updateSelectors = function updateSelectors(item, extra) {\n if (extra === 'Meter') {\n updateGraphFilters(item);\n $scope.start_date = item.CalendarStartDate;\n $scope.end_date = item.CalendarEndDate;\n // $scope.start_date = \"10/15/2016\";\n // $scope.end_date = \"10/15/2018\";\n $scope.original_end_date = $scope.end_date;\n $scope.current_date = item.CalendarCurrentDate;\n _updateSelectors(findSelected(item.graphItems), 'Graph');\n return;\n }\n if (extra === 'Graph') {\n graphText = item.text;\n updatePeriodFilters(item);\n $timeout(function () {\n $scope.updateOnlyChart();\n }, 500);\n }\n };\n $scope.interactGraph = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n isHourly = item.value.toLowerCase().indexOf('hourly') > -1;\n dropdownInteraction = 'Graph';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Graph',\n 'data-action': item.text,\n event: 'usage-analysis-graph-change'\n });\n graphText = item.text;\n changedGraph = true;\n updatePeriodFilters(item);\n $scope.updateOnlyChart(item);\n };\n $scope.interactDate = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n // Google Analytics\n $scope.toPreviousDate = false;\n if (isHourly && isDayPeriod) fetchPreviousDay();\n var dateForAction;\n if ($scope.newCalendar) dateForAction = formatedDate($scope.forms.usageAnalysis.data.date);else {\n dateForAction = $scope.forms.usageAnalysis.date.$modelValue ? $scope.forms.usageAnalysis.date.$modelValue : $scope.forms.usageAnalysis.date.$viewValue;\n }\n // console.log(\"new date is \"+dateForAction);\n\n dropdownInteraction = 'Date';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Date',\n 'data-action': dateForAction,\n event: 'usage-analysis-date-change'\n });\n // $scope.interactPeriod();\n $scope.updateOnlyChart(item);\n };\n var fetchPreviousDay = function fetchPreviousDay() {\n var yesterday;\n if ($scope.newCalendar) {\n hourlyDayTriggered = true;\n yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n $scope.end_date = formatedDate(yesterday);\n if (formatedDate($scope.forms.usageAnalysis.data.date) == today) {\n $scope.toPreviousDate = true;\n $scope.forms.usageAnalysis.data.date = new Date($scope.forms.usageAnalysis.data.date.getFullYear(), $scope.forms.usageAnalysis.data.date.getMonth(), $scope.forms.usageAnalysis.data.date.getDate() - 1);\n }\n } else if ($scope.forms.usageAnalysis.date.$modelValue == today && $scope.forms.usageAnalysis.date.$viewValue == today) {\n yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n var temp = new Date();\n temp.setDate(temp.getDate() - 1);\n yesterday = formatedDate(yesterday);\n $scope.forms.usageAnalysis.date.$modelValue == today ? ($scope.forms.usageAnalysis.date.$modelValue = yesterday, $scope.toPreviousDate = true) : $scope.forms.usageAnalysis.date.$modelValue;\n $scope.forms.usageAnalysis.date.$viewValue == today ? ($scope.forms.usageAnalysis.date.$viewValue = yesterday, $scope.toPreviousDate = true) : $scope.forms.usageAnalysis.date.$viewValu;\n angular.element('.shared-calendar > div.date-area > input').scope().changeCalendarPointer(temp.getFullYear(), temp.getMonth(), temp.getDate());\n }\n };\n var triggerCalendarValidation = function triggerCalendarValidation() {\n if (hourlyDayTriggered) {\n $scope.end_date = formatedDate(new Date());\n if (!isNaN(Date.parse($('.md-datepicker-input').val()))) {\n var inputDate = $('.md-datepicker-input').val().split(' / ');\n $scope.forms.usageAnalysis.data.date = new Date(inputDate[2], inputDate[0] - 1, inputDate[1]);\n }\n }\n hourlyDayTriggered = false;\n };\n $scope.interactPeriod = function (item) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n isDayPeriod = item.value.toLowerCase().indexOf('day') > -1;\n if (isHourly && isDayPeriod) fetchPreviousDay();\n dropdownInteraction = 'Period';\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Period',\n 'data-action': item.text,\n event: 'usage-analysis-period-change'\n });\n $scope.updateOnlyChart(item);\n };\n $scope.updateOnlyChart = function (item) {\n disableSelectors();\n $scope.loaded = false;\n $scope.errorPanel = false;\n if ($scope.newCalendar) {\n if (changedGraph) {\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: newPeriodValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n changedGraph = false;\n } else {\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: formatedDate($scope.forms.usageAnalysis.data.date),\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n }\n } else if (changedGraph) {\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: $scope.forms.usageAnalysis.date.$viewValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: newPeriodValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n changedGraph = false;\n } else {\n var chartObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue,\n Date: $scope.forms.usageAnalysis.date.$viewValue,\n Graph: $scope.forms.usageAnalysis.graph.$viewValue,\n BillingFrequency: $scope.forms.usageAnalysis.period.$viewValue,\n GraphText: graphText,\n ActiveDate: $scope.start_date\n };\n }\n DailyAvgWeekException = false;\n if (chartObj.Graph == 'DailyEnergy' && chartObj.BillingFrequency == 'Week') DailyAvgWeekException = true;\n $http.post(api_url_graph, chartObj, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(updateChartX, updateChartX);\n };\n var updatePeriodFilters = function updatePeriodFilters(item) {\n newPeriodValue = item.periodItems[0].value;\n for (var i = 0; i < item.periodItems.length; i++) {\n item.periodItems[i].selected = true;\n if (i > 0) item.periodItems[i].selected = false;\n }\n $scope.period_items = item.periodItems;\n };\n $scope.changeDateFormat = function (billDate) {\n return billDate.replace(/(..).(..).(....)/, '$3-$2-$1');\n };\n\n // $scope.submitForm = function (url, billDate) {\n // billDate = billDate.replace(/(..).(..).(....)/, \"$3-$1-$2\");\n // console.log(billDate);\n // var param = [{ 'ActionType': 'ViewBill' }, { 'Billdate': billDate }];\n // submitPostCall(url, param);\n // }\n\n // function submitPostCall(url, params) {\n // var form = document.createElement(\"form\");\n // form.setAttribute(\"method\", \"post\");\n // form.setAttribute(\"action\", url);\n\n // for (var element = 0; element < params.length; element++) {\n // var temp = params[element];\n // for (var i in temp) {\n // if (temp.hasOwnProperty(i)) {\n // var input = document.createElement('input');\n // input.type = 'hidden';\n // input.name = i;\n // input.value = temp[i];\n // form.appendChild(input);\n // }\n // }\n // }\n\n // document.body.appendChild(form);\n // form.submit();\n // document.body.removeChild(form);\n // }\n\n $scope.initSelectors = function (item) {\n $timeout(function () {\n $scope.onMeterChange(item);\n }, 1300);\n };\n $scope.onMeterChange = function (item, analytics_value) {\n triggerCalendarValidation();\n $scope.end_date = $scope.original_end_date;\n $scope.toPreviousDate = false;\n dropdownInteraction = 'Meter';\n var meterDataAction = item.text.split('-');\n $scope.meterTag = $.trim(meterDataAction[0]);\n // Google Analytics\n if (!meterLoaded) {\n meterLoaded = true;\n var gasType = '';\n var electricType = '';\n if (_typeof(angular.element('#trackinginfo').attr('gas')) !== (typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) && angular.element('#trackinginfo').attr('gas') !== false) gasType = 'gas';\n if (_typeof(angular.element('#trackinginfo').attr('electric')) !== (typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) && angular.element('#trackinginfo').attr('electric') !== false) electricType = 'electric';\n var dataAction = '';\n if (gasType != '' && electricType != '') dataAction = \"\".concat(gasType, \" \").concat(electricType);else dataAction = gasType + electricType;\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'ServiceType',\n serviceType: dataAction,\n event: 'usage-analysis-web-service'\n });\n } else {\n // console.log(\"new analytics: \" + angular.element('#trackinginfo').attr('gas'));\n\n $rootScope.dataLayer.push({\n 'data-category': 'usage_analysis',\n 'data-label': 'Meter',\n 'data-action': $scope.meterTag,\n event: 'usage-analysis-meter-change'\n });\n }\n $scope.meter_certified = item.certified;\n\n // update table\n $scope.loaded = false;\n var tableObj = {\n MeterNumber: $scope.forms.usageAnalysis.meter.$viewValue\n };\n $http.post(api_url_table, tableObj, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(updateTableX, getErrorPanel);\n _updateSelectors(item, 'Meter');\n };\n $scope.adjustTableMobile = function () {\n if ($scope.maxHeightChanged) $scope.maxHeightChanged = false;else $scope.maxHeightChanged = true;\n };\n}\nusageAnalysisController.$inject = ['$scope', '$element', '$window', '$http', '$timeout', '$rootScope'];\napp.controller('usageAnalysisController', usageAnalysisController);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('CCAccountSelector', CCAccountSelector);\nCCAccountSelector.$inject = ['$location', '$scope', '$window', 'assetService', 'FPBroadcastService', 'genericHelperService', 'ccGetUserAccountsService', 'sessionStorageService', 'CCDecryptionService', 'commonService', 'jurisdictionService', 'getToggleResponseService', '$rootScope', 'errorHandlingService', 'commongaTaggingService', 'getAccountBalanceForRegularAccountService', 'getAccountEnrollmentEligibilityStatusService', 'getInvoiceListService'];\nfunction CCAccountSelector($location, $scope, $window, assetService, broadcastService, genericHelperService, getUserAccountsService, sessionStorageService, CCDecryptionService, commonService, jurisdictionService, getToggleResponseService, $rootScope, errorHandlingService, commongaTaggingService, getAccountBalanceForRegularAccountService, getAccountEnrollmentEligibilityStatusService, getInvoiceListService) {\n /* -----------------------Scope Vars---------------------------*/\n var addString = assetService.accountSelectorStrings.add;\n var addAccString = assetService.accountSelectorStrings.addAccount;\n var valueString = assetService.accountSelectorStrings.value;\n var viewString = assetService.accountSelectorStrings.view;\n var viewAllString = assetService.accountSelectorStrings.viewAll;\n var accountSelected = {};\n var contractAccountSelectedFromLogin = null;\n var contractAccountSelectedIndex = null;\n var addressAndAccounts = {};\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n var data = {};\n var currentPageId = '';\n var toggleResponse;\n var contractaccountSelectedCheck = '';\n $rootScope.toggleComponents = [];\n $rootScope.toggleSections = [];\n $rootScope.toggleSectionDetails = [];\n var globalUserType = '';\n var timeoutFourThousand = 4000;\n var timeoutEightThousand = 8000;\n var valueZero = 0;\n var valueOne = 1;\n var valueFive = 5;\n var valueMinusOne = -1;\n var valueFour = 4;\n\n /* -----------------------Global Vars---------------------------*/\n var vm = this;\n var isPageLoaded = false;\n vm.currentAccount = {};\n vm.dropdowns = {\n accounts: []\n };\n vm.experiences = [];\n vm.accountLoaded = '';\n vm.experienceSelected = null;\n vm.filteredAccounts = {};\n vm.filteredAccountStorage = {};\n vm.globalInfo = {};\n vm.historySelectedAccounts = [];\n vm.isLoaded = false;\n vm.moreThanOneAccount = false;\n vm.preFilterAccs = {};\n vm.selectedOptionText = null;\n vm.selectedOptionValue = null;\n vm.primaryEmail = null;\n vm.primaryBp = null;\n vm.prevListOfAccounts = null;\n vm.listOfAccounts = [];\n vm.validUserType = true;\n vm.numberOfAccount = '';\n\n /* --------------Watchers-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.toggleAccounts = toggleAccounts;\n vm.init = init;\n\n /* --------------Function Definitions------------------------*/\n function addLastOption() {\n var totalAccounts = 5;\n if (vm.filteredAccounts.length > totalAccounts) {\n vm.dropdowns.accounts.push({\n value: viewString,\n text: viewAllString\n });\n } else {\n vm.dropdowns.accounts.push({\n value: addString,\n text: addAccString\n });\n }\n }\n\n // get toggle response\n function getToggleResponse(request) {\n return getToggleResponseService.sitecore.getToggleResponse(request).then(function (response) {\n toggleResponse = response;\n });\n }\n function setToggleResponseModel() {\n toggleResponse.forEach(function (result) {\n // populate components\n if (result.RenderingName !== '') {\n $rootScope.toggleComponents[result.Id] = result.Visible;\n }\n\n // populate sections\n if (result.SectionName !== '') {\n $rootScope.toggleSections[result.Id] = result.Visible;\n $rootScope.toggleSectionDetails[result.Id] = {\n icon: result.NotAvailableIcon,\n description: result.NotAvailableDescription\n };\n }\n });\n\n // show all toggle component\n showNotAvailableComponent();\n setTimeout(function () {\n if (document.querySelectorAll('.toggle-grey-background').length > 0) {\n document.getElementById('page-components').classList.add('toggleErrorScreen');\n } else {\n document.getElementById('page-components').classList.remove('toggleErrorScreen');\n }\n }, 100);\n setTimeout(function () {\n showNotAvailableComponent();\n }, timeoutFourThousand);\n setTimeout(function () {\n showNotAvailableComponent();\n }, timeoutEightThousand);\n }\n function showNotAvailableComponent() {\n document.querySelectorAll('.not-available-comp').forEach(function (comp) {\n var component = comp;\n component.style.display = '';\n });\n }\n function listFormatter() {\n vm.filteredAccounts = _.map(vm.listOfAccounts, function (acct) {\n var temp = {};\n var nickname = '';\n temp.value = acct.accountNum;\n temp.accountData = acct;\n sessionStorageService.set(assetService.storageKeys.isPrepaid, acct.prepaid);\n if (acct.nickname) {\n nickname = \"\".concat(acct.nickname, \" - \");\n }\n if (acct.prepaid && acct.accountNum == contractaccountSelectedCheck) {\n if (window.location.pathname === '/my-account/billing-and-payment-programs' || window.location.pathname === '/my-account/billing-and-payment-programs/auto-pay') {\n window.location.href = 'my-account/Dashboard';\n }\n }\n if (acct.prepaid) {\n temp.text = \"\".concat(nickname, \"(Account #\").concat(acct.accountNum, \") \").concat(acct.address, \" (Duke Energy Prepaid Advantage)\");\n } else if (acct.role === assetService.roles.admin || acct.role === assetService.roles.viewer) {\n temp.text = \"\".concat(nickname, \"(Account #\").concat(acct.accountNum, \") \").concat(acct.address, \" - (\").concat(genericHelperService.capitalize(acct.role), \")\");\n } else if (acct.AccountStatus === assetService.accountSelectorStrings.INACTIVE) {\n temp.text = \"\".concat(nickname, \"(Account #\").concat(acct.accountNum, \") \").concat(acct.address, \" - (\").concat(assetService.accountSelectorStrings.CLOSED, \")\");\n } else if (acct.role === assetService.roles.admin || acct.role === assetService.roles.viewer) {\n temp.text = \"\".concat(nickname, \"(Account #\").concat(acct.accountNum, \") \").concat(acct.address, \" - (\").concat(genericHelperService.capitalize(acct.role), \")\");\n } else {\n temp.text = \"\".concat(nickname, \"(Account #\").concat(acct.accountNum, \") \").concat(acct.address, \"\");\n }\n temp.text = \"\".concat(temp.text, \"\");\n vm.accountLoaded = temp.value;\n return temp;\n });\n vm.dropdowns.accounts = vm.filteredAccounts.slice(valueZero, valueFive);\n }\n function checkUserType() {\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n if (assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS === dashboardUserType || vm.validUserType === false) {\n vm.validUserType = false;\n return false;\n }\n return true;\n }\n function decryptionService() {\n return CCDecryptionService.sitecore.decryptHex({\n request: $location.search().accountNbr\n }).then(function (result) {\n if (Object.prototype.hasOwnProperty.call(result, assetService.accountSelectorStrings.decryptedValue)) {\n contractAccountSelectedFromLogin = result.decryptedValue;\n }\n return contractAccountSelectedFromLogin;\n });\n }\n function getUserAccounts() {\n return getUserAccountsService.getUserAccounts(data).then(function (results) {\n vm.globalInfo = results.bpData;\n vm.globalInfo.primaryEmail = data.emailId;\n vm.primaryBp = results.bpData.primaryBp;\n vm.numberOfAccount = results.accounts.length;\n var residentialAccounts = _.filter(results.accounts, function (resultAcc) {\n return resultAcc.experience.toUpperCase() === 'SCRESIDENTIAL';\n });\n $rootScope.numberOfResiAccount = residentialAccounts.length ? residentialAccounts.length : valueZero;\n $rootScope.numberOfAccount = vm.numberOfAccount;\n if (results.nativeUser) {\n globalUserType = assetService.strings.NATIVE_USER;\n } else if (results.nonNativeUserWithOutAccount) {\n globalUserType = assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS;\n }\n vm.listOfAccounts = angular.copy(results.accounts);\n sessionStorageService.set(assetService.storageKeys.globalAccounts.info, results.bpData);\n sessionStorageService.set(assetService.storageKeys.globalAccounts.accounts, results.accounts);\n sessionStorageService.set(assetService.storageKeys.dashboard.userType, globalUserType);\n return true;\n });\n }\n function getAccountBalanceForRegularAccount(dataParam) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(dataParam).then(function (result) {\n $rootScope.accountBalanceResult = result;\n }, function (error) {\n $.growl.error({\n message: error.message\n });\n });\n }\n function getAccountEnrollmentEligibilityStatus(dataParam) {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(dataParam).then(function (result) {\n $rootScope.eligibilityStatusResult = result;\n }, function (error) {\n $.growl.error({\n message: error.message\n });\n });\n }\n function getInvoiceList(dataParam) {\n return getInvoiceListService.sitecore.getInvoiceList(dataParam).then(function (result) {\n $rootScope.invoiceListResult = result;\n }, function (error) {\n $.growl.error({\n message: error.message\n });\n });\n }\n function isDashboardPage() {\n var urlObject = new URL(window.location.href);\n var isDashboard = urlObject.pathname.toLowerCase() === '/my-account/dashboard';\n $rootScope.isDashboardPage = isDashboard;\n return isDashboard;\n }\n function load() {\n var toggleReq = {\n accountNo: '',\n pageId: currentPageId\n };\n broadcastService.loadingSpinner(true);\n var promises = [];\n if (assetService.apiConfig.useLocalHost) {\n data = {\n businessPartnerId: $location.search().businessPartnerId,\n // Get Primary Bp\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpId: $location.search().cdpId // Get Primary Bp\n };\n } else {\n data = {\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId\n };\n }\n if ($location.search().accountNbr) {\n promises.push(decryptionService());\n }\n promises.push(getUserAccounts());\n promises.push(getToggleResponse(toggleReq));\n commonService.executePromises(promises).then(function () {\n if (checkUserType()) {\n setModels();\n\n // set toggle response model\n setToggleResponseModel();\n saveData().then(function () {\n vm.isLoaded = true;\n if (!isDashboardPage()) {\n broadcastService.loadingSpinner(false);\n broadcastService.globalSwitcherAccount();\n return;\n }\n $rootScope.firstTimeDashboard = true;\n // make high cost service operations\n var queue = [getAccountBalanceForRegularAccount({\n executeService: true,\n accountList: [{\n contractAccountNumber: vm.selectedOptionValue,\n zipCode: addressAndAccounts.accountSelected.zipCode\n }]\n }), getAccountEnrollmentEligibilityStatus({\n contractAccountId: vm.selectedOptionValue,\n businessPartner: vm.primaryBp\n }), getInvoiceList({\n action: assetService.strings.INVLIST_REQ_DASH,\n top: assetService.strings.ONE,\n businessPartner: vm.primaryBp,\n contractAccountId: vm.selectedOptionValue,\n isDashboard: true,\n invoiceCount: assetService.serviceActions.getInvoiceList.INVOICE_COUNT\n })];\n commonService.executePromises(queue).then(function () {\n broadcastService.loadingSpinner(false);\n broadcastService.globalSwitcherAccount();\n });\n }, function () {\n // do nothing\n });\n } else {\n setSelectedAddressData();\n broadcastService.loadingSpinner(false);\n vm.isLoaded = true;\n broadcastService.globalSwitcherAccount();\n }\n });\n }\n function setSelectedAddressData(accountFormatted) {\n addressAndAccounts.userEmail = vm.globalInfo.primaryEmail;\n addressAndAccounts.primaryBp = vm.globalInfo.primaryBp;\n if (accountFormatted) {\n addressAndAccounts.accountSelected = _objectSpread(_objectSpread({}, accountSelected.accountData), accountFormatted);\n sessionStorageService.set(\n // Values for the entire site\n assetService.storageKeys.selectedAddressData, addressAndAccounts);\n }\n }\n function setRoleBaseData() {\n var role = {};\n var roleKey = \"\".concat(addressAndAccounts.accountSelected.role, \"Role\");\n role[roleKey] = true;\n sessionStorageService.set(assetService.storageKeys.roleBase, role);\n }\n function saveData() {\n sessionStorageService.set(\n // Accounts for Modal\n assetService.storageKeys.accountSelector, vm.filteredAccountStorage);\n var paramData = {\n businessPartnerId: vm.primaryBp,\n contractAccountId: vm.selectedOptionValue,\n requestedBy: data.cdpId\n };\n sessionStorageService.set(assetService.storageKeys.cdpId, data.cdpId);\n return getUserAccountsService.accountSearch(paramData).then(function (result) {\n sessionStorageService.set(assetService.storageKeys.globalAccounts.emails, result.emails);\n setSelectedAddressData(result.accountFormatted);\n setRoleBaseData();\n if (addressAndAccounts.accountSelected) {\n var _assetService$jurisdi = assetService.jurisdictionMapping[addressAndAccounts.accountSelected.jurisdiction],\n stateAbbreviation = _assetService$jurisdi.stateAbbreviation,\n serviceKey = _assetService$jurisdi.serviceKey;\n // set jurisdiction cookie\n jurisdictionService.setJurisdiction(stateAbbreviation, serviceKey);\n }\n }, function (error) {\n errorHandlingService.getException(error);\n });\n }\n function validateAccountPositionAndSet(contractAccountToValidate) {\n contractAccountSelectedIndex = _.findIndex(vm.listOfAccounts, function (account) {\n return account.accountNum === contractAccountToValidate;\n });\n if (contractAccountSelectedIndex > valueFour) {\n vm.listOfAccounts = genericHelperService.arrayMove(vm.listOfAccounts, contractAccountSelectedIndex, valueZero);\n contractAccountSelectedIndex = valueZero;\n }\n }\n function setModels() {\n var contractAccountSelectedFromLastSave = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (contractAccountSelectedFromLogin) {\n contractaccountSelectedCheck = contractAccountSelectedFromLogin;\n validateAccountPositionAndSet(contractAccountSelectedFromLogin);\n } else if (contractAccountSelectedFromLastSave) {\n if (Object.prototype.hasOwnProperty.call(contractAccountSelectedFromLastSave, assetService.strings.ACCOUNT_SELECTED)) {\n contractaccountSelectedCheck = contractAccountSelectedFromLastSave[assetService.strings.ACCOUNT_SELECTED].accountNum;\n validateAccountPositionAndSet(contractAccountSelectedFromLastSave[assetService.strings.ACCOUNT_SELECTED].accountNum);\n }\n }\n listFormatter();\n if (contractAccountSelectedIndex === valueMinusOne) {\n contractAccountSelectedIndex = valueZero;\n }\n vm.selectedOptionValue = contractAccountSelectedIndex ? vm.dropdowns.accounts[contractAccountSelectedIndex].value : vm.dropdowns.accounts[0].value;\n vm.selectedOptionText = contractAccountSelectedIndex ? vm.dropdowns.accounts[contractAccountSelectedIndex].text : vm.dropdowns.accounts[0].text;\n accountSelected = _.find(vm.filteredAccounts, function (account) {\n return account.accountData.accountNum === vm.selectedOptionValue;\n });\n vm.lastSelectedAccount = vm.selectedOptionValue;\n vm.filteredAccountStorage.accounts = vm.filteredAccounts;\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(vm.dropdowns.accounts, valueString, vm.selectedOptionValue);\n if (accountSelected.accountData) {\n if (accountSelected.accountData.experience === assetService.strings.MASS_MARKET) {\n window.location.href = vm.urlDashboard.legacy;\n }\n }\n if (vm.dropdowns.accounts.length > valueOne) {\n vm.moreThanOneAccount = true;\n addLastOption();\n }\n }\n function toggleAccounts(item, newRouteParam) {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n globalSelectedAccount = globalAccountInfo.accountSelected;\n vm.altId = $rootScope.altId;\n vm.alternateId = vm.altId.filter(function (itemAcc) {\n return itemAcc.AccountNum === globalSelectedAccount.accountNum;\n });\n if (item && item.accountData) {\n $rootScope.relationshipRole = item.accountData.role;\n }\n setTimeout(function () {\n if (globalSelectedAccount) {\n $rootScope.serviceType = 'Not Eligible';\n if (globalSelectedAccount.isElectricMeter && globalSelectedAccount.isGasAccount) {\n $rootScope.serviceType = 'ELECTRIC, GAS';\n } else if (globalSelectedAccount.isElectricMeter) {\n $rootScope.serviceType = 'ELECTRIC';\n } else if (globalSelectedAccount.isGasAccount) {\n $rootScope.serviceType = 'GAS';\n }\n vm.webObject = {\n event: 'cc-web-service',\n NumberOfAccounts: $rootScope.numberOfAccount,\n AccountStatus: vm.alternateId[0].AccountStat,\n AlternateID: vm.alternateId[0].AlternateAccountID ? vm.alternateId[0].AlternateAccountID : 'Not Eligible',\n ServiceType: $rootScope.serviceType,\n EBillDirect: $rootScope.EBillDirect ? $rootScope.EBillDirect : 'Not Eligible',\n Segment: 'Res',\n Jurisdiction: $rootScope.jurisdiction ? $rootScope.jurisdiction : 'Not Eligible',\n BudgetBilling: $rootScope.budgetBilling ? $rootScope.budgetBilling : 'Not Enrolled',\n BankDraft_AutoPay: $rootScope.bankDraft ? $rootScope.bankDraft : 'Not Eligible',\n EqualPaymentPlan_FixedBill: $rootScope.equalPaymentplan ? $rootScope.equalPaymentplan : 'Not Eligible',\n EBillDistributed: $rootScope.eBillDistributed ? $rootScope.eBillDistributed : 'Not Eligible',\n DPA_InstallmentPlans: $rootScope.dpa,\n DueDateExtension: $rootScope.dueDateExtension ? 'Eligible' : 'Not Eligible',\n DisconnectExtension: $rootScope.disconnectExtension ? $rootScope.disconnectExtension : 'Not Eligible',\n CurrentDueDate: $rootScope.currentDuedate ? $rootScope.currentDuedate : 'Not Eligible',\n PickYourDueDate: $rootScope.pickyourDueDate,\n Impersonation: impDetails == null ? 'False' : 'True',\n PrepaidAdvantage: $rootScope.prepaidAdvantage,\n RateComparison: $rootScope.rateComparison\n };\n $rootScope.webservicePush(vm.webObject);\n }\n }, timeoutEightThousand);\n var _vm$analyticsTags = vm.analyticsTags,\n viewAllAccounts = _vm$analyticsTags.viewAllAccounts,\n differentAccountSelected = _vm$analyticsTags.differentAccountSelected,\n addAccount = _vm$analyticsTags.addAccount;\n broadcastService.loadingSpinner(true);\n vm.isLoaded = false;\n var newRoute = newRouteParam.split(',');\n if (vm.selectedOptionValue === viewString) {\n vm.selectedOptionValue = vm.lastSelectedAccount;\n vm.selectedOptionText = _.find(vm.dropdowns.accounts, function (account) {\n return account.accountData.accountNum === vm.selectedOptionValue;\n }).text;\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(vm.dropdowns.accounts, valueString, vm.selectedOptionValue);\n commongaTaggingService.attributePush(viewAllAccounts);\n $window.location.assign(newRoute[1]); // Changes URL\n } else if (vm.selectedOptionValue === addString) {\n vm.selectedOptionValue = vm.lastSelectedAccount;\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(vm.dropdowns.accounts, valueString, vm.selectedOptionValue);\n commongaTaggingService.attributePush(addAccount);\n $window.location.assign(newRoute[0]); // Changes URL\n } else if (vm.selectedOptionValue !== viewString && vm.selectedOptionValue !== addString) {\n vm.lastSelectedAccount = vm.selectedOptionValue;\n vm.selectedOptionText = _.find(vm.dropdowns.accounts, function (account) {\n return account.accountData.accountNum === vm.selectedOptionValue;\n }).text;\n accountSelected = _.find(vm.filteredAccounts, function (account) {\n return account.accountData.accountNum === vm.selectedOptionValue;\n });\n commongaTaggingService.attributePush(differentAccountSelected);\n if (item.accountData.experience === assetService.strings.MASS_MARKET) {\n window.location.href = \"\".concat(vm.legacyDashboardUrl, \"?accountNbr=\").concat(item.accountData.accountNum);\n return;\n }\n if (isDashboardPage()) {\n saveData().then(function () {\n vm.isLoaded = true;\n broadcastService.loadingSpinner(false);\n $rootScope.firstTimeDashboard = true;\n // make high cost service operations\n var queue = [getAccountBalanceForRegularAccount({\n executeService: true,\n accountList: [{\n contractAccountNumber: vm.selectedOptionValue,\n zipCode: addressAndAccounts.accountSelected.zipCode\n }]\n }), getAccountEnrollmentEligibilityStatus({\n contractAccountId: vm.selectedOptionValue,\n businessPartner: vm.primaryBp\n }), getInvoiceList({\n action: assetService.strings.INVLIST_REQ_DASH,\n top: assetService.strings.ONE,\n businessPartner: vm.primaryBp,\n contractAccountId: vm.selectedOptionValue,\n isDashboard: true,\n invoiceCount: assetService.serviceActions.getInvoiceList.INVOICE_COUNT\n })];\n commonService.executePromises(queue).then(function () {\n // get toggle response\n var toggleReq = {\n accountNo: vm.lastSelectedAccount,\n pageId: currentPageId\n };\n getToggleResponse(toggleReq).then(function () {\n setToggleResponseModel();\n setTimeout(function () {\n broadcastService.globalSwitcherAccount();\n }, 100);\n });\n });\n }, function () {\n // do nothing\n });\n } else {\n saveData().then(function () {\n broadcastService.loadingSpinner(false);\n vm.isLoaded = true;\n\n // Redirect to Dashboard if Closed account\n if (item.accountData.status) {\n var itemStatus = item.accountData.status.toLowerCase();\n if ((itemStatus === assetService.accountSelectorStrings.closed || window.location.pathname.indexOf('inviteuser') !== -1) && window.location.pathname !== assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD) {\n window.location.href = assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD;\n return;\n }\n }\n $rootScope.firstTimeDashboard = false;\n var toggleReq = {\n accountNo: vm.lastSelectedAccount,\n pageId: currentPageId\n };\n\n // get toggle response\n getToggleResponse(toggleReq).then(function () {\n setToggleResponseModel();\n setTimeout(function () {\n broadcastService.globalSwitcherAccount();\n }, 100);\n });\n }, function () {\n // do nothing\n });\n }\n // converted/residential account redirect\n }\n vm.filteredAccountStorage.selectedAccount = vm.lastSelectedAccount;\n }\n\n /* ---------------Initialization-------------------*/\n\n function init(legacyDashboardUrl, email, inetrnalId, pageId, selectedAccountNumber) {\n $rootScope.IsAccountSelectorPresent = true;\n vm.legacyDashboardUrl = legacyDashboardUrl;\n if (!assetService.apiConfig.useLocalHost) {\n vm.currentUser = {\n emailId: email,\n cdpId: inetrnalId\n };\n currentPageId = pageId;\n contractAccountSelectedFromLogin = selectedAccountNumber;\n\n // store the details in session storage\n sessionStorageService.set(assetService.storageKeys.currentUser, vm.currentUser);\n $rootScope.currentUserEmailId = vm.currentUser.emailId;\n $rootScope.currentUserCdpId = vm.currentUser.cdpId;\n load();\n } else {\n load();\n }\n }\n $scope.$on('nicknameForAccountSelector', function (event, returnObj) {\n contractAccountSelectedFromLogin = returnObj.accNumber;\n load();\n });\n}\napp.controller('ModalAddAccountMissingApt', ModalAddAccountMissingApt);\nModalAddAccountMissingApt.$inject = ['$log', '$state', 'assetService', 'sessionStorageService', 'createUserProfile', 'addAccountUpdateBpService', '$rootScope', '$modalInstance', 'getLoggedInUserDetailsService', 'accountSearchService', 'commongaTaggingService', 'broadcastService'];\nfunction ModalAddAccountMissingApt($log, $state, assetService, sessionStorageService, createUserProfile, addAccountUpdateBpService, $rootScope, $modalInstance, getLoggedInUserDetailsService, accountSearchService, commongaTaggingService, broadcastService) {\n /* --------------Global Declarations-----------------------*/\n var vm = this;\n vm.isDisable = true;\n vm.newExperience = true;\n var _individual = 'INDIVIDUAL';\n var _organization = 'ORGANIZATION';\n var _addAccount = 'Add Account';\n var _missingHeadLine = 'please double check address';\n vm.currentAddress = {};\n vm.address = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\n vm.apartment;\n\n /* --------------Function Declarations-----------------------*/\n vm.continueWithAddress = continueWithAddress;\n vm.closeModal = closeModal;\n vm.goToEditAddress = goToEditAddress;\n vm.enableUpdate = enableUpdate;\n vm.updateAddress = updateAddress;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n var fedTaxId = sessionStorageService.get(assetService.storageKeys.addAccountFedTaxId);\n var orgName = sessionStorageService.get(assetService.storageKeys.addAccountOrgName);\n var experience = sessionStorageService.get(assetService.storageKeys.transfertypeAccount);\n var chekLandLordFlowFromOptions = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function init() {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.emailId = results.Value;\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n load();\n }\n function enableUpdate() {\n vm.isDisable = false;\n }\n function closeModal() {\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n $modalInstance.close();\n }\n function goToEditAddress() {\n closeModal();\n }\n function continueWithAddress(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n updateAddress();\n closeModal();\n $state.go('addAccount-track.termsOfUse');\n }\n function next() {\n if ($rootScope.OrgNewExp) {\n $state.go('addAccount-track.termsOfUse');\n } else {\n $state.go('addAccount-succes-multipleAccounts');\n }\n }\n function updateAddress(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n var accountData = {};\n if (chekLandLordFlow === _individual) {\n accountData = {\n dataSource: 'ISU',\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\n tidNo: '',\n orgName: '',\n fullSSN: $rootScope.fullSSN,\n dob: $rootScope.dob\n };\n } else if (chekLandLordFlow === _organization) {\n accountData = {\n dataSource: 'ISU',\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\n tidNo: fedTaxId,\n orgName: orgName\n };\n }\n attributePush(\"workFlow:\".concat(_addAccount), \"headline:\".concat($('.title-modal').first().text()), \"addedSpec:\".concat($('.FP-Button__button-submit').first().text()), \"buttonText:\".concat(chekLandLordFlowFromOptions));\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'error', $(\".FP-Button__button-submit\").text());\n getAccountData(accountData).then(function (result) {\n if (!vm.primaryBP) {\n bpCheck();\n } else {\n closeModal();\n $state.go('addAccount-track.termsOfUse');\n }\n });\n }\n function getAccountData(data) {\n return accountSearchService.sitecore.accountSearchPublic(data).then(function (result) {\n if (result.d.ReqToHResNav && result.d.ReqToHResNav.results.length > 0) {\n var accountData = result.d.ReqToHResNav.results[0].HResToBp.results[0];\n if (accountData.BpNumber) {\n vm.primaryBP = accountData.BpNumber;\n sessionStorageService.set(assetService.storageKeys.primaryBP, vm.primaryBP);\n }\n }\n });\n }\n function bpCheck() {\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n if (chekLandLordFlow === _organization) {\n var createProfileValues = {\n bpFlag: 'X',\n organizationname1: orgName,\n federaltaxid: fedTaxId,\n businessPartnerType: '2',\n firstName: vm.firstName,\n lastName: vm.lastName,\n housenumber: vm.currentAddress.Apartment,\n street: vm.currentAddress.StreetAddress,\n city: vm.currentAddress.City,\n country: 'US',\n State: vm.currentAddress.State,\n zipcode: vm.currentAddress.ZipCode,\n bpRole: 'MKK'\n };\n createProfile(createProfileValues).then(function (result) {\n closeModal();\n next();\n });\n } else if (chekLandLordFlow === _individual) {\n var updateBpValues = {\n fullSSN: $rootScope.fullSSN,\n dob: $rootScope.dob,\n bpId: vm.primaryBP ? vm.primaryBP : vm.relatedBP,\n houseNo: vm.currentAddress.Apartment,\n address: vm.currentAddress.StreetAddress,\n state: vm.currentAddress.State,\n city: vm.currentAddress.City,\n zipCode: vm.currentAddress.ZipCode\n };\n updateBp(updateBpValues).then(function (result) {\n closeModal();\n $state.go('addAccount-track.termsOfUse');\n });\n }\n }\n function updateBp(data) {\n return addAccountUpdateBpService.sitecore.updatebps(data).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function createProfile(data) {\n return createUserProfile.sitecore.createUserProfile(data).then(function (result) {\n if (result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp !== '') {\n vm.primaryBP = result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp;\n sessionStorageService.set(assetService.storageKeys.primaryBP, vm.primaryBP);\n }\n (function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n }\n function load() {\n vm.currentAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\n vm.firstName = sessionStorageService.get(assetService.storageKeys.firstName);\n vm.lastName = sessionStorageService.get(assetService.storageKeys.lastName);\n vm.relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\n }\n attributePush('workFlow:error add account ' + experience, 'headline:' + _addAccount, 'subheadline:' + chekLandLordFlowFromOptions, 'addedSpec:' + assetService.sitecoreEndpoints.addresValidation, 'buttonText: not-set', 'addedEvent:' + _missingHeadLine);\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'continue', 'error', 'not set');\n init();\n}\napp.controller('ModalAddAccountMultipleAddressSuggestion', ModalAddAccountMultipleAddressSuggestion);\nModalAddAccountMultipleAddressSuggestion.$inject = ['$log', '$state', 'sessionStorageService', 'assetService', 'createUserProfile', 'addAccountUpdateBpService', '$rootScope', '$modalInstance', 'accountSearchService', 'getLoggedInUserDetailsService', 'commongaTaggingService', 'broadcastService'];\nfunction ModalAddAccountMultipleAddressSuggestion($log, $state, sessionStorageService, assetService, createUserProfile, addAccountUpdateBpService, $rootScope, $modalInstance, accountSearchService, getLoggedInUserDetailsService, commongaTaggingService, broadcastService) {\n var vm = this;\n var _individual = 'INDIVIDUAL';\n var _organization = 'ORGANIZATION';\n var _addAccount = 'Add Account';\n var _multipleMessage = 'multiple address found';\n vm.currentAddress = {};\n vm.addressRange = [];\n vm.dataToPost = {};\n vm.isDisable = true;\n vm.newExperience = true;\n /* --------------Function Declarations-----------------------*/\n\n vm.updateAddress = updateAddress;\n vm.closeModal = closeModal;\n vm.goToEditAddress = goToEditAddress;\n vm.getAddress = getAddress;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n var fedTaxId = sessionStorageService.get(assetService.storageKeys.addAccountFedTaxId);\n var orgName = sessionStorageService.get(assetService.storageKeys.addAccountOrgName);\n var experience = sessionStorageService.get(assetService.storageKeys.transfertypeAccount);\n var chekLandLordFlowFromOptions = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function closeModal() {\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n $modalInstance.close();\n }\n function next() {\n if ($rootScope.OrgNewExp) {\n $state.go('addAccount-track.termsOfUse');\n } else {\n $state.go('addAccount-succes-multipleAccounts');\n }\n }\n function load() {\n vm.addressRange = sessionStorageService.get(assetService.storageKeys.manageAccount.addressRange);\n vm.currentAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\n vm.firstName = sessionStorageService.get(assetService.storageKeys.firstName);\n vm.lastName = sessionStorageService.get(assetService.storageKeys.lastName);\n vm.relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\n attributePush('workFlow:error add account ' + experience, 'headline:' + _addAccount, 'subheadline:' + chekLandLordFlowFromOptions, 'addedSpec:' + assetService.sitecoreEndpoints.addresValidation, 'buttonText: not-set', 'addedEvent:' + _multipleMessage);\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'continue', 'error', 'not set');\n }\n function getAddress(selectedAddress, radioBtn) {\n vm.dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n city: vm.currentAddress.City,\n state: vm.currentAddress.State,\n zipCd: vm.currentAddress.ZipCode,\n houseNo: vm.currentAddress.HouseNumber\n };\n if (radioBtn === 0) {\n vm.dataToPost.street = selectedAddress.streetaddress;\n sessionStorageService.set(assetService.storageKeys.selectedNewAddress, vm.dataToPost.street);\n }\n if (radioBtn === 1) {\n vm.dataToPost.street = selectedAddress;\n sessionStorageService.set(assetService.storageKeys.selectedNewAddress, vm.dataToPost.street);\n }\n vm.isDisable = false;\n }\n function updateAddress() {\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n var accountData = {};\n if (chekLandLordFlow === _individual) {\n accountData = {\n dataSource: assetService.urlTokens.ISU,\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\n tidNo: '',\n orgName: '',\n fullSSN: $rootScope.fullSSN,\n dob: $rootScope.dob\n };\n } else if (chekLandLordFlow === _organization) {\n accountData = {\n dataSource: assetService.urlTokens.ISU,\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\n tidNo: fedTaxId,\n orgName: orgName\n };\n }\n attributePush('workFlow:' + _addAccount, 'headline:' + $('.multipleSuggestionAddressModal h3').text().trim(), 'addedSpec:' + $('.FP-Button__button-submit').text(), 'buttonText:' + chekLandLordFlowFromOptions);\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'error', $('.FP-Button__button-submit').text());\n getAccountData(accountData).then(function (result) {\n if (!vm.primaryBP) {\n bpCheck();\n } else {\n closeModal();\n $state.go('addAccount-track.termsOfUse');\n }\n });\n }\n function goToEditAddress() {\n closeModal();\n }\n function getAccountData(data) {\n return accountSearchService.sitecore.accountSearchPublic(data).then(function (result) {\n if (result.d.ReqToHResNav && result.d.ReqToHResNav.results.length > 0) {\n var accountData = result.d.ReqToHResNav.results[0].HResToBp.results[0];\n if (accountData.BpNumber) {\n vm.primaryBP = accountData.BpNumber;\n sessionStorageService.set(assetService.storageKeys.primaryBP, vm.primaryBP);\n }\n }\n });\n }\n function bpCheck() {\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n var selectedNewAddress = sessionStorageService.get(assetService.storageKeys.selectedNewAddress);\n if (typeof selectedNewAddress === 'string') {\n var updatedAddress = selectedNewAddress.split(',');\n if (chekLandLordFlow === _organization) {\n var createProfileValues = {\n bpFlag: 'X',\n organizationname1: orgName,\n federaltaxid: fedTaxId,\n businessPartnerType: '2',\n firstName: vm.firstName,\n lastName: vm.lastName,\n housenumber: vm.currentAddress.HouseNumber,\n unit: vm.currentAddress.floor,\n street: updatedAddress.length ? updatedAddress.length > 4 ? \"\".concat(updatedAddress[0].trim(), \",\").concat(updatedAddress[1].trim()) : updatedAddress[0].trim() : '',\n city: updatedAddress.length ? updatedAddress[updatedAddress.length - 3].trim() : '',\n country: 'US',\n State: updatedAddress.length ? updatedAddress[updatedAddress.length - 2].trim() : '',\n zipcode: updatedAddress.length ? updatedAddress[updatedAddress.length - 1].trim() : '',\n bpRole: 'MKK'\n };\n createProfile(createProfileValues).then(function (result) {\n closeModal();\n next();\n });\n } else if (chekLandLordFlow === _individual) {\n var updateBpValues = {\n fullSSN: $rootScope.fullSSN,\n dob: $rootScope.dob,\n bpId: vm.primaryBP ? vm.primaryBP : vm.relatedBP,\n houseNo: vm.currentAddress.HouseNumber,\n unit: vm.currentAddress.floor,\n address: updatedAddress.length ? updatedAddress.length > 4 ? \"\".concat(updatedAddress[0].trim(), \",\").concat(updatedAddress[1].trim()) : updatedAddress[0].trim() : '',\n state: updatedAddress.length ? updatedAddress[updatedAddress.length - 2].trim() : '',\n city: updatedAddress.length ? updatedAddress[updatedAddress.length - 3].trim() : '',\n zipCode: updatedAddress.length ? updatedAddress[updatedAddress.length - 1].trim() : ''\n };\n updateBp(updateBpValues).then(function (result) {\n closeModal();\n $state.go('addAccount-track.termsOfUse');\n });\n }\n }\n }\n function updateBp(data) {\n return addAccountUpdateBpService.sitecore.updatebps(data).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function createProfile(data) {\n return createUserProfile.sitecore.createUserProfile(data).then(function (result) {\n if (result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp !== '') {\n vm.primaryBP = result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp;\n sessionStorageService.set(assetService.storageKeys.primaryBP, vm.primaryBP);\n }\n (function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n }\n function init() {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.emailId = results.Value;\n //load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n load();\n }\n init();\n}\napp.controller('addAccountContainerSuccess', addAccountContainerSuccess);\naddAccountContainerSuccess.$inject = ['$log', '$scope', '$location', 'sessionStorageService', 'assetService', 'ccAddAccountAssetService', 'getLoggedInUserDetailsService', 'getLoggedinBPDetailsAndAssociatedAccountsService', 'broadcastService', 'sewDashboardService', '$filter', 'ccGetUserBPDetailsService', 'addAccountServices', 'commongaTaggingService', '$rootScope'];\nfunction addAccountContainerSuccess($log, $scope, $location, sessionStorageService, assetService, ccAddAccountAssetService, getLoggedInUserDetailsService, getLoggedinBPDetailsAndAssociatedAccountsService, broadcastService, sewDashboardService, $filter, ccGetUserBPDetailsService, addAccountServices, commongaTaggingService, $rootScope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.tableSuccess = false;\n vm.showBtn = true;\n vm.accountsInfo = [];\n vm.accountsToShow = [];\n vm.errorRelationship = false;\n vm.loadingSpinner = true;\n vm.experienceValue = '';\n var globalAccountInfo = {};\n var _cdpId = null;\n var _emailId = null;\n var _accountSelector = {};\n var globalSelectedAccount = {};\n var _account = {};\n vm.newExperiences = {};\n vm.contractAccount = null;\n var _individual = 'INDIVIDUAL';\n var _organization = 'ORGANIZATION';\n var _landlordExp = 'SSA_LANDLORD';\n var _commExp = 'SSA_BUSINESS';\n var _resiExp = 'SC_RESIDENTIAL';\n vm.IndividualOrg = false;\n vm.grouped = false;\n var _residential = assetService.strings.RESIDENTIAL;\n /* --------------Global Vars-----------------------*/\n vm.minusTableHeaders = [{\n column: ccAddAccountAssetService.strings.ACCOUNT_NUM_COL,\n sortAsc: false\n }];\n vm.oneDigit = 1;\n var zero = 0;\n vm.currentAccount = {};\n vm.relatedBp = '';\n var TEN = 10;\n vm.limitRows = 10;\n vm.sortAsc = false;\n vm.showSSADisclaimer = sessionStorageService.get(ccAddAccountAssetService.storageKeys.showSSADisclaimer);\n vm.accountsCount = 0;\n vm.masking = '';\n /* --------------Function Declarations-----------------------*/\n vm.showAllAccounts = showAllAccounts;\n vm.goToPage = goToPage;\n vm.sortByColumn = sortByColumn;\n vm.redirectToSew = redirectToSew;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n vm.selectedAccountsData = [];\n\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function sortByColumn(value) {\n vm.orderBy = vm.minusTableHeaders[value].column;\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\n vm.accountsToShow = $filter('orderBy')(vm.accountsToShow, ccAddAccountAssetService.strings.ACCOUNT_NUM, vm.sortAsc);\n }\n function virtualPagePushForSymbol() {\n // common ga Tagging file doesn't allow # symbol, so adding this vpp function here\n var arrayElements = Array.prototype.slice.call(arguments);\n if (arrayElements && arrayElements.length > 0) {\n var fireEvent = 'fire-vpv';\n var vpvName = arrayElements[0] ? arrayElements[0].toLowerCase() == 'public' || arrayElements[0].toLowerCase() == 'form' || arrayElements[0].toLowerCase() == 'friendly form' || arrayElements[0].toLowerCase() == 'light-auth' ? '/vpv' : '/vpv/authenticated' : '/vpv/authenticated';\n if (arrayElements[0] && arrayElements[0].toLowerCase() == 'form' && !(arrayElements[1].toLowerCase() == 'public')) {\n arrayElements.splice(1, 0, 'authenticated');\n }\n _.forEach(arrayElements, function (data) {\n if (data) {\n data = data.replace(/(<([^>]+)>)/gi, '').replace(/[^#a-zA-Z0-9- ]/g, '').replace(/[0-9]{10,}/g, 'xxxxxxxxxx').trim().toLowerCase().replace(/ +/g, ' ').split(' ').join('-');\n var appendValue = \"/\".concat(data);\n vpvName = vpvName.concat(appendValue);\n }\n });\n $rootScope.virtualPagePush(fireEvent, vpvName);\n }\n }\n function attributePushForSymbol() {\n var arrayElements = Array.prototype.slice.call(arguments);\n if (arrayElements && arrayElements.length > 0) {\n var objectElements = {};\n _.forEach(arrayElements, function (item) {\n if (item.split(':')[1]) {\n objectElements[item.split(':')[0]] = item.split(':')[1].replace(/(<([^>]+)>)/gi, '').replace(/[^#a-zA-Z0-9- /]/g, '').replace(/[0-9]{10,}/g, 'xxxxxxxxxx').trim().toLowerCase().replace(/ +/g, ' ').split(' ').join('-');\n }\n });\n var attributeObject = {\n 'event-category': objectElements.workFlow ? objectElements.workFlow.split('-').join('_') : '',\n 'event-action': (objectElements.buttonText ? objectElements.buttonText : '') + (objectElements.buttonText && objectElements.addedSpec ? '-|-' : '') + (objectElements.addedSpec ? objectElements.addedSpec : '') + ((objectElements.buttonText || objectElements.addedSpec) && objectElements.addedEvent ? '-|-' : '') + (objectElements.addedEvent ? objectElements.addedEvent : '') + (objectElements.returnCode ? objectElements.returnCode : '') + (objectElements.returnCode && objectElements.endpoint ? '-|-' : '') + (objectElements.endpoint ? objectElements.endpoint : '') + ((objectElements.returnCode || objectElements.endpoint) && objectElements.msgHeader ? '-|-' : '') + (objectElements.msgHeader ? objectElements.msgHeader : ''),\n 'event-label': (objectElements.headline ? objectElements.headline : '') + (objectElements.headline && objectElements.subheadline ? '-|-' : '') + (objectElements.subheadline ? objectElements.subheadline : '') + ((objectElements.headline || objectElements.subheadline) && objectElements.addedHeadline ? '-|-' : '') + (objectElements.addedHeadline ? objectElements.addedHeadline : ''),\n event: 'fire-event'\n };\n $rootScope.attributePush(attributeObject['event-category'], attributeObject['event-action'], attributeObject['event-label'], attributeObject.event);\n }\n }\n function goToPage(dashboard, disambiguation, listOfAccounts, sewDashboard) {\n var userType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n var selectedAccounts = vm.selectedAccountsData;\n var experienceType = sessionStorageService.get(assetService.storageKeys.experienceAccount);\n vm.experienceValue = experienceType || '';\n if (vm.experienceValue === _residential) {\n vm.experienceValue = assetService.storageKeys.home;\n }\n if (vm.accountsCount == 1) {\n attributePush(\"workFlow:\".concat($('#hdn-toast').attr('businessFunction')), \"headline:\".concat($('#hdn-toast').attr('businessFunction')), \"buttonText:\".concat($('#hdn-toast').attr('successTitleSingleAccount')), \"addedSpec:\".concat($('#hdn-toast').attr('manageMyAccnt')));\n virtualPagePush($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('businessFunction'), vm.experienceValue, $('#hdn-toast').attr('successTitleSingleAccount'), $('#hdn-toast').attr('manageMyAccnt'));\n } else {\n attributePushForSymbol(\"workFlow:\".concat($('#hdn-toast').attr('businessFunction')), \"headline:\".concat($('#hdn-toast').attr('businessFunction')), \"buttonText:\".concat($('#hdn-toast').attr('successTitleMultipleAccnt'), \" # accounts!'\"), \"addedSpec:\".concat($('#hdn-toast').attr('manageMyAccnt')));\n virtualPagePushForSymbol($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('businessFunction'), vm.experienceValue, \"\".concat($('#hdn-toast').attr('successTitleMultipleAccnt'), \" # accounts!\"), $('#hdn-toast').attr('manageMyAccnt'));\n }\n var amountOfAccounts = 0;\n if (selectedAccounts) {\n amountOfAccounts = selectedAccounts.length;\n }\n var multiAccountExperience = false;\n var sameExperience = false;\n var exp = 'RESI';\n if (selectedAccounts[0].Experience === _landlordExp) {\n exp = 'LANL';\n } else if (selectedAccounts[0].Experience === _commExp) {\n exp = 'COMM';\n }\n var profileExperience = sessionStorageService.get(ccAddAccountAssetService.storageKeys.profileExperiences);\n if (amountOfAccounts === 1 && profileExperience.length === 1 && selectedAccounts[0].Experience !== _resiExp && selectedAccounts[0].Experience !== _landlordExp && selectedAccounts[0].Experience !== _commExp) {\n window.location.href = disambiguation + '?selectedExperience=' + selectedAccounts[0].Experience;\n }\n if (userType == 'NATIVE_USER') {\n if (amountOfAccounts == 1) {\n multiAccountExperience = multiAccountExp();\n if (selectedAccounts[0].Experience === 'SC_RESIDENTIAL' && !multiAccountExperience) {\n window.location.href = dashboard;\n } else {\n sameExperience = sameExp();\n switch (sameExperience) {\n case false:\n {\n window.location.href = disambiguation;\n break;\n }\n case true:\n {\n window.location.href = disambiguation + '?selectedExperience=' + selectedAccounts[0].Experience;\n break;\n }\n }\n }\n } else if (amountOfAccounts > 1) {\n multiAccountExperience = multiAccountExp();\n switch (multiAccountExperience) {\n case true:\n {\n window.location.href = disambiguation;\n break;\n }\n case false:\n {\n window.location.href = listOfAccounts;\n break;\n }\n }\n }\n } else if (amountOfAccounts == 1) {\n multiAccountExperience = multiAccountExp();\n if (multiAccountExperience) {\n window.location.href = disambiguation;\n } else if (selectedAccounts[0].Experience == 'SC_RESIDENTIAL') {\n window.location.href = dashboard;\n } else {\n if (selectedAccounts[0].Experience == 'SC_RESIDENTIAL') {\n window.location.href = dashboard;\n } else {\n window.location.href = disambiguation + '?selectedExperience=' + selectedAccounts[0].Experience;\n }\n }\n } else if (amountOfAccounts > 1) {\n multiAccountExperience = multiAccountExp();\n switch (multiAccountExperience) {\n case true:\n {\n window.location.href = disambiguation;\n break;\n }\n case false:\n {\n window.location.href = listOfAccounts;\n break;\n }\n }\n }\n function multiAccountExp() {\n for (var i = 0; i < selectedAccounts.length; i++) {\n if (selectedAccounts[0].Experience != selectedAccounts[i].Experience) {\n return true;\n }\n }\n var multiExperience = sessionStorageService.get(ccAddAccountAssetService.storageKeys.profileExperiences);\n if (multiExperience.length > zero) {\n if (multiExperience.length === 1) {\n for (var _i = 0; _i < selectedAccounts.length; _i++) {\n if (multiExperience[0] != 'NONN' && multiExperience[0] != selectedAccounts[_i].Experience) {\n return true;\n }\n }\n } else {\n if (multiExperience.length == 2 && multiExperience[1] === 'NONN' && multiExperience[0] === selectedAccounts[0].Experience) {\n return false;\n }\n return true;\n }\n }\n return false;\n }\n function sameExp() {\n var userExperiences = sessionStorageService.get(ccAddAccountAssetService.storageKeys.profileExperiences);\n if (userExperiences.length > zero) {\n if (userExperiences.length === 1) {\n for (var i = 0; i < selectedAccounts.length; i++) {\n if (userExperiences[0] === selectedAccounts[i].Experience) {\n return true;\n }\n }\n } else {\n return false;\n }\n }\n return false;\n }\n }\n function redirectToSew(sewDashboard) {\n vm.indOrOrg = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n attributePush(\"workFlow:\".concat($('#hdn-toast').attr('businessFunction')), \"headline:\".concat($('#hdn-toast').attr('headLine')), 'subheadline:' + $('#hdn-toast').attr('addPropertiesHeading'), \"buttonText:\".concat($('#hdn-toast').attr('addProperties')));\n virtualPagePush($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('headLine'), vm.experienceValue, vm.indOrOrg, $('#hdn-toast').attr('addPropertiesHeading'), $('#hdn-toast').attr('addProperties'));\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n var bpType = '';\n var orgName = '';\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n if (chekLandLordFlow === _individual) {\n bpType = '1';\n orgName = '';\n } else {\n bpType = '2';\n orgName = sessionStorageService.get(assetService.storageKeys.addAccountOrgName) ? sessionStorageService.get(assetService.storageKeys.addAccountOrgName) : '';\n }\n var accountData = sessionStorageService.get(assetService.storageKeys.customerBpData);\n var customerBpFirstName = accountData && accountData.firstName ? accountData.firstName : '';\n var customerBpLastName = accountData && accountData.lastName ? accountData.lastName : '';\n var customerBp = sessionStorageService.get(assetService.storageKeys.primaryBP) ? sessionStorageService.get(assetService.storageKeys.primaryBP) : '';\n var expToSend = {\n url: sewDashboard,\n experience: assetService.strings.ADD_PROPERTIES,\n cdp: \"\".concat(results.Key),\n userBp: \"\".concat(vm.currentUser.primaryBp),\n firstname: \"\".concat(vm.currentUser.bpFirstName),\n lastname: \"\".concat(vm.currentUser.bpLastName),\n userEmail: \"\".concat(vm.currentUser.emailId),\n customerBp: \"\".concat(customerBp),\n customerBPType: \"\".concat(bpType),\n customerBPOrgName: \"\".concat(orgName),\n customerBPEmail: \"\".concat(vm.currentUser.emailId),\n customerBPFirstName: \"\".concat(customerBpFirstName ? customerBpFirstName : vm.currentUser.bpFirstName),\n customerBPLastName: \"\".concat(customerBpLastName ? customerBpLastName : vm.currentUser.bpLastName)\n };\n sewDashboardService.sitecore.sewDashboard(expToSend).then(function (results) {\n window.location.href = results;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n }\n function showAllAccounts() {\n for (var i = TEN; i < vm.accountsInfo.length; i++) {\n vm.accountsToShow.push(vm.accountsInfo[i]);\n }\n sortByColumn(0);\n vm.showBtn = false;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n function load() {\n vm.show24HrMessage = $rootScope.show24Hour;\n var chekLandLordFlow = sessionStorageService.get(assetService.storageKeys.lanlordIndOrOrg);\n if (chekLandLordFlow && (chekLandLordFlow === _individual || chekLandLordFlow === _organization)) {\n vm.experienceType = 'Landlord';\n } else {\n vm.experienceType = sessionStorageService.get(assetService.storageKeys.experienceAccount);\n }\n vm.experienceType = vm.experienceType ? vm.experienceType : '';\n if (vm.experienceType === _residential) {\n vm.experienceType = assetService.storageKeys.home;\n }\n vm.experienceValue = vm.experienceType;\n if (chekLandLordFlow && (chekLandLordFlow === _individual || chekLandLordFlow === _organization)) {\n vm.IndividualOrg = true;\n vm.loadingSpinner = false;\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\n } else {\n vm.accountsToShow = [];\n vm.selectedAccounts = [];\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS) {\n broadcastService.headerSwitch(assetService.strings.HEADER.NONN);\n } else {\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n }\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (assetService.apiConfig.useLocalHost) {\n _cdpId = $location.search().cdpId;\n _emailId = $location.search().emailId;\n } else {\n _cdpId = vm.currentUser.cdpId;\n _emailId = vm.currentUser.emailId;\n }\n vm.accountsInfo = sessionStorageService.get(assetService.storageKeys.selectedAccounts);\n var countOfAccts = 0;\n var expName = '';\n var ownerBP = '';\n _.forEach(vm.accountsInfo, function (acctGrp) {\n if (acctGrp.GroupedAcc.length > 0) {\n _.forEach(acctGrp.GroupedAcc, function (grpAcct) {\n if (expName !== grpAcct.Experience || grpAcct.OwnerBp && grpAcct.OwnerBp !== ownerBP) {\n expName = grpAcct.Experience;\n ownerBP = grpAcct.OwnerBp ? grpAcct.OwnerBp : '';\n countOfAccts = countOfAccts + parseInt(grpAcct.Count);\n }\n });\n } else {\n countOfAccts += 1;\n }\n });\n vm.accountsCount = countOfAccts || vm.selectedAccounts.length;\n vm.selectedAccounts = sessionStorageService.get(assetService.storageKeys.selectedAccounts);\n _accountSelector = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.newExperiences = sessionStorageService.get(ccAddAccountAssetService.storageKeys.newExperiences);\n vm.relatedBp = sessionStorageService.get(assetService.storageKeys.primaryPartner);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedinBPDetailsAndAssociatedAccountsService.sitecore.getBPDetailsRefreshCache({\n emailId: _emailId,\n cdpId: _cdpId\n }).then(function (result) {\n vm.grouped = true;\n vm.accountsInfo = addAccountServices.groupByJurisdiction(vm.accountsInfo);\n vm.groupedSelectedAccounts = vm.accountsInfo.length;\n vm.accountsToShow = vm.selectedAccounts.slice(0, 10);\n vm.tableSuccess = true;\n vm.loadingSpinner = false;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n vm.grouped = true;\n vm.accountsInfo = addAccountServices.groupByJurisdiction(vm.accountsInfo);\n vm.groupedSelectedAccounts = vm.accountsInfo.length;\n vm.accountsToShow = vm.selectedAccounts.slice(0, 10);\n vm.tableSuccess = true;\n vm.loadingSpinner = false;\n }\n }\n var countLength = vm.accountsCount.toString().length;\n vm.masking = Array(countLength + 1).join('X');\n vm.selectedAccountsData = sessionStorageService.get(assetService.storageKeys.selectedAccounts);\n sessionStorageService.delete(assetService.storageKeys.selectedAccounts);\n if (vm.IndividualOrg) {\n virtualPagePush($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('headLine'), vm.experienceValue, chekLandLordFlow, $('#hdn-toast').attr('addPropertiesHeading'), $('#hdn-toast').attr('confirmation'));\n } else {\n if (vm.accountsCount == 1) {\n virtualPagePush($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('headLine'), vm.experienceValue, $('#hdn-toast').attr('successTitleSingleAccount'), $('#hdn-toast').attr('confirmation'));\n } else {\n virtualPagePushForSymbol($('#hdn-toast').attr('businessFunction'), $('#hdn-toast').attr('headLine'), vm.experienceValue, \"\".concat($('#hdn-toast').attr('successTitleMultipleAccnt'), \" # accounts!\"), $('#hdn-toast').attr('confirmation'));\n }\n }\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n /* ---------------Initialization-------------------*/\n function ccGetUserBPDetails() {\n return ccGetUserBPDetailsService.getUserBPDetails().then(function (result) {\n vm.currentUser = {\n emailId: result.bpData.currentUserLoginEmail ? result.bpData.currentUserLoginEmail : '',\n cdpId: result.bpData.currentUserCdpId ? result.bpData.currentUserCdpId : '',\n primaryBp: result.bpData.primaryBp ? result.bpData.primaryBp : '',\n bpFirstName: result.bpData.firstName ? result.bpData.firstName : '',\n bpLastName: result.bpData.lastName ? result.bpData.lastName : ''\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var init = function init() {\n vm.loadingSpinner = true;\n if (!assetService.apiConfig.useLocalHost) {\n ccGetUserBPDetails().then(function (result) {\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n vm.currentUser = {\n emailId: $location.search().emailId,\n cdpId: $location.search().cdpId,\n primaryBp: $location.search().bpId,\n bpFirstName: $location.search().firsName,\n bpLastName: $location.search().lastName\n };\n load();\n }\n };\n init();\n}\napp.controller('addAccountExperienceSelector', addAccountExperienceSelector);\naddAccountExperienceSelector.$inject = ['$state', '$scope', '$rootScope', 'sessionStorageService', 'assetService', 'broadcastService', 'ccAddAccountAssetService', 'commongaTaggingService', 'getLoggedInUserDetailsService'];\nfunction addAccountExperienceSelector($state, $scope, $rootScope, sessionStorageService, assetService, broadcastService, ccAddAccountAssetService, commongaTaggingService, getLoggedInUserDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _residential = ccAddAccountAssetService.strings.RESIDENTIAL;\n vm.experienceData = '';\n\n /* --------------Global Vars-----------------------*/\n /* --------------Function Declarations-----------------------*/\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n sessionStorageService.delete(assetService.storageKeys.lanlordIndOrOrg);\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS) {\n broadcastService.headerSwitch(assetService.strings.HEADER.NONN);\n } else {\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n }\n vm.webObject = sessionStorageService.get(assetService.strings.WEBOBJECT) ? sessionStorageService.get(assetService.strings.WEBOBJECT) : null;\n if (vm.webObject) {\n $rootScope.webservicePush(vm.webObject);\n }\n vm.experienceData = sessionStorageService.get(assetService.storageKeys.landlordSwitch);\n if ((dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS) && vm.experienceData === 'LandlordPage') {\n vm.experienceData = '';\n sessionStorageService.delete(assetService.storageKeys.landlordSwitch);\n sessionStorageService.set(assetService.storageKeys.addAccountTrack, assetService.storageKeys.addAccountTrack);\n $state.go(ccAddAccountAssetService.addAccountRouteStates.LANDLORD_TRK);\n }\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n vm.findAccount = function (experience) {\n sessionStorageService.delete(assetService.storageKeys.lanlordIndOrOrg);\n sessionStorageService.set(assetService.storageKeys.experienceAccount, experience);\n sessionStorageService.set(assetService.storageKeys.transfertypeAccount, experience === _residential ? \"HOME\" : experience);\n if (experience === assetService.strings.LANDLORD) {\n sessionStorageService.set(assetService.storageKeys.addAccountTrack, assetService.storageKeys.addAccountTrack);\n $state.go(ccAddAccountAssetService.addAccountRouteStates.LANDLORD_TRK);\n } else {\n sessionStorageService.delete(ccAddAccountAssetService.strings.LANDLORD_RTO);\n $state.go(ccAddAccountAssetService.addAccountRouteStates.ADD_ACCOUNT_TRK);\n }\n };\n vm.goTo = function (url) {\n return window.location.href = url;\n };\n /* ---------------Initialization-------------------*/\n var init = function init() {\n if (!$rootScope.currentUserEmailId) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n $rootScope.currentUserEmailId = results.Value;\n }, function (error) {\n console.log(error);\n });\n }\n load();\n };\n init();\n}\napp.controller('addAccountSuccessMultiple', addAccountSuccessMultiple);\naddAccountSuccessMultiple.$inject = ['$log', 'sessionStorageService', 'assetService', 'maintainRelationshipService', 'getLoggedInUserDetailsService'];\nfunction addAccountSuccessMultiple($log, sessionStorageService, assetService, maintainRelationshipService, getLoggedInUserDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.data = {\n action: assetService.serviceActions.maintainRelationship.CRE_REL,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.primaryBP),\n relatedBusinessPartnerId: sessionStorageService.get(assetService.storageKeys.relatedBP),\n cdpid: vm.currentUser.cdpId ? vm.currentUser.cdpId : '',\n email: vm.currentUser.emailId ? vm.currentUser.emailId : ''\n };\n /* --------------Global Vars-----------------------*/\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function load() {\n maintainRelationship(data);\n }\n function maintainRelationship(data) {\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n function init() {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n console.log(error);\n });\n }\n init();\n}\napp.controller('addAccountSuccessSingle', addAccountSuccessSingle);\naddAccountSuccessSingle.$inject = ['$state'];\nfunction addAccountSuccessSingle($state) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Global Vars-----------------------*/\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function load() {\n $state.go('');\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('addTrack', addTrack);\naddTrack.$inject = ['$log', '$state', '$scope', '$rootScope', '$location', 'assetService', 'sessionStorageService', 'profileExperiencesService', 'ccAddAccountAssetService', 'getLoggedInUserDetailsService', 'cookieService'];\nfunction addTrack($log, $state, $scope, $rootScope, $location, assetService, sessionStorageService, profileExperiencesService, ccAddAccountAssetService, getLoggedInUserDetailsService, cookieService) {\n /* --------------Scope Vars-----------------------*/\n var _url = null;\n var vm = this;\n var globalAccountInfo = {};\n\n /* --------------Global Vars-----------------------*/\n vm.moveStorage = {};\n vm.addAccount = {};\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n vm.mainPathStep = '';\n $rootScope.mainBtnActivate = false;\n $rootScope.btnType = true;\n $rootScope.apiValidation = false;\n $rootScope.success = '';\n $rootScope.addShellButtons = true;\n vm.steps = assetService.addAccountSteps;\n vm.overideShell = false;\n vm.setModels = function () {};\n function getProfileExperiences() {\n var paramObj = {};\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n var email = vm.currentUser.emailId;\n var cdpId = vm.currentUser.cdpId ? vm.currentUser.cdpId : '';\n paramObj = {\n emailId: email,\n internalIdentifier: cdpId\n };\n return profileExperiencesService.sitecore.profileExperiences(paramObj).then(function (result) {\n if (result) {\n if (result.MessageText === assetService.replyCodes.SUCCESS || result.MessageText === assetService.replyCodes.Success) {\n var experiences = [];\n var _iterator = _createForOfIteratorHelper(result.profileExperiences),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var experienceEl = _step.value;\n experiences.push(ccAddAccountAssetService.profileTypes[experienceEl.experienceName].CODE);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var saveExperience = result.profileExperiences;\n sessionStorageService.set(ccAddAccountAssetService.storageKeys.getProfileExp, saveExperience);\n sessionStorageService.set(ccAddAccountAssetService.storageKeys.profileExperiences, experiences);\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n var landlordRtoNo = false;\n sessionStorageService.delete(ccAddAccountAssetService.storageKeys.newExperiences);\n var expType = sessionStorageService.get(assetService.storageKeys.experienceAccount);\n var expSubType = sessionStorageService.get(ccAddAccountAssetService.strings.LANDLORD_RTO);\n if (expSubType && expSubType === ccAddAccountAssetService.strings.LANDLORD_RTO_NO) {\n landlordRtoNo = true;\n }\n if (cookieService.getCookie(assetService.storageKeys.addAccCookieVal)) {\n vm.cancelBtnPath = vm.cancelBtnPath + assetService.urlTokens.selectExperience + cookieService.getCookie(assetService.storageKeys.addAccCookieVal);\n }\n if (expType && expType === 'LANDLORD') {\n vm.overideShell = true;\n }\n getProfileExperiences().then(function () {\n if (!landlordRtoNo) {\n $state.go(assetService.addAccountStates.findAccount);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n sessionStorageService.set(assetService.storageKeys.addAccountTrack, assetService.storageKeys.addAccountTrack);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n vm.currentUser = {\n emailId: $location.search().emailId,\n cdpId: $location.search().cdpId\n };\n load();\n }\n };\n $scope.$on(assetService.events.startStopMove, function (data) {\n vm.pathStep = data.path;\n vm.btnActivate = data.btn;\n });\n $scope.$on(assetService.events.classTrack, function (event, data) {\n if (data === 'startTrack.review') {\n vm.mainPathStep = 'review';\n } else if (data === 2 || data !== assetService.addAccountStates.accountsTable && vm.track === 2) {\n $rootScope.$broadcast(assetService.events.shellButton, {\n direction: 'cancel'\n });\n vm.mainPathStep = vm.cyclePath[0].path;\n vm.stepTrack = 0;\n vm.track = 0;\n $rootScope.mainBtnActivate = false;\n $rootScope.apiValidation = false;\n $rootScope.addShellButtons = true;\n $state.go(vm.cyclePath[0].path);\n } else {\n if (vm.stepTrack === 0) {\n $rootScope.mainBtnActivate = false;\n if (vm.track === 0) {\n $state.go(ccAddAccountAssetService.experienceSelector);\n }\n } else if (vm.stepTrack === 2) {\n vm.track = 0;\n vm.stepTrack = 0;\n $rootScope.mainBtnActivate = false;\n $rootScope.apiValidation = false;\n $rootScope.addShellButtons = true;\n $state.go(data);\n }\n if (data === assetService.addAccountStates.findAccount && vm.track !== 1) {\n $rootScope.mainBtnActivate = false;\n $rootScope.$broadcast(assetService.events.shellButton, {\n direction: 'previous'\n });\n }\n vm.mainPathStep = data;\n }\n });\n $scope.$on(assetService.events.changeTrackSelected, function (event, data) {\n var goTo = vm.cyclePath[data.track];\n vm.track = data.track;\n vm.stepTrack = data.step;\n $state.go(goTo.path);\n });\n $scope.$on('verify', function (event, data) {\n vm.cyclePath = data;\n });\n init();\n}\napp.controller('CCaddAccount', CCaddAccount);\nCCaddAccount.$inject = ['$state', '$location'];\nfunction CCaddAccount($state, $location) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Global Vars-----------------------*/\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function load() {\n var stateName = $location.search().state;\n if (stateName) {\n $state.go(stateName);\n } else {\n $state.go(\"addAccount-experienceSelector\");\n }\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('CCAccountSelectorPage', CCAccountSelectorPage);\nCCAccountSelectorPage.$inject = ['$scope', '$window', '$timeout', '$http', '$filter', 'assetService', 'myAccountFactory', 'commongaTaggingService'];\nfunction CCAccountSelectorPage($scope, $window, $timeout, $http, $filter, assetService, myAccountFactory, commongaTaggingService) {\n var _this = this;\n /* --------------Global Vars-----------------------*/\n var vm = this;\n var orderBy = $filter('orderBy');\n var negOne = -1;\n var thirtyTwo = 32;\n vm.accounts = [];\n vm.filteredaccounts = [];\n vm.isuAccount = false;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n\n var searchMatch = function searchMatch(haystack, needle) {\n if (!needle) {\n return true;\n }\n return haystack.toString().toLowerCase().indexOf(needle.toString().toLowerCase()) !== negOne;\n };\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n ;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function emptyAccountGatPush() {\n var heading = $('#GatError').attr('businessFunction');\n var subHead = document.getElementsByClassName('component-header__title')[0];\n if (subHead) {\n subHead = subHead.innerText;\n }\n var rc = 'not-set';\n var errorMessage = \"empty account selector\";\n var cta = \"sign in\";\n attributePush(\"workFlow:\".concat('error ' + heading), \"headline:\".concat(heading), \"subheadline:\".concat(subHead), \"returnCode:\".concat(rc), \"msgHeader:\".concat(errorMessage), \"endpoint:\".concat(assetService.sitecoreEndpoints.GetLoggedinBPDetailsAndAssociatedAccounts));\n virtualPagePush(heading, heading, subHead, cta, 'error', rc);\n }\n vm.setAccounts = function (accounts) {\n if (accounts && accounts.length == 0) {\n emptyAccountGatPush();\n }\n vm.accounts = accounts;\n vm.preSort = accounts;\n if (_this.accounts && _this.accounts[0]) {\n vm.accounts[0].PrimaryAccount = true;\n }\n vm.sortBy('ServiceAddress');\n if (accounts === undefined) {\n vm.errorText = 'AN ERROR HAS OCCURED';\n } else {\n vm.errorText = 'There are no accounts matching your search. We recommend searching by typing an account number, nickname or address.';\n }\n };\n vm.isuAccount = function (isuAccount) {\n vm.isuAccount = isuAccount;\n vm.search();\n if (isuAccount) {\n vm.displayNumber = vm.filteredaccounts.length;\n vm.currentShowMsg = vm.showLessMsg;\n }\n };\n vm.setRequestVerificationToken = function (vt) {\n vm.verificationToken = vt;\n };\n vm.toggleMoreInfo = function (toggleButton) {\n toggleButton.preventDefault();\n var currentToggleButton = angular.element(toggleButton.currentTarget);\n currentToggleButton.attr('aria-pressed', 'true');\n if (vm.currentShowMsg === vm.showLessMsg) {\n vm.showIcon = 'caret-arrow-down';\n vm.currentShowMsg = vm.showAllMsg;\n currentToggleButton.attr('aria-expanded', 'false');\n currentToggleButton.attr('aria-pressed', 'false');\n vm.displayNumber = 5;\n } else {\n vm.showIcon = 'caret-arrow-up';\n vm.currentShowMsg = vm.showLessMsg;\n currentToggleButton.attr('aria-expanded', 'true');\n vm.displayNumber = vm.filteredaccounts.length;\n }\n };\n vm.setShowLabels = function (more, less) {\n vm.showAllMsg = more;\n vm.showLessMsg = less;\n if (vm.isuAccount) {\n vm.currentShowMsg = vm.showLessMsg;\n } else {\n vm.currentShowMsg = vm.showAllMsg;\n }\n vm.showIcon = 'caret-arrow-down';\n };\n vm.toggleMoreInfoOnKeyUp = function (toggleButton) {\n toggleButton.preventDefault();\n if (toggleButton.keyCode === thirtyTwo) {\n vm.toggleMoreInfo(toggleButton);\n }\n };\n\n // init the filtered accounts\n vm.search = function () {\n vm.filteredaccounts = $filter('filter')(vm.accounts, function (account) {\n var myvar = false;\n Object.keys(account).forEach(function (attr) {\n if (account[attr]) {\n if (searchMatch(account[attr], vm.query)) myvar = true;\n }\n });\n return myvar;\n });\n vm.displayNumber = vm.filteredaccounts.length > 10 ? 5 : vm.filteredaccounts.length;\n if (vm.displayNumber >= 5) {\n vm.currentShowMsg = vm.showAllMsg;\n } else {\n vm.currentShowMsg = vm.showLessMsg;\n }\n };\n\n // init the filtered accounts\n vm.goToPrevious = function () {\n window.history.back();\n };\n vm.viewAccount = function (account) {\n $window.location.href = '/my-account/dashboard';\n };\n vm.sortBy = function (propertyName) {\n vm.propertyName = propertyName;\n if (propertyName === 'DueDate') {\n vm.accounts = orderBy(vm.accounts, vm.propertyName, vm.reverse);\n }\n if (propertyName === 'Amount') {\n var compare = function compare(a, b) {\n // Use toUpperCase() to ignore character casing\n var amountA = Number(a.Amount);\n var amountB = Number(b.Amount);\n var comparison = 0;\n if (amountA > amountB) {\n comparison = 1;\n } else if (amountA < amountB) {\n comparison = -1;\n }\n if (!vm.reverse) {\n return comparison;\n }\n return comparison * -1;\n };\n vm.accounts.sort(compare);\n }\n if (propertyName === 'ServiceAddress') {\n vm.accounts = vm.preSort;\n }\n vm.search();\n vm.reverse = !vm.reverse;\n };\n\n /* --------------Event handlers-----------------------*/\n\n var searchAccount = document.getElementById('searchAccount');\n var closeSearch = document.getElementsByClassName('de-form-text__close');\n searchAccount.addEventListener('focus', function (event) {\n event.target.classList.add('de-active');\n });\n closeSearch[0].addEventListener('click', function (event) {\n searchAccount.value = '';\n vm.query = '';\n searchAccount.focus();\n searchAccount.blur();\n vm.search();\n vm.currentShowMsg = vm.showAllMsg;\n vm.showIcon = 'caret-arrow-down';\n });\n searchAccount.addEventListener('blur', function (event) {\n event.target.classList.remove('de-active');\n });\n document.addEventListener('focus', handleInputEvent, true);\n document.addEventListener('blur', handleInputEvent, true);\n function handleInputEvent(event) {\n var parent = event.target.parentElement;\n var input = parent ? parent.querySelector('.de-form-text__input') : '';\n if (input) {\n parent.classList.remove('de-form-text--has-error');\n event.type === 'focus' || input.value ? parent.classList.add('de-form-text--label-above') : parent.classList.remove('de-form-text--label-above');\n if (event.type === 'blur' && input.value === '' && input.hasAttribute('required')) {\n parent.classList.add('de-form-text--has-error');\n }\n }\n }\n}\napp.controller('Balance', Balance);\nBalance.$inject = ['$location', '$rootScope', '$sce', '$scope', '$state', 'assetService', 'commonService', 'getAccountBalanceForRegularAccountService', 'sessionStorageService', 'getLoggedInUserDetailsService', 'ccGetUserAccountsService', 'modalService', 'getAccountEnrollmentEligibilityStatusService', '$filter', 'responseNotificationsService', 'broadcastService'];\nfunction Balance($location, $rootScope, $sce, $scope, $state, assetService, commonService, getAccountBalanceForRegularAccountService, sessionStorageService, getLoggedInUserDetailsService, ccGetUserAccountsService, modalService, getAccountEnrollmentEligibilityStatusService, $filter, responseNotificationsService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n $scope.formatTotalAmount = formatTotalAmount;\n $scope.accountsAmount = 0;\n $scope.selectedAccountsAmount = 0;\n var _globalSelectedAcc;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.accountStatusByCA = [];\n vm.balanceData = {\n bills: [],\n cashBills: []\n };\n vm.balanceForRegularAccount = '';\n vm.balanceSpinner = true;\n vm.balanceStorage = {};\n vm.billOptions = [];\n vm.billsQuantity = 0;\n vm.buttonContinue = false;\n vm.checkedBills = [];\n vm.checkUp = false;\n vm.eBillEnrollmentByCA = {};\n vm.autoPayEligibleByCA = {};\n vm.invoiceListByCA = {};\n vm.pastDue = [];\n vm.paymentDue = [];\n vm.reviewPay = false;\n vm.selectedAccounts = [];\n vm.selectedDueDates = [];\n vm.scheduled = [];\n vm.totalAmount = '0.00';\n vm.msgPriority = false;\n vm.msgCount = 0;\n vm.isCorrectSelection = true;\n vm.selectAllStatus = true;\n vm.atLeastOneSelected = false;\n vm.autoPayExtendedDate = undefined;\n vm.message = '';\n vm.roleBase = {};\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n $rootScope.fromBillsPage = false;\n /* --------------Function Declarations-----------------------*/\n vm.balanceLoading = balanceLoading;\n vm.beautifyStatus = beautifyStatus;\n vm.formatTotalAmount = formatTotalAmount;\n vm.init = init;\n vm.nextStep = nextStep;\n vm.onCancel = onCancel;\n vm.previous = previous;\n vm.sumAll = sumAll;\n\n /* --------------Function Definitions-----------------------*/\n function card(eBillEnrolled, autoPayEligible, accountNickname, accountNumber, address, dueDate, message, messagePriority, cashOnly, payNowStatus, amount) {\n this.eBillEnrolled = eBillEnrolled;\n this.autoPayEligible = autoPayEligible;\n this.accountNickname = accountNickname;\n this.accountNumber = accountNumber;\n this.address = address;\n this.dueDate = dueDate;\n this.message = message;\n this.messagePriority = messagePriority;\n this.cashOnly = cashOnly;\n this.payNowStatus = payNowStatus;\n this.amount = amount;\n }\n $scope.$on(assetService.events.loadBills, function () {\n vm.listOfAccounts = sessionStorageService.get(assetService.storageKeys.accountLength);\n vm.bpData = sessionStorageService.set(assetService.storageKeys.bpDataPayBill);\n setModels();\n });\n function balanceLoading(value) {\n vm.balanceSpinner = value;\n }\n function beautifyStatus(index, value) {\n vm.pastDue[index] = value.toLowerCase() === assetService.balanceStatuses.PAST_DUE;\n vm.paymentDue[index] = value.toLowerCase() === assetService.balanceStatuses.PAYMENT_DUE;\n vm.scheduled[index] = value.toLowerCase() === assetService.balanceStatuses.SCHEDULED;\n return value;\n }\n function sumAll(value) {\n vm.totalAmount = 0;\n vm.billsQuantity = 0;\n vm.selectedAccounts = [];\n vm.balanceData.bills.forEach(function (bill, index) {\n if (value === assetService.strings.ALL) {\n if (vm.checkedBills.All === true) {\n vm.checkedBills[index] = true;\n vm.selectedAccounts.push(bill); // For SessionStorage\n } else if (vm.checkedBills.All === false) {\n vm.checkedBills[index] = false;\n }\n } else if (vm.checkedBills[index] === true) {\n vm.selectedAccounts.push(bill);\n if (vm.billsQuantity + 1 === vm.balanceData.bills.length && vm.selectAllStatus === true) {\n vm.checkedBills.All = true;\n } else {\n vm.checkedBills.All = false;\n }\n }\n if (vm.checkedBills[index] === true) {\n vm.billsQuantity += 1;\n if (bill.amount > 0) {\n vm.totalAmount += Number(bill.amount);\n }\n }\n });\n checkBoxStatusChange();\n /*_.forEach(vm.balanceData.bills, (bill) => {\r\n if (value === assetService.strings.ALL && bill.messagePriority === 2000) {\r\n vm.msgPriority = true;\r\n }\r\n });*/\n\n if (vm.billsQuantity !== 0 && vm.isCorrectSelection === true) {\n vm.buttonContinue = true;\n } else {\n vm.buttonContinue = false;\n }\n $scope.selectedAccountsAmount = vm.billsQuantity;\n vm.totalAmount = vm.totalAmount.toFixed(2);\n }\n function checkBoxStatusChange() {\n vm.atLeastOneSelected = !!_.find(vm.checkedBills, function (check) {\n return check === true;\n });\n var atLeastOneValid = !!_.find(vm.balanceData.bills, function (bill, index) {\n return vm.checkedBills[index] && bill.payNowStatus !== 'IfCashOnly';\n });\n vm.isCorrectSelection = vm.checkedBills.All || atLeastOneValid;\n vm.msgCount = 0;\n _.forEach(vm.balanceData.bills, function (bill, index) {\n if (vm.checkedBills[index] && vm.balanceData.bills[index].messagePriority === 1000) {\n vm.msgCount += 1;\n }\n });\n }\n function storeAndGo(state) {\n // emit Variable, emit value and state\n // Add data to Storage before $emit\n vm.balanceStorage.totalAmount = vm.totalAmount;\n vm.balanceStorage.billsQuantity = vm.billsQuantity;\n vm.balanceStorage.selectedAccounts = vm.selectedAccounts;\n vm.balanceStorage.accountStatusByCA = vm.accountStatusByCA;\n vm.balanceStorage.currentUser = vm.currentUser;\n // vm.balanceStorage.newTotalAmount = undefined;\n vm.balanceStorage.newTotalAmount = parseFloat(vm.totalAmount);\n if (vm.listOfAccounts) {\n vm.balanceStorage.globalSelectedAccount = {\n accountNumber: vm.listOfAccounts[0].accountNum,\n businessPartner: vm.listOfAccounts[0].primaryBp,\n payerFirstName: vm.listOfAccounts[0].firstName,\n payerLastName: vm.listOfAccounts[0].lastName\n };\n }\n if (vm.reviewPay === true) {\n // Run just if came back and edit the selected bills\n vm.balanceStorage.reviewPay = true;\n vm.balanceStorage.totalNoWarmth = vm.totalAmount;\n // vm.balanceStorage.newAmounts = undefined;\n vm.balanceStorage.newTotalAmount = parseFloat(vm.totalAmount);\n if (vm.balanceStorage.shareWarmth !== undefined) {\n vm.balanceStorage.newTotalAmount = parseFloat(vm.totalAmount) + vm.balanceStorage.shareWarmth;\n }\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $state.go(state);\n }\n function nextStep() {\n if (vm.reviewPay) {\n storeAndGo(assetService.balanceRouteStates.FORM_TO_PAY);\n } else {\n storeAndGo(assetService.balanceRouteStates.REVIEW_PAY);\n }\n }\n function onCancel(event) {\n event.preventDefault();\n event.stopPropagation();\n var redirectionLink = event.currentTarget.attributes.href.value;\n window.location.href = redirectionLink;\n }\n function previous() {\n $rootScope.fromBillsPage = true;\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\n }\n function deleteAllSelected() {\n vm.buttonContinue = false;\n vm.checkedBills = [];\n vm.totalAmount = '0.00';\n vm.billsQuantity = 0;\n vm.reviewPay = false;\n vm.balanceStorage = {};\n }\n function formatTotalAmount(amount) {\n sessionStorageService.set('filterAmountLength', []);\n sessionStorageService.set('savedOtherAmount', false);\n sessionStorageService.delete('lengthError');\n amount = Number.parseFloat(amount) || 0;\n var formattedAmount = String(amount).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '';\n } else if (formattedAmount[0].indexOf('-') >= 0) {\n lessThanZero = '-';\n }\n return $sce.trustAsHtml(\"$\".concat(lessThanZero).concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function setModels() {\n var promises = [];\n if (vm.listOfAccounts.length <= vm.accountsCount) {\n _globalSelectedAcc = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var _eligibilityStatusData = sessionStorageService.get(assetService.storageKeys.eligibilityStatusData);\n var _skipEligibilityStatusApiCall = vm.listOfAccounts.length === 1 && _eligibilityStatusData;\n promises.push(getAccountBalanceForRegularAccount({\n accountList: [{\n contractAccountNumber: _globalSelectedAcc.accountSelected.accountNum,\n zipCode: _globalSelectedAcc.accountSelected.zipCode\n }]\n }));\n if (!_skipEligibilityStatusApiCall) {\n if (_eligibilityStatusData) sessionStorageService.delete(assetService.storageKeys.eligibilityStatusData);\n _.forEach(vm.listOfAccounts, function (contractAccount) {\n promises.push(getAccountEnrollmentEligibilityStatus({\n contractAccountId: contractAccount.accountNum\n }));\n });\n }\n } else {\n _globalSelectedAcc = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n promises.push(getAccountBalanceForRegularAccount({\n accountList: [{\n contractAccountNumber: _globalSelectedAcc.accountSelected.accountNum,\n zipCode: _globalSelectedAcc.accountSelected.zipCode\n }]\n }));\n promises.push(getAccountEnrollmentEligibilityStatus({\n contractAccountId: _globalSelectedAcc.accountSelected.accountNum\n }));\n }\n commonService.executePromises(promises).then(function () {\n // merge the data from GetInvoiceList & getAccountBalance by contractAccountNumber\n // should have all the data you need for the display\n if (vm.listOfAccounts.length <= vm.accountsCount) {\n _.forEach(vm.listOfAccounts, function (account) {\n var accountStatus = _.filter(vm.accountStatusByCA, function (accountStatus) {\n return accountStatus.contractAccountNumber == account.accountNum;\n });\n var eBillEnrolled = vm.eBillEnrollmentByCA[account.accountNum] || {};\n var autoPayEligible = vm.autoPayEligibleByCA[account.accountNum];\n vm.payNowStatus = 'Normal';\n if (accountStatus[0].noCardsInd === 'T') {\n vm.payNowStatus = 'IfNoCard';\n }\n if (accountStatus[0].noCheckDraftInd === 'T') {\n vm.payNowStatus = 'IfNoChecks';\n }\n if (accountStatus[0].accountStatus === 'A' || accountStatus[0].accountStatus === 'I' && accountStatus[0].totalDueDlrs > 0) {\n var invoiceDate;\n if (accountStatus[0].currentDueDate) {\n invoiceDate = String(accountStatus[0].currentDueDate);\n } else if (accountStatus[0].priorDueDate) {\n invoiceDate = String(accountStatus[0].priorDueDate);\n }\n var dataRow = new card(eBillEnrolled, autoPayEligible, account.nickname, account.accountNum, account.address, moment(invoiceDate).format('MM/DD/YYYY'), accountStatus[0].messageList[0].message, accountStatus[0].messageList[0].messagePriority, accountStatus[0].cashOnly === 'T', vm.payNowStatus, accountStatus[0].totalDueDlrs || 0);\n if (!dataRow.cashOnly && vm.payNowStatus !== 'IfNoChecks') {\n vm.balanceData.bills.push(dataRow);\n } else {\n vm.balanceData.cashBills.push(dataRow);\n }\n }\n });\n vm.balanceData.bills.sort(function (a, b) {\n return a.messagePriority - b.messagePriority;\n });\n vm.balanceData.cashBills.sort(function (a, b) {\n return a.messagePriority - b.messagePriority;\n });\n } else {\n _globalSelectedAcc = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var accountStatus = _.filter(vm.accountStatusByCA, function (accountStatus) {\n return accountStatus.contractAccountNumber == _globalSelectedAcc.accountSelected.accountNum;\n });\n var eBillEnrolled = vm.eBillEnrollmentByCA[_globalSelectedAcc.accountSelected.accountNum] || {};\n var autoPayEligible = vm.autoPayEligibleByCA[_globalSelectedAcc.accountSelected.accountNum];\n vm.payNowStatus = 'Normal';\n if (accountStatus[0].cashOnly === 'T') {\n vm.payNowStatus = 'IfCashOnly';\n vm.selectAllStatus = false;\n } else {\n if (accountStatus[0].noCardsInd === 'T') {\n vm.payNowStatus = 'IfNoCard';\n }\n if (accountStatus[0].noCheckDraftInd === 'T') {\n vm.payNowStatus = 'IfNoChecks';\n }\n }\n if (accountStatus[0].accountStatus === 'A' || accountStatus[0].accountStatus === 'I' && accountStatus[0].totalDueDlrs > 0) {\n var invoiceDate;\n if (accountStatus[0].currentDueDate) {\n invoiceDate = String(accountStatus[0].currentDueDate);\n } else if (accountStatus[0].priorDueDate) {\n invoiceDate = String(accountStatus[0].priorDueDate);\n }\n var dataRow = new card(eBillEnrolled, autoPayEligible, _globalSelectedAcc.accountSelected.nickname, _globalSelectedAcc.accountSelected.accountNum, _globalSelectedAcc.accountSelected.address, moment(invoiceDate).format('MM/DD/YYYY'), accountStatus[0].messageList[0].message, accountStatus[0].messageList[0].messagePriority, accountStatus[0].cashOnly === 'T', vm.payNowStatus, accountStatus[0].totalDueDlrs || 0);\n vm.balanceData.bills.push(dataRow);\n }\n }\n balanceLoading(false);\n $scope.accountsAmount = vm.listOfAccounts.length;\n if (vm.listOfAccounts.length > 1 && vm.listOfAccounts.length <= vm.accountsCount) {\n _globalSelectedAcc = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.balanceData.bills.forEach(function (element, index) {\n if (element.accountNumber === _globalSelectedAcc.accountSelected.accountNum) {\n vm.checkedBills[index] = true;\n }\n });\n sumAll(_globalSelectedAcc.accountSelected.id);\n broadcastService.stopFormToPaySpinner(false);\n $state.go(assetService.balanceRouteStates.BILLS);\n } else {\n vm.checkedBills.All = true;\n sumAll(assetService.strings.ALL);\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\n }\n });\n function getAccountBalanceForRegularAccount(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n if (result.getAccountAndBillingInfoResList.length > 0) {\n var contractAccount = data.accountList[0].contractAccountNumber;\n vm.accountStatusByCA = result.getAccountAndBillingInfoResList;\n if (skipEligibilityStatusApiCall) {\n parseEnrollmentEligibilityStatusResult(eligibilityStatusData, {\n contractAccountId: contractAccount.accountNum\n });\n }\n }\n }\n // error => {\n // responseNotificationsService.errorResponse({\n // vehicle: assetService.strings.TOAST,\n // message: error && error.message ? error.message : '',\n // pageTitle: assetService.strings.PAY_MY_BILL,\n // });\n // },\n );\n }\n function getAccountEnrollmentEligibilityStatus(data) {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(data).then(function (result) {\n parseEnrollmentEligibilityStatusResult(result.d.Inp_Prog.results[0], data);\n }, function (error) {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n }\n function parseEnrollmentEligibilityStatusResult(eligibilityStatusData, data) {\n vm.programs = [];\n vm.programs = _.filter(_.map(eligibilityStatusData.Prog_Res.results, function (item) {\n return {\n name: assetService.billingAndPaymentPrograms[item.ProgName],\n status: item.EligibilityStatus.toUpperCase(),\n code: item.ProgName.toUpperCase()\n };\n }), function (item) {\n return item.status !== vm.ineligible && item.code == 'ELBILL';\n });\n if (data.contractAccountId === eligibilityStatusData.Account) {\n vm.autoPayEligibleByCA[data.contractAccountId] = false;\n _.forEach(eligibilityStatusData.Prog_Res.results, function (item) {\n if (item.EligibilityStatus === 'Enrolled' && item.ProgName === 'DIRDEB') {\n vm.autoPayEligibleByCA[data.contractAccountId] = true;\n vm.autoPayExtendedDate = moment(item.EnrolledDateStr).format('MM/DD/YYYY');\n }\n });\n }\n vm.eBillEnrollmentByCA[data.contractAccountId] = vm.programs.length > 0;\n }\n }\n function load() {\n vm.orderBy = 'messagePriority';\n vm.sortAsc = true;\n if ($location.search().paynow) {\n // if the user clicked on Pay Now button from dashboard\n var accountDataSelected = sessionStorageService.get(assetService.storageKeys.dashboard.payNowData);\n vm.totalAmount = accountDataSelected.totalAmount;\n vm.billsQuantity = accountDataSelected.billsQuantity;\n vm.selectedAccounts = accountDataSelected.selectedAccounts;\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\n } else {\n var data = {};\n if (assetService.apiConfig.useLocalHost) {\n data = {\n businessPartnerId: $location.search().businessPartnerId,\n // Get Primary Bp\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpId: $location.search().cdpId // Get Primary Bp\n };\n } else {\n data = {\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId\n };\n }\n ccGetUserAccountsService.getUserAccounts(data).then(function (results) {\n if (results.accounts.length > 0) {\n var unqAccounts = _.uniq(results.accounts, function (account) {\n return account.accountNum;\n });\n var accounts = _.filter(unqAccounts, function (account) {\n return account.experience !== assetService.strings.MASS_MARKET && !account.prepaid && account.status !== 'Closed';\n });\n vm.listOfAccounts = accounts;\n vm.bpData = results.bpData;\n if (vm.listOfAccounts.length > 1 && vm.listOfAccounts.length <= 20) {\n if (sessionStorageService.get(assetService.storageKeys.eligibilityStatusData)) sessionStorageService.delete(assetService.storageKeys.eligibilityStatusData);\n sessionStorageService.set(assetService.storageKeys.accountLength, vm.listOfAccounts);\n sessionStorageService.set(assetService.storageKeys.bpDataPayBill, vm.bpData);\n balanceLoading(false);\n $state.go(assetService.balanceRouteStates.HOW_TO_PAY);\n } else {\n sessionStorageService.set(assetService.storageKeys.accountLength, vm.listOfAccounts);\n setModels();\n }\n }\n });\n }\n }\n $scope.$on(assetService.balanceEvents.EDIT_BILLS, function () {\n vm.reviewPay = true;\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n });\n $scope.$on(assetService.strings.CANCELLING, function () {\n deleteAllSelected();\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n if (window.location.pathname === '/my-account/pay-my-bill' && vm.roleBase.viewerRole) {\n window.location.href = '/my-account/dashboard';\n }\n vm.accountsCount = 20;\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('SpeedPayIframeModal', SpeedPayIframeModal);\nSpeedPayIframeModal.$inject = ['$modalInstance', 'speedpayUrl'];\nfunction SpeedPayIframeModal($modalInstance, speedpayUrl) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Global Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n vm.url = speedpayUrl;\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('BillingAndPaymentProgramsController', BillingAndPaymentProgramsController);\nBillingAndPaymentProgramsController.$inject = ['assetService', 'commonService', 'getAccountEnrollmentEligibilityStatusService', 'getAccountBalanceForRegularAccountService', 'getFixedBillDetailsService', 'checkEligibilityForPrepaidService', 'getBudgetBillingHistoryService', 'sessionStorageService', 'prepaidService', 'getInvoiceListService', 'getLoggedInUserDetailsService', '$rootScope', '$scope', 'cookieService', '$window', 'commongaTaggingService', '$location', 'componentStateHandler', 'getPaymentHistoryService', 'accountSearchService'];\nfunction BillingAndPaymentProgramsController(assetService, commonService, getAccountEnrollmentEligibilityStatusService, getAccountBalanceForRegularAccountService, getFixedBillDetailsService, checkEligibilityForPrepaidService, getBudgetBillingHistoryService, sessionStorageService, prepaidService, getInvoiceListService, getLoggedInUserDetailsService, $rootScope, $scope, cookieService, $window, commongaTaggingService, $location, componentStateHandler, getPaymentHistoryService, accountSearchService) {\n var _this = this;\n /**\r\n * Scope Vars\r\n */\n var _globalAccountInfo = null;\n var data = {};\n var _disable = false;\n var _status = null;\n var _newProgram = {};\n var _prepaidData = {};\n var _prepaid = {\n name: prepaidService.strings.NAME,\n code: prepaidService.strings.CODE\n };\n var _startedFromWatcher = false;\n var _startedFromScope = false;\n var _elbill = assetService.strings.ELBILL;\n var _fixbil = assetService.strings.FIXEDBILL;\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.fixedBillAmount = 0;\n vm.renewalDate = null;\n vm.isBillGenerated = false;\n vm.PB_BigPadding = true;\n vm.PB_Description = assetService.strings.PAPERLESS_BILLING.DESCRIPTION;\n vm.PB_LinkText = undefined;\n vm.PB_ClickEnroll = undefined;\n vm.PB_ToggleComponent = false;\n vm.PB_ManageButton = assetService.strings.MANAGE;\n vm.loadingSpinner = true;\n vm.dataTable = [];\n vm.programs = [];\n vm.enrolled = 'ENROLLED';\n vm.eligible = 'ELIGIBLE';\n vm.ineligible = 'INELIGIBLE';\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.numberOfMonths = '12';\n vm.recalculationDate = '';\n vm.billingAmount = '';\n vm.currentUser = {}; // Get RequestedBy Value\n vm.AUTPAY = assetService.billingAndPaymentProgramsCodes.AUTPAY;\n vm.DIRDEB = assetService.billingAndPaymentProgramsCodes.DIRDEB;\n vm.ineligiblePaperless = false;\n vm.enrolledPYODD = false;\n vm.enrolledPYDDDateChange = false;\n vm.orgBP = '';\n vm.orgName = '';\n vm.ShowBudBil = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.storageDeEnrollProgram = assetService.storageKeys.Billing_And_Paiment_Programs.deEnrollProgram;\n vm.isEnrolledInBudgetBilling = isEnrolledInBudgetBilling;\n vm.goToPage = goToPage;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.accountSearch = accountSearch;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // if (_startedFromScope && !vm.showFailedState) {\n // _startedFromWatcher = true;\n // vm.loadingSpinner = true;\n // load();\n // }\n vm.loadingSpinner = true;\n sessionStorageService.delete(assetService.storageKeys.organizationBP);\n init();\n });\n $scope.$on(assetService.events.executeAnalyticsOnParent, function (event, defaults) {\n var analytics = $scope.analytics;\n if (defaults && analytics && analytics.paperlessBilling) {\n var arrayElements = analytics.paperlessBilling.concat(defaults);\n attributePush.apply(_this, arrayElements);\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n function setModels() {\n vm.programs = _.filter(vm.programs, function (program) {\n return program.status !== vm.ineligible;\n });\n vm.programs.forEach(function (program) {\n // eslint-disable-next-line no-param-reassign\n program.display = true;\n if (program.code === 'FIXBIL' && vm.viewerRole) {\n // eslint-disable-next-line no-param-reassign\n program.display = false;\n }\n if (program.code === 'PREPAID' && vm.viewerRole) {\n // eslint-disable-next-line no-param-reassign\n program.display = false;\n }\n if ((program.status === vm.eligible || program.status === vm.enrolled) && program.code === 'ELBILL') {\n // eslint-disable-next-line no-param-reassign\n program.display = false;\n }\n });\n vm.loadingSpinner = false;\n }\n $rootScope.$on(vm.storageDeEnrollProgram, function () {});\n function getRole() {\n switch (_globalAccountInfo.accountSelected.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function accountSearch() {\n return accountSearchService.sitecore.accountSearch({\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n dataSource: assetService.strings.ISU\n }).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\n vm.orgName = results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\n if (vm.orgName) {\n vm.orgBP = results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\n sessionStorageService.set(assetService.storageKeys.organizationBP, vm.orgBP);\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function accountFixedBillDetails(param) {\n return getFixedBillDetailsService.sitecore.getFixedBillDetails({\n contractAccountId: param.contractAccountId\n }).then(function (result) {\n var fixedBillDetails = result.d.ReqCA.results[0];\n if (fixedBillDetails.FixedBillAmount) {\n vm.fixedBillAmount = parseFloat(fixedBillDetails.FixedBillAmount);\n } else {\n vm.data.fixedBill = 0.0;\n }\n vm.renewalDate = fixedBillDetails.RenewalDate ? moment(fixedBillDetails.RenewalDate).format('MMMM YYYY') : null;\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function load() {\n $window.scrollTo(0, 0);\n if (assetService.apiConfig.useLocalHost) {\n data = {\n contractAccountId: $location.search().contractAccountId\n };\n } else {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var moveInDate = new Date(_globalAccountInfo.accountSelected.ActiveDate).getTime();\n var currentDate = new Date().getTime();\n vm.ShowBudBil = moveInDate <= currentDate;\n var requestedBy = $rootScope.currentUserEmailId; // Get RequesteBy value\n if (_globalAccountInfo.accountSelected.accountNum) {\n var contractAccountId = _globalAccountInfo.accountSelected.accountNum;\n sessionStorageService.set(assetService.storageKeys.contractAccountId, contractAccountId);\n var businessPartnerId = _globalAccountInfo.accountSelected.bpNumber;\n sessionStorageService.set(assetService.storageKeys.businessPartnerId, businessPartnerId);\n data = {\n contractAccountId: contractAccountId,\n requestedBy: requestedBy\n };\n }\n getRole();\n }\n accountSearch();\n var zipCode = assetService.apiConfig.useLocalHost ? $location.search().zipCode : _globalAccountInfo.accountSelected.zipCode;\n var promises = [];\n var dataObj = {\n contractAccountId: data.contractAccountId,\n businessPartner: vm.businessPartnerId,\n invoiceId: null,\n EmailID: $rootScope.currentUserEmailId,\n userId: $rootScope.currentUserCdpId,\n requestedBy: $rootScope.currentUserEmailId //Get RequestedBy Value\n };\n promises.push(getAccountBalance({\n accountList: [{\n contractAccountNumber: data.contractAccountId,\n zipCode: zipCode\n }]\n }));\n promises.push(getAccountEnrollmentEligibilityStatus(data));\n promises.push(getPayments(dataObj));\n commonService.executePromises(promises).then(function () {\n var qPromises = [];\n if (vm.enrolledInFixedBill) {\n qPromises.push(accountFixedBillDetails(data));\n }\n var premiseId = assetService.apiConfig.useLocalHost ? $location.search().premiseId : _globalAccountInfo.accountSelected.premiseID;\n var businessPartnerId = assetService.apiConfig.useLocalHost ? $location.search().businessPartnerId : _globalAccountInfo.accountSelected.bpNumber;\n if (premiseId) {\n qPromises.push(checkEligibilityForPrepaid({\n premiseNumber: premiseId,\n businessPartner: businessPartnerId\n }));\n commonService.executePromises(promises).then(function () {\n setModels();\n }, function () {});\n } else {\n commonService.executePromises(promises).then(function () {\n _newProgram = {\n name: _prepaid.name,\n code: _prepaid.code,\n status: vm.ineligible,\n disable: true\n };\n _prepaidData = {\n status: vm.ineligible\n };\n vm.programs.push(_newProgram);\n setModels();\n }, function () {});\n }\n });\n function getAccountBalance(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n console.log(result.getAccountAndBillingInfoResList[0].cashOnly);\n vm.paynowStatus = !(result.getAccountAndBillingInfoResList[0].cashOnly === 'T' || result.getAccountAndBillingInfoResList[0].noCheckDraftInd === 'T');\n }, function (error) {\n return componentStateHandler.failedState(vm);\n });\n }\n function getPayments(dataObj) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(function (result) {\n var paymentsData = result.d.Req_Inp.results[0].Inp_Res.results;\n var scheduledPayItem = _.filter(paymentsData, function (item) {\n if (item.Payment_Status == 'SCHEDULED' && item.Payment_Method == 'ACH') {\n var scheduledDate = moment(item.Payment_Due_Date).utc().format('MM/DD/YYYY');\n vm.isBillGenerated = new Date(scheduledDate).getTime() > new Date().getTime();\n vm.nextDueDate = scheduledDate;\n return item;\n }\n });\n sessionStorageService.set(assetService.storageKeys.nextBillingInfo, [vm.isBillGenerated, vm.nextDueDate]);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getInvoiceList(data) {\n var params = {\n contractAccountId: data\n };\n return getInvoiceListService.sitecore.getInvoiceList(params).then(function (result) {\n if (result) {\n var _data = result.d.Inp_Req.results[0].Account_Invoice.results;\n if (_data && _data.length > 0) {\n var invoiceListArray = _.map(_data, function (o) {\n return {\n invoiceId: o.InvId,\n billDate: o.InvDate,\n billingDays: moment(o.BillEndDate).diff(moment(o.BillStartDate), 'days'),\n billStartDate: o.BillStartDate,\n billEndDate: o.BillEndDate,\n dueDate: o.DueDate\n };\n });\n var invoiceArray = _.orderBy(invoiceListArray, ['billDate'], ['desc', 'asc']);\n vm.isBillGenerated = new Date(invoiceArray[0].dueDate).getTime() > new Date().getTime();\n vm.nextDueDate = moment(invoiceArray[0].dueDate).utc().format('MM/DD/YYYY');\n sessionStorageService.set(assetService.storageKeys.nextBillingInfo, [vm.isBillGenerated, vm.nextDueDate]);\n }\n } else {\n console.log(error);\n componentStateHandler.failedState(vm);\n reject(errorHandlingService.getException(error));\n }\n });\n }\n function getAccountEnrollmentEligibilityStatus(data) {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(data).then(function (result) {\n vm.programs = [];\n vm.programs = _.filter(_.map(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return {\n name: assetService.billingAndPaymentPrograms[item.ProgName],\n status: item.EligibilityStatus.toUpperCase(),\n code: item.ProgName.toUpperCase(),\n planType: setProgramId(item),\n enrolledDate: item.EnrolledDate ? moment(item.EnrolledDate).utc().format('MM/DD/YYYY') : 'XX/XX/XXXX',\n enrolledDateStr: item.EnrolledDateStr,\n pyddaDate: item.PyddaDate\n };\n }), function (item) {\n return item.status !== vm.ineligible;\n });\n var eBill = _.find(vm.programs, function (element) {\n return element.code === _elbill;\n });\n if (!eBill) {\n vm.ineligiblePaperless = true;\n }\n var fixedBill = _.find(vm.programs, function (element) {\n return element.code === _fixbil;\n });\n if (fixedBill && fixedBill.status.toUpperCase() === vm.enrolled) {\n vm.enrolledInFixedBill = true;\n }\n updatePYODDADates();\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function setProgramId(data) {\n var programId = '';\n if (data.ProgName.toUpperCase() === 'BUDBIL') {\n programId = data.ProgramId === 'BBPQ' ? 'Quarterly' : data.ProgramId === 'BBPA' ? 'Annual' : '';\n budgetBillingHistory();\n }\n return programId;\n }\n function budgetBillingHistory() {\n return getBudgetBillingHistoryService.sitecore.budgetBillingHistory({\n contractAccountId: data.contractAccountId,\n numberOfMonths: vm.numberOfMonths,\n requestedBy: $rootScope.currentUserEmailId // Get RequestedBy Value\n }).then(function (result) {\n if (result.d.ReqCA.results[0].Messages.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var budgetBillingResponse = result.d.ReqCA.results[0].BudgetBillingDetails;\n var budgetBillingAmount = _.last(budgetBillingResponse.BudgetBillingAmount.results);\n if (budgetBillingResponse.PlanType == 'BBPQ') {\n vm.recalculationDate = budgetBillingResponse.RecalculationDate ? moment(budgetBillingResponse.RecalculationDate).utc().format('MMMM YYYY') : '';\n } else if (budgetBillingResponse.PlanType == 'BBPA') {\n vm.recalculationDate = \"\".concat(moment().month(Number(budgetBillingAmount.Month) - 1).format('MMMM'), \"\\xA0\").concat(budgetBillingAmount.Year);\n }\n vm.billingAmount = budgetBillingAmount.BudgetBillAmount;\n }\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function checkEligibilityForPrepaid(data) {\n return checkEligibilityForPrepaidService.sitecore.checkEligibilityForPrepaid(data).then(function (result) {\n if (result.d.HeaderToMessageNav.results[0].ReplyCode === assetService.replyCodes.SUCCESS) {\n _status = result.d.HeaderToResponseNav.results[0].EligibilityStatus === true ? vm.eligible : vm.enrolled;\n } else if (result.d.HeaderToMessageNav.results[0].MessageNum === '628') {\n _status = vm.enrolled;\n } else if (result.d.HeaderToMessageNav.results[0].ReplyCode === assetService.replyCodes.ERROR && result.d.HeaderToResponseNav.results[0].EligibilityStatus === false) {\n _status = vm.ineligible;\n _disable = true;\n }\n _newProgram = {\n name: _prepaid.name,\n status: _status,\n code: _prepaid.code,\n disable: _disable\n };\n // if (result.d.HeaderToMessageNav)\n _prepaidData = {\n status: _status\n };\n vm.programs.push(_newProgram);\n setModels();\n sessionStorageService.set(prepaidService.storageKeys.enroll_unenroll, _prepaidData);\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function updatePYODDADates() {\n var programsList = vm.programs || [];\n var pyoddaProgram = _.find(programsList, function (program) {\n return program.code === assetService.billingAndPaymentProgramsCodes.PYODDA;\n });\n if (pyoddaProgram) {\n setDatesToProgram({\n ContractAccount: _globalAccountInfo.accountSelected.accountNum,\n businessPartner: _globalAccountInfo.accountSelected.bpNumber\n }, pyoddaProgram);\n if (pyoddaProgram.status == 'ENROLLED') {\n vm.enrolledPYODD = true;\n }\n }\n }\n function setDatesToProgram(data, program) {\n var onError = function onError() {\n program.currentDueDate = 'XX';\n program.eligibleChangeDate = 'XX/XX/XXXX';\n };\n if (program) {\n if (Date.parse(moment.utc(program.enrolledDateStr).add(1, 'year').format('MM/DD/YYYY')) > Date.parse(moment.utc(new Date()).format('MM/DD/YYYY'))) {\n vm.enrolledPYDDDateChange = true;\n } else {\n vm.enrolledPYDDDateChange = false;\n }\n if (program.pyddaDate.length < 2) {\n program.pyddaDate = \"0\".concat(program.pyddaDate);\n }\n program.currentDueDate = moment.utc(new Date('2020-03-' + program.pyddaDate)).format('Do');\n program.eligibleChangeDate = moment.utc(program.enrolledDateStr).add(1, 'year').format('MM/DD/YYYY');\n }\n }\n }\n function isEnrolledInBudgetBilling() {\n return vm.programs ? vm.programs.some(function (program) {\n return program.code === assetService.billingAndPaymentProgramsCodes.BUDBIL && program.status === vm.enrolled;\n }) : false;\n }\n function goToPage(event, program, operation) {\n event.stopPropagation();\n event.preventDefault();\n var isButtonEnabled = !event.target.attributes.disabled;\n if (isButtonEnabled) {\n switch (program) {\n case 'Paperless Billing':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.ebill.enrollment, true, null, 1, null, null, null);\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.ebill.manage, true, null, 1, null, null, null);\n }\n break;\n case 'Budget Billing':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.enrollment, true, null, 1, null, null, null);\n sessionStorageService.set(assetService.strings.BUTTONTEXT, 'Enroll');\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.manage, true, null, 1, null, null, null);\n sessionStorageService.set(assetService.strings.BUTTONTEXT, 'Manage');\n }\n break;\n case 'Fixed Bill':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill.enrollment, true, null, 1, null, null, null);\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill.manage, true, null, 1, null, null, null);\n }\n break;\n case 'Auto-Pay':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.autoPay.enrollment, true, null, 1, null, null, null);\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.autoPay.manage, true, null, 1, null, null, null);\n }\n break;\n case 'Prepaid':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.prepaid.enrollment, true, null, 1, null, null, null);\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.prepaid.manage, true, null, 1, null, null, null);\n }\n break;\n case 'PYODD':\n if (operation === 'ENROLLMENT') {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.pyodd.enrollment, true, null, 1, null, null, null);\n } else {\n cookieService.setCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.pyodd.manage, true, null, 1, null, null, null);\n }\n break;\n default:\n break;\n }\n $window.scrollTo(0, 0);\n window.location.href = event.target.href;\n }\n }\n /**\r\n * Initialization\r\n */\n function init() {\n if (assetService.apiConfig.useLocalHost) {\n load();\n } else {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n }\n }\n\n //init();\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('BudgetBillingController', BudgetBillingController);\nBudgetBillingController.$inject = ['$log', '$scope', '$rootScope', 'assetService', 'getProposedBudgetAmountForBBPService', 'sessionStorageService', 'accountSearchService', 'commonService', '$window', 'enrollInBillingAndPaymentProgramsService', 'commongaTaggingService', 'getLoggedInUserDetailsService', 'getProductRecommendationsCAREService', 'CareDeleteProductService', 'careFeedbackService'];\nfunction BudgetBillingController($log, $scope, $rootScope, assetService, getProposedBudgetAmountForBBPService, sessionStorageService, accountSearchService, commonService, $window, enrollInBillingAndPaymentProgramsService, commongaTaggingService, getLoggedInUserDetailsService, getProductRecommendationsCAREService, CareDeleteProductService, careFeedbackService) {\n /**\r\n * Scope Vars\r\n */\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.buttonClicked = false;\n vm.showMessage = 0;\n vm.selectPlan = selectPlan;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.contractAccountId = null;\n vm.plans = null;\n vm.planTypes = _objectSpread({}, assetService.planTypes);\n vm.selectedPlanAmount = '';\n vm.currentUser = {}; //Get RequestedBy Value\n vm.selectMessage = function (message) {\n vm.showMessage = vm.showMessage === message ? 0 : message;\n };\n $rootScope.isCareComp = false;\n vm.BBpageError = false;\n $rootScope.BnPpageError = false;\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Function Definitions\r\n */\n function selectPlan(type, event) {\n vm.buttonClicked = true;\n // if (event) {\n // $('.active-button').removeClass('active-button');\n // $(event.currentTarget).addClass('active-button');\n // }\n var goToPage = '';\n var selectedPlanDetails = _.find(vm.plans, function (plan) {\n return plan.BdgAmtCyc === type;\n });\n vm.selectedPlanAmount = _.get(selectedPlanDetails, 'BdgAmt'), sessionStorageService.set(assetService.storageKeys.budgetBilling.selectedPlan, {\n planType: _.get(selectedPlanDetails, 'BdgAmtCyc'),\n amount: _.get(selectedPlanDetails, 'BdgAmt')\n });\n var programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\n vm.dataToEnroll = {\n contractAccountId: globalSelectedAccount.accountNum,\n progName: programName,\n planType: type,\n budgetAmnt: \"\".concat(vm.selectedPlanAmount),\n requestedBy: vm.currentUser.emailId // Get RequestedBy Value\n };\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(vm.dataToEnroll).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\n var requestCare = {\n accountNumber: globalSelectedAccount.accountNum,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: programName\n };\n productRecommendationsCARE(requestCare);\n $scope.$emit('nextStep', 'enrollmentSuccess');\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.BBpageError = true;\n $rootScope.BnPpageError = vm.BBpageError;\n });\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function setModels() {\n $scope.$emit('loadingSpinner', false);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n var accountData = {\n contractAccountId: globalSelectedAccount.accountNum,\n requestedBy: vm.currentUser.emailId //Get RequestedBy Value\n };\n function accountSearch(data) {\n var paramData = {\n contractAccountId: data.contractAccountId\n };\n return accountSearchService.sitecore.accountSearch(paramData).then(function (result) {\n var contractAccounts = _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results, function (item) {\n return {\n contractAccountNo: item.AccountNumber,\n accountNickName: item.AccountNickname,\n mailingAddress: {\n address: item.AccountMailingAddress,\n addressNo: item.AddressNumber,\n city: item.City,\n state: item.State,\n zipCode: item.Zipcode,\n streetAddress: item.StreetName,\n houseNo: item.HouseNum,\n poBox: item.PoBox,\n unit: item.Unit\n }\n };\n });\n vm.accountData = _.find(contractAccounts, function (account) {\n return account.contractAccountNo === globalSelectedAccount.accountNum;\n });\n sessionStorageService.set(assetService.storageKeys.budgetBilling.accountDetails, vm.accountData);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getProposedBudgetAmountForBBP(data) {\n return getProposedBudgetAmountForBBPService.sitecore.getProposedBudgetAmountForBBP({\n contractAccountId: data.contractAccountId,\n requestedBy: data.requestedBy\n }).then(function (result) {\n if (result.d.results[0].BdgAmtToMessage_Nav.results[0].Type === 'S') {\n vm.plans = result.d.results[0].GetBudgetAmtNav.results;\n vm.plans.forEach(function (item) {\n item.BdgAmtDecimal = ('0' + Number((item.BdgAmt + '').split('.')[1])).slice(-2);\n });\n vm.plans = vm.plans.reverse();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var promises = [accountSearch(accountData), getProposedBudgetAmountForBBP(accountData)];\n commonService.executePromises(promises).then(function () {\n setModels();\n });\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n });\n var init = function init() {\n $window.scrollTo(0, 0);\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n\n // Get RequestedBy Value\n // load();\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('BudgetBillingEnrollmentSuccessController', BudgetBillingEnrollmentSuccessController);\nBudgetBillingEnrollmentSuccessController.$inject = ['$scope', 'assetService', 'sessionStorageService', 'broadcastService', '$window', 'commongaTaggingService'];\nfunction BudgetBillingEnrollmentSuccessController($scope, assetService, sessionStorageService, broadcastService, $window, commongaTaggingService) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n\n /**\r\n * Function Declarations\r\n */\n //initialice CARE\n var vm = this;\n vm.planDetails = {};\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.goToPage = goToPage;\n vm.init = init;\n $window.scrollTo(0, 0);\n $scope.$on(assetService.events.careLoad, function (event, data) {\n broadcastService.care(sessionStorageService.get(assetService.events.care));\n });\n var selectedPlan = sessionStorageService.get(assetService.storageKeys.budgetBilling.selectedPlan);\n vm.planDetails = {\n amount: selectedPlan.amount,\n planType: selectedPlan.planType == 'ANNUALLY' ? 'Yearly' : 'Quarterly'\n };\n\n /**\r\n * Function Definitions\r\n */\n function init() {\n broadcastService.headerSwitch('Full');\n }\n $scope.$emit('loadingSpinner', false);\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function goToPage(event) {\n event.stopPropagation();\n event.preventDefault();\n window.location.href = event.target.href;\n }\n}\napp.controller('BudgetBillingManageCreditController', BudgetBillingManageCreditController);\nBudgetBillingManageCreditController.$inject = ['$log', '$scope', 'assetService', 'getBudgetBillingHistoryService', 'genericHelperService', 'sessionStorageService', 'accountSearchService', 'commonService', 'getUsageComparisionService', 'getAccountEnrollmentEligibilityStatusService', 'commongaTaggingService', '$timeout', '$window', 'getLoggedInUserDetailsService', 'getInvoiceListService', 'broadcastService'];\nfunction BudgetBillingManageCreditController($log, $scope, assetService, getBudgetBillingHistoryService, genericHelperService, sessionStorageService, accountSearchService, commonService, getUsageComparisionService, getAccountEnrollmentEligibilityStatusService, commongaTaggingService, $timeout, $window, getLoggedInUserDetailsService, getInvoiceListService, broadcastService) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.accountSearch = {};\n vm.charts = ['mixed-chart-responsive-1', 'mixed-chart-responsive-2', 'mixed-chart-responsive-3', 'mixed-chart-responsive-4'];\n vm.data = {\n recalculationDate: null,\n accruedBalance: null,\n accuredAmountType: null,\n billingAmount: '0',\n planType: null,\n chart: [],\n budgetBillingAmount: [],\n enrollmentEligibilityStatus: {},\n recalculated: '',\n description: '',\n settleUp: '',\n invoiceListData: []\n };\n vm.datasetsChart = [{\n label: 'Budget Billing Amount',\n type: 'line',\n backgroundColor: '#005984',\n borderColor: '#005984',\n borderWidth: 6,\n pointStyle: 'line',\n pointBackgroundColor: '#005984',\n lineTension: 0,\n fill: false,\n data: []\n }, {\n label: 'Actual Billed Amount',\n width: 10,\n type: 'bar',\n backgroundColor: '#54b948',\n data: []\n }];\n vm.dataTable = [];\n vm.dataToGet = {\n propertyName: null,\n propertyValue: null,\n serviceType: null,\n dataType: null,\n accountId: null,\n fromDate: null,\n toDate: null\n };\n vm.labelsChart = [];\n vm.monthNames = [];\n vm.yearNames = [];\n vm.numberOfMonths = '12';\n vm.optionsChart = {\n title: {\n display: false\n },\n tooltips: {\n callbacks: {\n label: function label(tooltipItem, data) {\n return data['datasets'][tooltipItem.datasetIndex].label + ': ' + '$' + Number(tooltipItem.value).toFixed(2);\n }\n }\n },\n scales: {\n yAxes: [{\n scaleLabel: {\n display: true,\n labelString: 'Cost of Units Consumed'\n },\n ticks: {\n suggestedMax: 1000,\n suggestedMin: 0,\n callback: function callback(value) {\n return \"$\".concat(value);\n }\n }\n }],\n xAxes: [{\n barPercentage: 0.4,\n gridLines: {\n color: 'rgba(0, 0, 0, 0)'\n },\n ticks: {\n autoSkip: false,\n maxRotation: 45,\n minRotation: 45\n }\n }]\n },\n legend: {\n display: true,\n position: 'bottom',\n reverse: true,\n labels: {\n usePointStyle: true,\n boxWidth: 5,\n fontColor: 'black'\n },\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }\n };\n vm.currentUser = {}; //Get RequestedBy value\n vm.reviewPlan = {};\n vm.sessionData = {};\n vm.showMessage = 0;\n /**\r\n * Function Declarations\r\n */\n vm.unenrollPage = unenrollPage;\n vm.virtualPagePush = virtualPagePush;\n vm.goToPage = goToPage;\n vm.attributePush = attributePush;\n vm.selectMessage = function (message) {\n vm.showMessage = vm.showMessage === message ? 0 : message;\n };\n vm.invoiceListData = [];\n $scope.$watch('$viewContentLoaded', function () {\n $scope.$emit('loadingSpinner', true);\n $timeout(function () {\n getChartQuarterly();\n $scope.$emit('loadingSpinner', false);\n }, 0);\n });\n\n /**\r\n * Function Definitions\r\n */\n\n function unenrollPage() {\n $window.scrollTo(0, 0);\n $scope.$emit('nextStep', 'unenroll');\n }\n function setDataChart(labelsChart, datasetsCart, optionsChart, id) {\n var setchart = {\n type: 'bar',\n data: {\n labels: labelsChart,\n datasets: datasetsCart\n },\n options: optionsChart\n };\n if (document.getElementById(id)) {\n new Chart(document.getElementById(id), setchart);\n }\n }\n var getChartQuarterly = function getChartQuarterly() {\n var chart = [];\n var label = [];\n var typeEnd = 0;\n for (var i = 0; i < 4; i++) {\n var type = i * 3;\n typeEnd = type + 3;\n chart = genericHelperService.notReferencesArrayObjects(vm.datasetsChart);\n chart[0].data = chart[0].data.slice(type, typeEnd);\n chart[1].data = chart[1].data.slice(type, typeEnd);\n label = vm.labelsChart.slice(type, typeEnd);\n setDataChart(label, chart, vm.optionsChart, \"mixed-chart-responsive-\".concat(i + 1));\n }\n };\n function getChartData() {\n var maxValue = 0;\n //This is for most recent billed months\n var lastIndex = vm.data.chart.length - 1;\n var month = vm.data.chart[lastIndex].Month;\n var year = vm.data.chart[lastIndex].Year;\n for (var i = 11; i >= 0; i--) {\n var itemArray = {\n month: moment(\"\".concat(year, \"/\").concat(month), 'YYYY/MM').subtract(i, 'months').format('MMM'),\n year: moment(\"\".concat(year, \"/\").concat(month), 'YYYY/MM').subtract(i, 'months').format('YYYY')\n };\n vm.monthNames.push(itemArray);\n }\n _.forEach(vm.data.chart, function (item) {\n maxValue = maxValue >= item.Bill_Amt ? maxValue : item.Bill_Amt;\n // maxValue = maxValue >= item.Usage ? maxValue : item.Usage;\n });\n /* This is for past 12month incuding curent month\r\n let i = 11;\r\n for(i ; i >= 0; i--){\r\n var itemArray = {\r\n month : moment().subtract(i, 'months').format('MMM'),\r\n year : moment().subtract(i, 'months').format('YYYY')\r\n }\r\n vm.monthNames.push(itemArray)\r\n }\r\n */\n\n _.forEach(vm.monthNames, function (item, index) {\n vm.labelsChart.push(\"\".concat(item.month, \" \").concat(item.year));\n if (vm.data.chart[index]) {\n var monthABA = moment().month(Number(vm.data.chart[index].Month) - 1).format('MMM');\n var yeaABA = parseInt(vm.data.chart[index].Year);\n var position = findWithAttr(vm.monthNames, 'month', monthABA);\n vm.datasetsChart[1].data[position] = parseFloat(vm.data.chart[index].Bill_Amt).toFixed(2);\n }\n if (vm.data.invoiceListData[index]) {\n var monthBBA = moment().month(Number(vm.data.invoiceListData[index].Month) - 1).format('MMM');\n var yearBBA = moment().year(Number(vm.data.invoiceListData[index].Year)).format('YYYY');\n var _position = findWithAttr(vm.monthNames, 'month', monthBBA, 'year', yearBBA);\n vm.datasetsChart[0].data[_position] = parseFloat(vm.data.invoiceListData[index].BBAmount).toFixed(2);\n }\n });\n /*\r\n //Usage Comparision\r\n if(vm.datasetsChart[1].data.length!=12)\r\n {\r\n vm.datasetsChart[1].data.length=12; \r\n } \r\n //Budgetbillinghistory\r\n if(vm.datasetsChart[0].data.length!=12)\r\n { \r\n vm.datasetsChart[0].data.length=12;\r\n }*/\n\n function findWithAttr(array, attr, value, attr1, value1) {\n for (var _i = 0; _i < array.length; _i += 1) {\n if (array[_i][attr] === value && array[_i][attr1] == value1) {\n return _i;\n }\n }\n return -1;\n }\n vm.datasetsChart[0].data = vm.datasetsChart[1].data[11] ? vm.datasetsChart[0].data : leftoverArray();\n _.forEach(vm.datasetsChart[0].data, function (item, index) {\n if (item == '0.00') {\n vm.datasetsChart[0].data[index] = undefined;\n }\n });\n function leftoverArray() {\n var datasetsChart = [];\n vm.datasetsChart[0].data.splice(-1);\n datasetsChart = vm.datasetsChart[0].data;\n return datasetsChart;\n }\n maxValue *= 2;\n vm.optionsChart.scales.yAxes[0].ticks.suggestedMax = maxValue;\n setDataChart(vm.labelsChart, vm.datasetsChart, vm.optionsChart, 'mixed-chart');\n }\n function setModels() {\n vm.data.planType = vm.data.enrollmentEligibilityStatus.ProgramId;\n vm.data.accruedBalance = vm.data.enrollmentEligibilityStatus.AccruedBalance;\n if (vm.data.accruedBalance > 1) {\n vm.data.accuredAmountType = assetService.strings.DEBIT_BBH;\n } else if (vm.data.accruedBalance < 0) {\n vm.data.accuredAmountType = assetService.strings.CREDIT_BBH;\n vm.data.accruedBalance = vm.data.accruedBalance.substring(1);\n } else if (vm.data.accruedBalance == 0) {\n vm.data.accuredAmountType = assetService.strings.NONE_BBH;\n }\n if (!vm.sessionData) {\n sessionStorageService.set(assetService.storageKeys.budgetBilling.creditOnAccount, vm.data);\n }\n setTableValues(vm.data.planType);\n getChartData();\n getChartQuarterly();\n $scope.$emit('loadingSpinner', false);\n }\n function setTableValues(data) {\n if (data === 'BBPQ') {\n vm.data.recalculated = 'Quartely';\n vm.data.settleUp = 'No';\n vm.data.description1 = 'Your monthly bill may change automatically up or down every three months based on your actual energy use.';\n vm.data.description2 = 'Your payment plan will be reviewed every three months.This quarterly review and adjustment of your budget billing amount prevents the need for a settle-up month.';\n } else if (data === 'BBPA') {\n vm.data.recalculated = 'Annual';\n vm.data.settleUp = 'Yes';\n vm.data.description1 = 'Your monthly bill may change automatically up or down every year based on your actual energy use.';\n vm.data.description2 = 'Your payment plan will be reviewed every year.This Annual review and adjustment of your budget billing amount prevents the need for a settle-up month.';\n } else if (data === 'FPPF') {\n vm.data.recalculated = 'Florida';\n vm.data.description1 = 'Florida Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';\n vm.data.description2 = 'Ut enim ad minim veniam.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';\n } else if (data === 'FPPI') {\n vm.data.recalculated = 'Indiana';\n vm.data.description1 = 'Indiana Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';\n vm.data.description2 = 'Ut enim ad minim veniam.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';\n } else {\n vm.data.recalculated = '';\n vm.data.description1 = '';\n vm.data.description2 = '';\n }\n }\n function load() {\n vm.charts = ['mixed-chart-responsive-1', 'mixed-chart-responsive-2', 'mixed-chart-responsive-3', 'mixed-chart-responsive-4'];\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.businessPartnerId = sessionStorageService.get(assetService.storageKeys.businessPartnerId);\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.budgetBilling.creditOnAccount);\n if (vm.sessionData) {\n vm.data.chart = _.map(vm.sessionData.chart, function (item) {\n return item;\n });\n vm.data.invoiceListData = _.map(vm.sessionData.invoiceListData, function (item) {\n return item;\n });\n vm.data.budgetBillingAmount = _.map(vm.sessionData.budgetBillingAmount, function (item) {\n return item;\n });\n vm.data.enrollmentEligibilityStatus = vm.sessionData.enrollmentEligibilityStatus;\n vm.data.billingAmount = vm.sessionData.billingAmount ? vm.sessionData.billingAmount : '0';\n vm.data.recalculationDate = vm.sessionData.recalculationDate ? vm.sessionData.recalculationDate : '';\n setModels();\n } else {\n var promises = [budgetBillingHistory(), accountEnrollmentEligibilityStatus(), accountSearch()];\n commonService.executePromises(promises).then(function () {\n vm.dataToGet.accountId = vm.contractAccountId;\n if (vm.accountSearch.installationNumber) {\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\n vm.dataToGet.propertyValue = vm.accountSearch.installationNumber;\n } else {\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\n vm.dataToGet.propertyValue = vm.accountSearch.meterNumber;\n }\n if (vm.accountSearch.division === assetService.divisions.ELEC) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.meterNumber = vm.accountSearch.meterNumber;\n vm.dataToGet.meterType = vm.accountSearch.meterType;\n vm.dataToGet.fromDate = moment(\"\".concat(moment().month() + 1, \"/01/\").concat(moment().year() - 1)).format('YYYY-MM-DDTHH:mm:ss');\n vm.dataToGet.toDate = moment(\"\".concat(moment().month() + 1, \"/31/\").concat(moment().year())).format('YYYY-MM-DDTHH:mm:ss');\n usageComparision(vm.dataToGet);\n });\n }\n function getinvoiceList() {\n vm.dataObj = {\n businessPartner: vm.businessPartnerId,\n fromDate: vm.dataToGet.fromDate,\n toDate: vm.dataToGet.toDate,\n cdpId: '',\n invoiceCount: '12',\n contractAccountId: vm.contractAccountId\n };\n return getInvoiceListService.sitecore.getInvoiceList(vm.dataObj).then(function (result) {\n vm.invoiceListData = _.sortBy(result.d.Inp_Req.results[0].Account_Invoice.results, 'DueDate');\n vm.data.invoiceListData = _.map(vm.invoiceListData, function (invoice) {\n return {\n invDateStr: moment(invoice.InvDateStr).format('MM/DD/YY'),\n Month: moment(invoice.InvDateStr).format('MM'),\n Year: moment(invoice.InvDateStr).format('YYYY'),\n BBAmount: invoice.BBAmount\n };\n });\n setModels();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function budgetBillingHistory() {\n return getBudgetBillingHistoryService.sitecore.budgetBillingHistory({\n contractAccountId: vm.contractAccountId,\n numberOfMonths: vm.numberOfMonths,\n requestedBy: vm.currentUser.emailId //Get RequestedBy Value\n }).then(function (result) {\n if (result.d.ReqCA.results[0].Messages.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var budgetBillingResponse = result.d.ReqCA.results[0].BudgetBillingDetails;\n var budgetBillingAmount = _.last(budgetBillingResponse.BudgetBillingAmount.results);\n vm.data.budgetBillingAmount = budgetBillingResponse.BudgetBillingAmount.results;\n if (budgetBillingResponse.PlanType == 'BBPQ') {\n vm.data.recalculationDate = budgetBillingResponse.RecalculationDate ? moment(budgetBillingResponse.RecalculationDate).utc().format('MMMM YYYY') : '';\n } else if (budgetBillingResponse.PlanType == 'BBPA') {\n vm.data.recalculationDate = moment().month(Number(budgetBillingAmount.Month) - 1).format('MMMM') + ' ' + budgetBillingAmount.Year;\n }\n vm.data.billingAmount = budgetBillingAmount.BudgetBillAmount;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountEnrollmentEligibilityStatus() {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.data.enrollmentEligibilityStatus = _.find(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === assetService.billingAndPaymentProgramsCodes.BUDBIL;\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountSearch() {\n return accountSearchService.sitecore.accountSearch({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.accountSearch = {\n installationNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].InstallationNumber,\n meterNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].MeterNumber,\n meterType: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].MeterType,\n division: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].Division\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function usageComparision(data) {\n return getUsageComparisionService.sitecore.getUsageComparision(data).then(function (result) {\n vm.data.chart = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n getinvoiceList();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function goToPage(event) {\n event.stopPropagation();\n event.preventDefault();\n window.location.href = event.target.href;\n }\n var init = function init() {\n //Get RequestedBy Value\n //load();\n // broadcastService.fullHeaderSwitch();\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('BudgetBillingReviewQuarterlyController', BudgetBillingReviewQuarterlyController);\nBudgetBillingReviewQuarterlyController.$inject = ['$log', '$scope', '$rootScope', 'assetService', 'enrollInBillingAndPaymentProgramsService', 'sessionStorageService', 'getProductRecommendationsCAREService', 'CareDeleteProductService', 'careFeedbackService'];\nfunction BudgetBillingReviewQuarterlyController($log, $scope, $rootScope, assetService, enrollInBillingAndPaymentProgramsService, sessionStorageService, getProductRecommendationsCAREService, CareDeleteProductService, careFeedbackService) {\n /**\r\n * Scope Vars\r\n */\n var globalSelectedAccount = null;\n var globalAccountInfo = null;\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.accountDetails = {};\n vm.planDetails = {};\n vm.currentUser = {}; // Get RequestedBy value\n $rootScope.isCareComp = false;\n /**\r\n * Function Declarations\r\n */\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n /**\r\n * Function Definitions\r\n */\n function previousPage() {\n $scope.$emit('nextStep', 'home');\n }\n function nextStep() {\n var programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n contractAccountId: vm.accountDetails.contractAccountNo,\n progName: programName,\n planType: assetService.planTypes.quarterly,\n budgetAmnt: \"\".concat(vm.planDetails.amount),\n requestedBy: vm.currentUser.emailId // Get RequestedBy Value\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\n var requestCare = {\n accountNumber: vm.accountDetails.contractAccountNo,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: programName\n };\n productRecommendationsCARE(requestCare);\n $scope.$emit('nextStep', 'enrollmentSuccess');\n }\n });\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function setModels() {\n var selectedPlan = sessionStorageService.get(assetService.storageKeys.budgetBilling.selectedPlan);\n var accountDetails = sessionStorageService.get(assetService.storageKeys.budgetBilling.accountDetails);\n vm.planDetails = {\n amount: selectedPlan.amount,\n planType: selectedPlan.planType\n };\n vm.accountDetails = {\n accountNickName: accountDetails.accountNickName,\n contractAccountNo: accountDetails.contractAccountNo,\n mailingAddress: _objectSpread({}, accountDetails.mailingAddress)\n };\n vm.accountDetails.mailingAddress.address = globalSelectedAccount.address ? globalSelectedAccount.address : vm.accountDetails.mailingAddress.address;\n $scope.$emit('loadingSpinner', false);\n }\n function load() {\n setModels();\n }\n var init = function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n // Get RequestedBy Value\n // load();\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('BudgetBillingReviewYearlyController', BudgetBillingReviewYearlyController);\nBudgetBillingReviewYearlyController.$inject = ['$log', '$scope', '$rootScope', 'assetService', 'enrollInBillingAndPaymentProgramsService', 'sessionStorageService', 'getProductRecommendationsCAREService', 'CareDeleteProductService', 'careFeedbackService'];\nfunction BudgetBillingReviewYearlyController($log, $scope, $rootScope, assetService, enrollInBillingAndPaymentProgramsService, sessionStorageService, getProductRecommendationsCAREService, CareDeleteProductService, careFeedbackService) {\n /**\r\n * Scope Vars\r\n */\n var globalSelectedAccount = null;\n var globalAccountInfo = null;\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.accountDetails = {};\n vm.planDetails = {};\n vm.currentUser = {}; // Get RequestedBy Value\n $rootScope.isCareComp = false;\n /**\r\n * Function Declarations\r\n */\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n\n /**\r\n * Function Definitions\r\n */\n function previousPage() {\n $scope.$emit('nextStep', 'home');\n }\n function nextStep() {\n var programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n contractAccountId: vm.accountDetails.contractAccountNo,\n progName: programName,\n planType: assetService.planTypes.annual,\n budgetAmnt: \"\".concat(vm.planDetails.amount),\n requestedBy: vm.currentUser.emailId // Get RequestedBy Value\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\n var requestCare = {\n accountNumber: vm.accountDetails.contractAccountNo,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: programName\n };\n productRecommendationsCARE(requestCare);\n $scope.$emit('nextStep', 'enrollmentSuccess');\n }\n });\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function setModels() {\n var selectedPlan = sessionStorageService.get(assetService.storageKeys.budgetBilling.selectedPlan);\n var accountDetails = sessionStorageService.get(assetService.storageKeys.budgetBilling.accountDetails);\n vm.planDetails = {\n amount: selectedPlan.amount,\n planType: selectedPlan.planType\n };\n vm.accountDetails = {\n accountNickName: accountDetails.accountNickName,\n contractAccountNo: accountDetails.contractAccountNo,\n mailingAddress: _objectSpread({}, accountDetails.mailingAddress)\n };\n vm.accountDetails.mailingAddress.address = globalSelectedAccount.address ? globalSelectedAccount.address : vm.accountDetails.mailingAddress.address;\n $scope.$emit('loadingSpinner', false);\n }\n function load() {\n setModels();\n }\n var init = function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n // Get RequestedBy Value\n // load();\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('BudgetBillingUnenrollController', BudgetBillingUnenrollController);\nBudgetBillingUnenrollController.$inject = ['$log', '$scope', '$rootScope', 'assetService', 'commonService', 'apiConfigService', 'budgetBillingFactory', 'enrollInBillingAndPaymentProgramsService', 'sessionStorageService', '$window', 'commongaTaggingService', 'getLoggedInUserDetailsService', 'broadcastService'];\nfunction BudgetBillingUnenrollController($log, $scope, $rootScope, assetService, commonService, apiConfigService, budgetBillingFactory, enrollInBillingAndPaymentProgramsService, sessionStorageService, $window, commongaTaggingService, getLoggedInUserDetailsService, broadcastService) {\n /**\r\n * Scope Vars\r\n */\n var _url = null;\n var widgetUsers = null;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.bBPlans = {};\n vm.dataToDeEnroll = {};\n vm.proceedToDeEnroll = '';\n vm.reviewPlan = {};\n vm.currentUser = {};\n vm.BBpageError = false;\n vm.buttonClicked = false;\n $rootScope.BnPpageError = false;\n\n /**\r\n * Function Declarations\r\n */\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /**\r\n * Function Definitions\r\n */\n function previousPage() {\n $window.scrollTo(0, 0);\n $scope.$emit('nextStep', 'manageCredit');\n broadcastService.headerSwitch('Full');\n }\n function nextStep(event) {\n vm.buttonClicked = true;\n // if (event) {\n // $('.active-button').removeClass('active-button');\n // $(event.currentTarget).addClass('active-button');\n // }\n setDeEnroll();\n function setDeEnroll() {\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(vm.dataToDeEnroll).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\n sessionStorageService.delete(assetService.storageKeys.budgetBilling.creditOnAccount);\n $scope.$emit('nextStep', 'unenrollmentSuccess');\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.BBpageError = true;\n $rootScope.BnPpageError = vm.BBpageError;\n });\n }\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function setModel() {\n vm.reviewPlan.amount = vm.bBPlans.billingAmount;\n vm.reviewPlan.accuredAmount = vm.bBPlans.accruedBalance;\n vm.reviewPlan.decimalaccuredAmount = ('0' + Number((vm.reviewPlan.accuredAmount + '').split('.')[1])).slice(-2);\n vm.reviewPlan.accuredAmountType = vm.bBPlans.accuredAmountType;\n $scope.$emit('loadingSpinner', false);\n }\n function load() {\n broadcastService.headerSwitch('Simple');\n vm.bBPlans = sessionStorageService.get(assetService.storageKeys.budgetBilling.creditOnAccount);\n vm.dataToDeEnroll = {\n contractAccountId: globalSelectedAccount.accountNum,\n progName: assetService.billingAndPaymentProgramsCodes.BUDBIL,\n action: assetService.serviceActions.enrollInBillingAndPaymentPrograms.DEENROL,\n budgetAmnt: vm.bBPlans.billingAmount,\n planType: vm.bBPlans.planType,\n requestedBy: vm.currentUser.emailId //Get RequestedBy Value\n };\n setModel();\n }\n var init = function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n //Get RequestedBy Value\n //load();\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('BudgetBillingUnEnrollmentSuccessController', BudgetBillingUnEnrollmentSuccessController);\nBudgetBillingUnEnrollmentSuccessController.$inject = ['$scope', 'assetService', 'broadcastService', 'sessionStorageService', 'commongaTaggingService', '$window'];\nfunction BudgetBillingUnEnrollmentSuccessController($scope, assetService, broadcastService, sessionStorageService, commongaTaggingService, $window) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n /**\r\n * Function Declarations\r\n */\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.goToPage = goToPage;\n vm.init = init;\n //initialice CARE\n $scope.$on(assetService.events.careLoad, function (event, data) {\n broadcastService.care(sessionStorageService.get(assetService.events.care));\n });\n\n /**\r\n * Function Definitions\r\n */\n function init() {\n broadcastService.headerSwitch('Full');\n }\n $window.scrollTo(0, 0);\n $scope.$emit('loadingSpinner', false);\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function goToPage(event) {\n event.stopPropagation();\n event.preventDefault();\n window.location.href = event.target.href;\n }\n}\napp.controller('ShellBudgetBillingController', ShellBudgetBillingController);\nShellBudgetBillingController.$inject = ['$scope', 'assetService', '$state', 'cookieService'];\nfunction ShellBudgetBillingController($scope, assetService, $state, cookieService) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.dataPage = assetService.budgetBilling.pages;\n vm.stageGo = vm.dataPage.home;\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n $state.go(vm.stageGo);\n }\n $scope.$on('nextStep', function (index, page) {\n vm.stageGo = vm.dataPage[page];\n vm.loadingSpinner = true;\n $state.go(vm.stageGo);\n });\n $scope.$on('loadingSpinner', function (index, data) {\n vm.loadingSpinner = data;\n });\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n var isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.enrollment);\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = \"/my-account/billing-and-payment-programs/\";\n }\n };\n init();\n}\napp.controller('ShellManageBudgetBillingController', ShellManageBudgetBillingController);\nShellManageBudgetBillingController.$inject = ['$scope', 'assetService', '$state', 'cookieService'];\nfunction ShellManageBudgetBillingController($scope, assetService, $state, cookieService) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.dataPage = assetService.budgetBilling.pages;\n vm.stageGo = vm.dataPage.manageCredit;\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n $state.go(vm.stageGo);\n }\n $scope.$on('nextStep', function (index, page) {\n vm.stageGo = vm.dataPage[page];\n vm.loadingSpinner = true;\n $state.go(vm.stageGo);\n });\n $scope.$on('loadingSpinner', function (index, data) {\n vm.loadingSpinner = data;\n });\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n var isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.manage);\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = '/my-account/billing-and-payment-programs/';\n }\n };\n init();\n}\napp.controller('CCCAREComponent', CCCAREComponent);\nCCCAREComponent.$inject = ['$log', '$scope', '$location', 'assetService', 'commonService', 'sessionStorageService', 'getMultipleProductDetailsService', 'getProductRecommendationsCAREService', 'readConsentService', 'careFeedbackService', 'commongaTaggingService', '$rootScope', '$window', 'componentStateHandler'];\nfunction CCCAREComponent($log, $scope, $location, assetService, commonService, sessionStorageService, getMultipleProductDetailsService, getProductRecommendationsCAREService, readConsentService, careFeedbackService, commongaTaggingService, $rootScope, $window, componentStateHandler) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var maxRecommendations = 4;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n /* --------------Global Vars-----------------------*/\n vm.data = {};\n vm.loadingSpinner = true;\n vm.isOnDashboard = false;\n vm.productList = [];\n vm.nonProducts = false;\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.lineOfBusiness = '';\n vm.disclaimer = '';\n vm.disclaimerShortText = '';\n vm.serviceDown = false;\n vm.showMoreFlag = true;\n vm.isShowMore = true;\n vm.useDefaultSCProductsAndServices = false;\n vm.ownerType = '';\n vm.responseProductList = [];\n vm.originalOrderProductList = [];\n vm.pageName = '';\n vm.gatList = [];\n $rootScope.isCareComp = false;\n vm.isDefaultProducts = false;\n vm.isLoadCalled = false;\n vm.showTimeoutError = false;\n\n /* ---------------Function Declarations-------------------*/\n vm.init = init;\n vm.sendFeedback = sendFeedback;\n vm.redirect = redirect;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.showMoreData = showMoreData;\n\n /** Watchers */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n vm.loadingSpinner = true;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n var productListData = sessionStorageService.get(assetService.storageKeys.careRecFiilteredList + globalSelectedAccount.accountNum);\n if (productListData === undefined || productListData === null || productListData === '') {\n for (var index = assetService.numeric_Numbers.zero; index < $window.sessionStorage.length; index += assetService.numeric_Numbers.onee) {\n if (/careRecFiilteredList/.test($window.sessionStorage.key(index))) {\n sessionStorageService.delete($window.sessionStorage.key(index));\n }\n }\n $(window).on('scroll', function () {\n var elem = $('#care-tiles')[0];\n var elem1 = $('#care-tiles1')[0];\n if ((elem != undefined && elem.offsetTop != 0 && document.documentElement.scrollTop + window.outerHeight > elem.offsetTop || elem == undefined && elem1 != undefined && elem1.offsetTop != 0 && document.documentElement.scrollTop + window.outerHeight > elem1.offsetTop) && globalSelectedAccount.status !== 'Closed' && vm.isLoadCalled == false) {\n load();\n vm.loadingSpinner = true;\n $(window).off('scroll');\n }\n });\n }\n }\n });\n\n /* ---------------Initialization-------------------*/\n function getCommerceProductDetails(productList) {\n var promises = [];\n vm.defaultProducts = [];\n vm.isDefaultProducts = true;\n for (var index = assetService.numeric_Numbers.zero; index < productList.length; index += assetService.numeric_Numbers.onee) {\n vm.defaultProducts.push(productList[index].productId);\n }\n if (productList.length > assetService.numeric_Numbers.zero) {\n promises.push(getProductDetails({\n productCode: vm.defaultProducts.join('|'),\n fields: assetService.urlTokens.basic\n }));\n }\n if (productList.length > assetService.numeric_Numbers.zero) {\n commonService.executePromises(promises).then(function () {\n vm.loadingSpinner = false;\n for (var _index = assetService.numeric_Numbers.zero; _index < productList.length; _index += assetService.numeric_Numbers.onee) {\n var productTitleText = vm.productList[_index].title;\n var slot = \"Slot-\".concat(parseInt(_index) + 1);\n virtualPagePush('card', vm.pageName, vm.gatList[1], productTitleText, slot, vm.gatList[2]);\n }\n componentStateHandler.showComponent(vm);\n }, function () {\n if (vm.isOnDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n // if(assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function redirect(landingUrl, event, productTitle, productid, prid, LofB, prrank, ORLevel, score, productIndex, redirectURL) {\n var slot = \"Slot-\".concat(parseInt(productIndex) + 1);\n var workflowName = 'card';\n var headline = vm.pageName;\n var subheadline = vm.gatList[1];\n var addedEvent = productTitle;\n if (vm.isDefaultProducts) {\n virtualPagePush('card', vm.pageName, vm.gatList[1], productTitle, slot, 'clickthrough');\n attributePush(\"workFlow:\".concat(workflowName), \"headline:\".concat(headline), \"subheadline:\".concat(subheadline), \"addedEvent:\".concat(addedEvent));\n }\n var hdnfield = \"hdn-toast_\".concat(productid);\n var landingURL = landingUrl;\n if (event.target.innerText === 'View All Products & Services') {\n window.location.href = landingURL;\n } else if (prrank !== '' && score !== '') {\n $rootScope.dataLayer.push({\n event: 'eec.careimpressionClick',\n ecommerce: {\n click: {\n actionField: {\n list: 'CARE products'\n },\n products: [{\n id: prid,\n name: productTitle,\n dimension170: score,\n dimension171: prrank,\n dimension172: ORLevel,\n dimension173: LofB,\n position: $(\"#\".concat(hdnfield)).attr('subHead').replace('slot-', '') // position where the product was shown in impressions\n }]\n }\n }\n });\n attributePush(\"workFlow:\".concat($(\"#\".concat(hdnfield)).attr('businessFunction')), \"headline:\".concat(vm.pageName), \"subheadline:\".concat($(\"#\".concat(hdnfield)).attr('subhead2')), \"buttonText:\".concat(productTitle), \"addedSpec:\".concat($(\"#\".concat(hdnfield)).attr('subHead')));\n virtualPagePush($(\"#\".concat(hdnfield)).attr('businessFunction'), vm.pageName, $(\"#\".concat(hdnfield)).attr('subhead2'), productTitle, $(\"#\".concat(hdnfield)).attr('subHead'),\n // slot,\n $(\"#\".concat(hdnfield)).attr('clickthroughText'));\n var landingURLPath = new URL(landingURL).pathname;\n if (landingURLPath === null || landingURLPath === undefined || landingURLPath === '/') {\n window.location.href = landingURL;\n } else {\n window.location.href = 'https://' + redirectURL + landingURLPath;\n }\n } else {\n var _landingURLPath = new URL(landingURL).pathname;\n if (_landingURLPath === null || _landingURLPath === undefined || _landingURLPath === '/') {\n window.location.href = landingURL;\n } else {\n window.location.href = 'https://' + redirectURL + _landingURLPath;\n }\n }\n }\n function virtualPagePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n var contractAccountId = null;\n vm.isOnDashboard = $location.path().toLowerCase().indexOf('dashboard') > -1;\n if (globalSelectedAccount.accountNum && !vm.serviceDown) {\n contractAccountId = globalSelectedAccount.accountNum;\n sessionStorageService.set(assetService.storageKeys.contractAccountId, contractAccountId);\n vm.data.contractAccountId = contractAccountId;\n getRole();\n } else {\n vm.useDefaultSCProductsAndServices = true;\n }\n var currentAccountNum = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected.accountNum;\n var productListData = sessionStorageService.get(assetService.storageKeys.careRecFiilteredList + currentAccountNum);\n if (!vm.useDefaultSCProductsAndServices && !productListData) {\n if (vm.isOnDashboard) {\n getProductRecommendationsCARE({\n accountNumber: vm.data.contractAccountId,\n jurisdiction: globalSelectedAccount.jurisdiction\n });\n } else {\n UMCReadConsent({\n contractAccountId: vm.data.contractAccountId\n }).then(function (result) {\n if (result !== undefined) {\n // Read Consent Current accepted Version\n vm.acceptedVersion = result.acceptedConsent.version ? result.acceptedConsent.version.trim().replace(' ', '') : assetService.numeric_Numbers.zero;\n sessionStorageService.set(assetService.storageKeys.readConsentAcceptedVersion, vm.acceptedVersion);\n\n // Read Consent Current Status Accept or Decline\n var readConsentCurrentStatus = result.currentStatus === assetService.strings.ACC ? assetService.strings.ACCEPTED : assetService.strings.DECLINED;\n sessionStorageService.set(assetService.storageKeys.readConsentCurrentStatus, readConsentCurrentStatus);\n } else {\n sessionStorageService.set(assetService.storageKeys.readConsentAcceptedVersion, assetService.numeric_Numbers.zero);\n sessionStorageService.set(assetService.storageKeys.readConsentCurrentStatus, assetService.strings.DECLINED);\n }\n $rootScope.isCareComp = true;\n getProductRecommendationsCARE({\n accountNumber: vm.data.contractAccountId,\n jurisdiction: globalSelectedAccount.jurisdiction\n });\n }, function () {\n if (vm.isOnDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n //getCommerceProductDetails(vm.defaultProductIds);\n vm.showTimeoutError = true;\n } else {\n componentStateHandler.failedState(vm);\n vm.showTimeoutError = true;\n //getCommerceProductDetails(vm.defaultProductIds);\n }\n });\n }\n } else if (productListData) {\n if (vm.isOnDashboard) {\n careFiltering();\n } else {\n UMCReadConsent({\n contractAccountId: vm.data.contractAccountId\n }).then(function (result) {\n if (result !== undefined) {\n // Read Consent Current accepted Version\n vm.acceptedVersion = result.acceptedConsent.version ? result.acceptedConsent.version.trim().replace(' ', '') : assetService.numeric_Numbers.zero;\n sessionStorageService.set(assetService.storageKeys.readConsentAcceptedVersion, vm.acceptedVersion);\n\n // Read Consent Current Status Accept or Decline\n var readConsentCurrentStatus = result.currentStatus === assetService.strings.ACC ? assetService.strings.ACCEPTED : assetService.strings.DECLINED;\n sessionStorageService.set(assetService.storageKeys.readConsentCurrentStatus, readConsentCurrentStatus);\n } else {\n sessionStorageService.set(assetService.storageKeys.readConsentAcceptedVersion, assetService.numeric_Numbers.zero);\n sessionStorageService.set(assetService.storageKeys.readConsentCurrentStatus, assetService.strings.DECLINED);\n }\n careFiltering();\n }, function () {\n if (vm.isOnDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n //getCommerceProductDetails(vm.defaultProductIds);\n vm.showTimeoutError = true;\n } else {\n componentStateHandler.failedState(vm);\n //getCommerceProductDetails(vm.defaultProductIds);\n vm.showTimeoutError = true;\n }\n });\n }\n } else {\n getCommerceProductDetails(vm.defaultProductIds);\n }\n }\n function careFiltering() {\n vm.originalOrderProductList = [];\n vm.responseProductList = [];\n vm.productList = [];\n var currentAccountNum = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected.accountNum;\n var getRecommendationData = sessionStorageService.get(assetService.storageKeys.careRecFiilteredList + currentAccountNum);\n vm.acceptedVersion = sessionStorageService.get(assetService.storageKeys.readConsentAcceptedVersion);\n var readConsentCurrentStatus = sessionStorageService.get(assetService.storageKeys.readConsentCurrentStatus);\n var filteredData = getRecommendationData;\n if (parseFloat(vm.acceptedVersion) !== parseFloat(assetService.numeric_Numbers.zero) && readConsentCurrentStatus === assetService.strings.ACCEPTED) {\n filteredData = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired === '' || parseFloat(recommendation.ucVersionRequired.trim().replace(' ', '')) <= parseFloat(vm.acceptedVersion);\n });\n } else {\n filteredData = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired === '';\n });\n }\n getRecommendationData = filteredData; // need take it from filtered data\n\n setPageNameAndCareRecommendations(filteredData, readConsentCurrentStatus);\n vm.careRecommendations = _.sortBy(vm.careRecommendations, function (recommendation) {\n return parseInt(recommendation.rank ? recommendation.rank : assetService.numeric_Numbers.zero);\n });\n var promises = [];\n var showproducts = maxRecommendations;\n if (vm.careRecommendations.length < maxRecommendations) {\n var additionalData = getRecommendationData;\n vm.careRecommendations.forEach(function (filteredElement) {\n additionalData.forEach(function (allRecommentation) {\n if (allRecommentation.rank === filteredElement.rank) {\n additionalData.splice(additionalData.indexOf(allRecommentation), assetService.numeric_Numbers.onee);\n }\n });\n });\n vm.careRecommendations = vm.careRecommendations.concat(_.sortBy(additionalData, function (data) {\n return parseInt(data.rank ? data.rank : assetService.numeric_Numbers.zero);\n }).slice(assetService.numeric_Numbers.zero, maxRecommendations - vm.careRecommendations.length));\n showproducts = vm.careRecommendations.length;\n } else if (vm.careRecommendations.length < maxRecommendations) {\n showproducts = vm.careRecommendations.length;\n }\n var ProductsDetails = [];\n for (var index = assetService.numeric_Numbers.zero; index < showproducts; index += assetService.numeric_Numbers.onee) {\n vm.originalOrderProductList.push(vm.careRecommendations[index].commerceProductId);\n var ProductDetail = {\n id: vm.careRecommendations[index].productId,\n name: vm.careRecommendations[index].productName,\n list: 'CARE products',\n dimension170: \"\".concat(vm.careRecommendations[index].score, \"%\"),\n dimension171: vm.careRecommendations[index].rank,\n dimension172: vm.careRecommendations[index].ownerRenterProductLevel,\n dimension173: vm.careRecommendations[index].lineOfBusiness,\n position: parseInt(index) + assetService.numeric_Numbers.onee\n };\n ProductsDetails.push(ProductDetail);\n }\n if (showproducts > assetService.numeric_Numbers.zero) {\n promises.push(getProductDetails({\n productCode: vm.originalOrderProductList.join('|'),\n fields: assetService.urlTokens.basic,\n id: vm.careRecommendations[0].productId,\n line_of_business: vm.careRecommendations[0].lineOfBusiness,\n rank: vm.careRecommendations[0].rank,\n owner_renter_product_level: vm.careRecommendations[0].ownerRenterProductLevel,\n propensity_score: \"\".concat(vm.careRecommendations[0].score, \"%\")\n }));\n }\n // GAT Data Layer Push\n if (ProductsDetails.length > assetService.numeric_Numbers.zero) {\n $rootScope.dataLayer.push({\n event: 'eec.careimpressionView',\n ecommerce: {\n impressions: ProductsDetails\n }\n });\n }\n $rootScope.isCareComp = true;\n commonService.executePromises(promises).then(function () {\n var _loop = function _loop(orderIndex) {\n vm.responseProductList.push(vm.productList.find(function (prod) {\n return prod.productId === vm.originalOrderProductList[orderIndex];\n }));\n if (vm.responseProductList[orderIndex] !== undefined) {\n // GAT Implementation\n var productTitleText = vm.responseProductList[orderIndex].title;\n var slot = \"Slot-\".concat(parseInt(orderIndex) + 1);\n virtualPagePush(vm.gatList[0], vm.pageName, vm.gatList[1], productTitleText, slot, vm.gatList[2]);\n }\n };\n for (var orderIndex = assetService.numeric_Numbers.zero; orderIndex < vm.originalOrderProductList.length; orderIndex += assetService.numeric_Numbers.onee) {\n _loop(orderIndex);\n }\n vm.productList = vm.responseProductList;\n vm.loadingSpinner = false;\n $rootScope.isCareComp = false;\n componentStateHandler.showComponent(vm);\n }, function () {\n if (vm.isOnDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n });\n if (showproducts === assetService.numeric_Numbers.zero) {\n getCommerceProductDetails(vm.defaultProductIds);\n }\n }\n function setPageNameAndCareRecommendations(filteredData, readConsentCurrentStatus) {\n var state = $window.location.pathname.toLowerCase();\n switch (state) {\n case assetService.strings.CARE.PAGES.PREPAID_DASHBOARD:\n if (globalSelectedAccount.prepaid) {\n vm.pageName = assetService.strings.CARE.GATPAGENAME.PREPAID_DASHBOARD_PAGE;\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_EE || recommendation.lineOfBusiness === '';\n });\n } else {\n vm.pageName = assetService.strings.CARE.GATPAGENAME.MYACCOUNT_DASHBOARD_PAGE;\n vm.careRecommendations = filteredData;\n }\n break;\n case assetService.strings.CARE.PAGES.ENERGY_USAGE:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.ENERGY_USAGE_PAGE;\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_EE;\n });\n break;\n case assetService.strings.CARE.PAGES.FIXED_BILL:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.FIXED_BILL_PAGE;\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS;\n });\n break;\n case assetService.strings.CARE.PAGES.BUDGET_BILLING:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.BUDGET_BILLING_PAGE;\n if (parseFloat(vm.acceptedVersion) !== parseFloat(assetService.numeric_Numbers.zero) && readConsentCurrentStatus === assetService.strings.ACCEPTED) {\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired !== '' && parseFloat(recommendation.ucVersionRequired.trim().replace(' ', '')) <= parseFloat(vm.acceptedVersion) && (recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS);\n });\n } else {\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired === '' && (recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS);\n });\n }\n break;\n case assetService.strings.CARE.PAGES.MANAGE_BUDGET_BILLING:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.MANAGE_BUDGET_BILLING_PAGE;\n if (parseFloat(vm.acceptedVersion) !== parseFloat(assetService.numeric_Numbers.zero) && readConsentCurrentStatus === assetService.strings.ACCEPTED) {\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired !== '' && parseFloat(recommendation.ucVersionRequired.trim().replace(' ', '')) <= parseFloat(vm.acceptedVersion) && (recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS);\n });\n } else {\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.ucVersionRequired === '' && (recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS);\n });\n }\n break;\n case assetService.strings.CARE.PAGES.AUTO_PAY:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.AUTO_PAY_PAGE;\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS;\n });\n break;\n case assetService.strings.CARE.PAGES.PICK_YOUR_DUE_DATE:\n vm.pageName = assetService.strings.CARE.GATPAGENAME.PYDD_PAGE;\n vm.careRecommendations = _.filter(filteredData, function (recommendation) {\n return recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_BnP || recommendation.lineOfBusiness === assetService.strings.CARE.LineOfBusiness.CARE_ECS;\n });\n break;\n default:\n break;\n }\n }\n function UMCReadConsent(data) {\n return readConsentService.sitecore.readConsent(data).then(function (result) {\n if (result !== '' && result !== undefined && result !== null && result.d && result.d.ReadConReqResNav && result.d.ReadConReqResNav.results && result.d.ReadConReqResNav.results.length > assetService.numeric_Numbers.zero) {\n var acceptedConsent = _.map(result.d.ReadConReqResNav.results, function (filteredResult) {\n return {\n consentCode: filteredResult.AcceptConsentCode,\n consentStatus: filteredResult.AcceptConsentStatus,\n version: filteredResult.AcceptVersion,\n consentDate: moment(filteredResult.AcceptConsentDate).format('MM/DD/YYYY')\n };\n });\n var declinededConsent = _.map(result.d.ReadDeclineReqResNav.results, function (filteredResult) {\n return {\n consentCode: filteredResult.DeclineConsentCode,\n consentStatus: filteredResult.DeclineConsentStatus,\n version: filteredResult.DeclineVersion,\n consentDate: moment(filteredResult.DeclineConsentDate).format('MM/DD/YYYY')\n };\n });\n var ignoredConsent = _.map(result.d.ReadIgnoreReqResNav.results, function (filteredResult) {\n return {\n consentCode: filteredResult.IgnoreConsentCode,\n consentStatus: filteredResult.IgnoreConsentStatus,\n version: filteredResult.IgnoreVersion,\n consentDate: moment(filteredResult.IgnoreConsentDate).format('MM/DD/YYYY')\n };\n });\n var umcData = {\n currentVersion: result.d.CurrentLatestVersion,\n currentStatus: result.d.CurrentStatus,\n acceptedConsent: acceptedConsent[0],\n declinededConsent: declinededConsent[0],\n ignoredConsent: ignoredConsent[0]\n };\n return umcData;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getProductRecommendationsCARE(data) {\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE(data).then(function (result) {\n if (result !== '' && result !== undefined && result.Care_Response !== null && result.Care_Response !== undefined) {\n vm.disclaimerShortText = result ? result.DisclaimerShortText : '';\n vm.disclaimer = result ? result.Disclaimer : '';\n vm.ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== 'NA';\n });\n vm.careRecommendations = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === vm.ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n var currentAccountNum = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected.accountNum;\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + currentAccountNum, vm.careRecommendations);\n careFiltering();\n } else {\n vm.showTimeoutError = true;\n //getCommerceProductDetails(vm.defaultProductIds);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showTimeoutError = true;\n //getCommerceProductDetails(vm.defaultProductIds);\n });\n }\n function getProductDetails(paramData) {\n return getMultipleProductDetailsService.sitecore.getMultipleProductDetails(paramData).then(function (result) {\n if (result !== '') {\n result.productsList.forEach(function (element) {\n vm.productList.push({\n productId: element.code,\n description: element.summary,\n finalLandingUrl: element.finalLandingUrl,\n title: element.name,\n img: element.images !== undefined && element.images.length > assetService.numeric_Numbers.zero ? element.images[0].externalUrl : \"\".concat(window.location.origin, \"/assets/site/img/cc-products-services/product_demo.jpg\"),\n id: paramData.id ? paramData.id : assetService.numeric_Numbers.zero,\n line_of_business: paramData.line_of_business ? paramData.line_of_business : '',\n rank: paramData.rank,\n owner_renter_product_level: paramData.owner_renter_product_level ? paramData.owner_renter_product_level : '',\n propensity_score: paramData.propensity_score ? paramData.propensity_score : ''\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function sendFeedback(productId) {\n var dataObj = {\n productId: productId,\n contractAccountId: globalSelectedAccount.accountNum\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n }\n function showMoreData() {\n vm.isShowMore = !vm.isShowMore;\n }\n function init(defaultProducts) {\n var lineOfBusiness = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var businessFunctionval = arguments.length > 2 ? arguments[2] : undefined;\n var headingval = arguments.length > 3 ? arguments[3] : undefined;\n var impression = arguments.length > 4 ? arguments[4] : undefined;\n vm.gatList = [businessFunctionval, headingval, impression];\n var defaultProductList = defaultProducts.split(',');\n vm.defaultProductIds = _.map(defaultProductList, function (item) {\n return {\n productId: item\n };\n });\n vm.lineOfBusiness = lineOfBusiness;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo) {\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n if (!(document.documentElement.scrollHeight > document.documentElement.clientHeight)) {\n load();\n vm.isLoadCalled = true;\n } else {\n window.scrollBy(0, 2);\n }\n $(window).on('scroll', function () {\n var elem = $('#care-tiles')[0];\n var elem1 = $('#care-tiles1')[0];\n if ((elem != undefined && elem.offsetTop != 0 && document.documentElement.scrollTop + window.outerHeight > elem.offsetTop || elem == undefined && elem1 != undefined && elem1.offsetTop != 0 && document.documentElement.scrollTop + window.outerHeight > elem1.offsetTop) && globalSelectedAccount.status !== 'Closed' && vm.isLoadCalled == false) {\n load();\n vm.loadingSpinner = true;\n $(window).off('scroll');\n }\n });\n }\n }\n }\n}\napp.controller('CCBalanceActivity', CCBalanceActivity);\nCCBalanceActivity.$inject = ['$scope', '$rootScope', 'assetService', 'balanceActivityService', 'dateHelperService', 'prepaidService', 'sessionStorageService', 'commonService', 'componentStateHandler', 'getPaymentHistoryService', 'commongaTaggingService'];\nfunction CCBalanceActivity($scope, $rootScope, assetService, balanceActivityService, dateHelperService, prepaidService, sessionStorageService, commonService, componentStateHandler, getPaymentHistoryService, commongaTaggingService) {\n /* Scope Vars */\n var vm = this;\n var _globalAccountInfo = null;\n var _dailyUsage = prepaidService.strings.DAILY_USAGE;\n var _payment = prepaidService.strings.PAYMENT;\n var _pending = prepaidService.strings.PENDING;\n var noOfDays = '365';\n var dailyUsageDetails = null;\n var paymentHistoryDetails = null;\n var paymentDetails = null;\n\n /* Global Vars */\n vm.balanceActivity = {\n dailyUsage: [],\n payment: [],\n paymentFees: []\n };\n vm.dropdownOptions = [{\n text: _dailyUsage,\n value: _dailyUsage\n }, {\n text: _payment,\n value: _payment\n }];\n vm.minusTableHeaders = [{\n column: assetService.strings.DATE,\n sortAsc: true\n }, {\n column: assetService.strings.TYPE,\n sortAsc: true\n }, {\n column: assetService.strings.AMOUNT,\n sortAsc: true\n }];\n vm.keyDates = [];\n vm.lastDate = 0;\n vm.dateLis = [];\n vm.limit = 6;\n vm.activitiesLimit = 6; // Initial displayed rows in Table\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\n vm.orderPos = 0;\n vm.sortAsc = true;\n vm.loadingSpinner = true;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n load();\n });\n\n /** Function Declarations */\n vm.init = init;\n vm.attributePush = attributePush;\n /** Function Definitions */\n\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function filterWeek() {\n vm.balanceList = vm.balance;\n if (vm.balanceList.length < vm.activitiesLimit) {\n vm.activitiesLimit = vm.balanceList.length;\n }\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n commonService.executePromises([getPaymentHistory({\n businessPartner: _globalAccountInfo.bpNumber,\n contractAccountId: _globalAccountInfo.accountSelected.accountNum\n }), getBalanceActivity({\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n numberOfDays: noOfDays\n })]).then(function (result) {\n setModels();\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setModels() {\n //populate daily usage\n if (dailyUsageDetails) {\n vm.balanceActivity.dailyUsage = _.map(dailyUsageDetails, function (item) {\n return {\n type: _dailyUsage,\n dailyElectricUsage: Math.trunc(item.TotalKwh),\n dailyElectricCost: item.DailyUsageAmount,\n date: moment(item.ToDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(item.ToDateStr).toDate(),\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\n amount: item.DailyUsageAmount,\n pendingText: ''\n };\n });\n }\n if (paymentDetails) {\n paymentDetails.forEach(function (paymentDetailsFees) {\n if (paymentDetailsFees.Description === 'RETURN_CHECK_FEE' || paymentDetailsFees.Description === 'LATE_PAYMENT_FEE' || paymentDetailsFees.Description === 'NEW_SERVICE_FEE') {\n var paymentItemFees = {\n type: _payment,\n status: paymentDetailsFees.Description,\n confirmationNumber: '',\n date: moment(paymentDetailsFees.PostingDate).format('MM/DD/YYYY'),\n dateForSort: moment(paymentDetailsFees.PostingDate).toDate(),\n paymentMetod: '',\n amount: parseFloat(paymentDetailsFees.Amount)\n };\n vm.balanceActivity.paymentFees.push(paymentItemFees);\n }\n });\n }\n\n //populate payment history\n if (paymentHistoryDetails) {\n paymentHistoryDetails.forEach(function (paymentHistory) {\n if (paymentHistory.Payment_Status === 'PENDING' || paymentHistory.Payment_Status === 'COMPLETED' || paymentHistory.Payment_Status === 'RETURNED') {\n var paymentItem = {\n type: _payment,\n status: paymentHistory.Payment_Status,\n confirmationNumber: paymentHistory.Confirmation_Code,\n date: moment(paymentHistory.PaymentDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(paymentHistory.PaymentDateStr).toDate(),\n paymentMetod: paymentHistory.Payment_Method,\n payment: paymentHistory.Payment_Amount,\n deferredBalance: 0,\n amount: parseFloat(paymentHistory.Payment_Amount),\n pendingText: paymentHistory.Payment_Status === 'PENDING' ? _pending : ''\n };\n vm.balanceActivity.payment.push(paymentItem);\n }\n });\n }\n if (vm.balanceActivity.dailyUsage.length > 0 || vm.balanceActivity.payment.length > 0) {\n vm.noBalanceActivity = false;\n var dataToMerge = [vm.balanceActivity.dailyUsage, vm.balanceActivity.payment, vm.balanceActivity.paymentFees];\n vm.balance = _.spread(_.union)(dataToMerge);\n vm.balance.forEach(function (element) {\n var numberOfWeek = dateHelperService.getWeekNumber(element.date);\n var year = new Date(element.date).getFullYear();\n element.dateId = year * 100 + numberOfWeek;\n });\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(function (activity) {\n return activity.dateId;\n });\n vm.dateLis.sort(function (first, second) {\n return second - first;\n });\n filterWeek();\n vm.noBalanceActivity = vm.balanceList.length === 0;\n } else {\n vm.noBalanceActivity = true;\n }\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n }\n function getBalanceActivity(request) {\n return balanceActivityService.sitecore.balanceActivity(request).then(function (result) {\n dailyUsageDetails = result.d.Balactivitytodailyusage.results;\n paymentDetails = result.d.BalActivityToCharges_Nav.results;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function getPaymentHistory(request) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(request).then(function (result) {\n paymentHistoryDetails = result.d.Req_Inp.results[0].Inp_Res.results;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n }\n}\napp.controller('BPAComponentController', BPAComponentController);\nBPAComponentController.$inject = ['$log', '$scope', 'assetService', 'getPaymentHistoryService', 'getInvoiceListService', 'sessionStorageService', 'FPBroadcastService'];\nfunction BPAComponentController($log, $scope, assetService, getPaymentHistoryService, getInvoiceListService, sessionStorageService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _dueDate = assetService.strings.SORTBY_DUEDATE;\n var _invoicesData = {};\n var _invoicesDataSorted = {};\n var _globalAccountInfo = {};\n var _globalSelectedAccount = {};\n var _mergedData = {};\n var _paymentsData = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n var dataToMerge = [_invoicesData, _paymentsData];\n _mergedData = _.spread(_.union)(dataToMerge);\n vm.billsAndPayments = _.orderBy(_mergedData, [_dueDate], ['desc', 'asc']);\n _invoicesDataSorted = _.orderBy(_invoicesData, [_dueDate], ['desc', 'asc']);\n sessionStorageService.set(\n // Just Invoice List\n assetService.storageKeys.bpaLatestInvoice, _invoicesDataSorted[0]);\n broadcastService.bpaLatestInvoice();\n }\n function getInvoices(paramData) {\n return getInvoiceListService.sitecore.getInvoiceList(paramData).then(function (result) {\n _invoicesData = _.map(result.d.Inp_Req.results[0].Account_Invoice.results, function (invoice) {\n return {\n itemId: invoice.InvId,\n active: false,\n dueDate: moment(invoice.DueDate).format('MM/DD/YY'),\n type: assetService.strings.TYPE_BILL,\n description: moment(invoice.BillStartDate).format('MMM DD') + ' to ' + moment(invoice.BillEndDate).format('MMM DD') + ' - Bill (' + invoice.BillDays + 'Days)',\n // Blocked, waiting to be added to the JSON response\n dueAmount: Number(invoice.InvTotAmtDue),\n errorFlag: invoice.PastDueFlg,\n // Details to be reassigned on next GET\n prevAmountDue: Number('00.00'),\n paymentReceived: Number('00.00'),\n currentCharges: Number('00.00'),\n totalAmountDue: Number('00.00'),\n totalElectricUsage: '00.00',\n avgDailyElectricCost: Number('00.00'),\n totalGasUsage: '00.00',\n avgDailyGasCost: Number('00.00')\n // ...invoice, //Checking if is necesary\n };\n });\n });\n }\n function getPayments(paramData) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(paramData).then(function (result) {\n _paymentsData = _.map(result.d.Req_Inp.results[0].Inp_Res.results, function (payment) {\n return {\n itemId: payment.Payment_Doc,\n active: false,\n dueDate: moment(payment.Payment_Date).format('MM/DD/YY'),\n // Same as paymentDate\n type: assetService.strings.TYPE_PAYMENT,\n description: \"(\".concat(payment.Payment_Status, \") \").concat(payment.Payment_Method, \" \").concat(payment.Payment_Account),\n dueAmount: Number(payment.Payment_Amount),\n // Same as paymentAmount\n confirmNumber: payment.Confirmation_Code,\n paymentMethod: payment.Payment_Method,\n routingNumber: payment.Routing_No,\n accountNumber: payment.Payment_Account,\n paymentStatus: payment.Payment_Status\n // ...payment, // Checking if is necesary\n };\n });\n });\n }\n function load() {\n var dataObject = {\n contractAccountId: _globalSelectedAccount.contractAccount,\n businessPartner: _globalSelectedAccount.businessPartner\n };\n getPayments(dataObject).then(function () {\n getInvoices(dataObject).then(function () {\n setModels();\n vm.loadingSpinner = false;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n load();\n });\n\n /* ---------------*Initialization*-------------------*/\n function init() {\n /*empty function*/\n }\n init();\n}\napp.controller('BPAComponentNoNative', BPAComponentNoNative);\nBPAComponentNoNative.$inject = ['$scope', 'assetService', 'getPaymentHistoryService', 'getInvoiceListService', 'sessionStorageService', 'FPBroadcastService', 'componentStateHandler'];\nfunction BPAComponentNoNative($scope, assetService, getPaymentHistoryService, getInvoiceListService, sessionStorageService, broadcastService, componentStateHandler) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _dueDate = assetService.strings.SORTBY_DUEDATE;\n var _invoicesData = {};\n var _invoicesDataSorted = {};\n var _globalAccountInfo = {};\n var _globalSelectedAccount = {};\n var _mergedData = {};\n var _paymentsData = {};\n var globalSelectedAccountEmail = '';\n var _bpNumber = '';\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n var dataToMerge = [_invoicesData, _paymentsData];\n _mergedData = _.spread(_.union)(dataToMerge);\n vm.billsAndPayments = _.orderBy(_mergedData, [_dueDate], ['desc', 'asc']);\n _invoicesDataSorted = _.orderBy(_invoicesData, [_dueDate], ['desc', 'asc']);\n sessionStorageService.set(\n // Just Invoice List\n assetService.storageKeys.bpaLatestInvoice, _invoicesDataSorted[0]);\n broadcastService.bpaLatestInvoice();\n }\n function getInvoices(paramData) {\n return getInvoiceListService.sitecore.getInvoiceList(paramData).then(function (result) {\n _invoicesData = _.map(result.d.Inp_Req.results[0].Account_Invoice.results, function (invoice) {\n return {\n itemId: invoice.InvId,\n active: false,\n dueDate: moment(invoice.DueDate).format('MM/DD/YY'),\n type: assetService.strings.TYPE_BILL,\n description: \"\".concat(moment(invoice.BillStartDate).format('MMM DD'), \" to \").concat(moment(invoice.BillEndDate).format('MMM DD'), \" - Bill (\").concat(invoice.BillDays, \"Days)\"),\n // Blocked, waiting to be added to the JSON response\n dueAmount: Number(invoice.InvTotAmtDue),\n errorFlag: invoice.PastDueFlg,\n // Details to be reassigned on next GET\n prevAmountDue: Number('00.00'),\n paymentReceived: Number('00.00'),\n currentCharges: Number('00.00'),\n totalAmountDue: Number('00.00'),\n totalElectricUsage: '00.00',\n avgDailyElectricCost: Number('00.00'),\n totalGasUsage: '00.00',\n avgDailyGasCost: Number('00.00')\n // ...invoice, //Checking if is necesary\n };\n });\n });\n }\n function getPayments(paramData) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(paramData).then(function (result) {\n _paymentsData = _.map(result.d.Req_Inp.results[0].Inp_Res.results, function (payment) {\n return {\n itemId: payment.Payment_Doc,\n active: false,\n dueDate: moment(payment.Payment_Date).format('MM/DD/YY'),\n // Same as paymentDate\n type: assetService.strings.TYPE_PAYMENT,\n description: \"(\".concat(payment.Payment_Status, \") \").concat(payment.Payment_Method, \" \").concat(payment.Payment_Account),\n dueAmount: Number(payment.Payment_Amount),\n // Same as paymentAmount\n confirmNumber: payment.Confirmation_Code,\n paymentMethod: payment.Payment_Method,\n routingNumber: payment.Routing_No,\n accountNumber: payment.Payment_Account,\n paymentStatus: payment.Payment_Status\n // ...payment, // Checking if is necesary\n };\n });\n });\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\n _bpNumber = _globalSelectedAccount.bpNumber;\n }\n var dataObject = {\n contractAccountId: _globalSelectedAccount.accountNum,\n businessPartner: _globalSelectedAccount.bpNumber,\n EmailID: globalSelectedAccountEmail,\n businessPartnerId: _bpNumber\n };\n getPayments(dataObject).then(function () {\n getInvoices(dataObject).then(function () {\n setModels();\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\n _bpNumber = _globalSelectedAccount.bpNumber;\n }\n load();\n });\n\n /* ---------------*Initialization*-------------------*/\n function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\n _bpNumber = _globalSelectedAccount.bpNumber;\n }\n load();\n }\n }\n init();\n}\napp.controller('CCDashboardController', CCDashboardController);\nCCDashboardController.$inject = ['$log', '$scope', 'assetService', 'ccDelegationAssetService', 'modalService', 'sessionStorageService', 'getAccountEnrollmentEligibilityStatusService', '$rootScope', 'umcModalService', 'efiModalService', 'componentStateHandler', 'impersonationService', 'commongaTaggingService', '$timeout', 'getEnrollmentStatusOfExtensionPlanService'];\nfunction CCDashboardController($log, $scope, assetService, ccDelegationAssetService, modalService, sessionStorageService, getAccountEnrollmentEligibilityStatusService, $rootScope, umcModalService, efiModalService, componentStateHandler, impersonationService, commongaTaggingService, $timeout, getEnrollmentStatusOfExtensionPlanService) {\n /** Scope Vars */\n\n var accountNum = 'accountNum';\n var accountSelected = 'accountSelected';\n var vm = this;\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n var _success = assetService.replyCodes.Success;\n var _action = ccDelegationAssetService.serviceActions.DELEGATION_MODAL;\n var _elbill = assetService.strings.ELBILL;\n\n /** Global Vars */\n vm.loadingSpinner = true;\n vm.PB_BigPadding = false;\n $rootScope.closeBtn = false;\n vm.PB_Description = 'More than just saving paper.';\n vm.PB_LinkText = 'Learn more';\n vm.PB_ClickEnroll = undefined;\n vm.PB_ToggleComponent = false;\n vm.PB_ManageButton = 'ENROLL';\n vm.isPrepaid = false;\n vm.energyUsageWidth = false;\n vm.isNonNativeWithAccounts = false;\n vm.isNonNativeWithoutAccounts = false;\n vm.nativeDashboard = false;\n vm.UMCLoaded = false;\n vm.efiLoaded = false;\n vm.retrieveDelegation = {\n replyCode: null,\n delegations: []\n };\n vm.toSessionStorage = [];\n vm.roleData = {};\n vm.roleBase = {};\n vm.ineligible = false;\n vm.col1Class = '';\n vm.col2Class = '';\n vm.umcModalInstance = '';\n vm.tracklink = tracklink;\n vm.managelink = managelink;\n vm.landlordLink = landlordLink;\n vm.careEnable = true;\n vm.redirecting = false;\n\n // function to check query params for redirect\n function checkForRedirect() {\n var params = new URLSearchParams(window.location.search);\n var value = params.get('redirect');\n if (value) {\n vm.redirecting = true;\n }\n }\n checkForRedirect();\n\n /** Watchers */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n vm.loadingSpinner = true;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo && Object.prototype.hasOwnProperty.call(_globalAccountInfo, accountSelected)) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n vm.roleData = {\n relatedBusinessPartner: _globalSelectedAccount.bpNumber,\n contractAccountId: _globalSelectedAccount.accountNum,\n requestedBy: '',\n sessionNo: '',\n emailId: _globalAccountInfo.userEmail,\n experience: ''\n };\n getRole();\n }\n load();\n });\n $scope.$on(assetService.events.dashboardWidget, function () {\n // widget loader\n if (vm.roleBase) {\n // eslint-disable-next-line no-param-reassign\n $rootScope.roleBase = vm.roleBase;\n sessionStorageService.set(assetService.storageKeys.roleBase, vm.roleBase);\n }\n });\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function getRole() {\n switch (_globalSelectedAccount && _globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.roleBase.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.roleBase.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.roleBase.viewerRole = true;\n break;\n default:\n vm.roleBase.viewerRole = true;\n }\n }\n function energyUsageWidthClass() {\n if (_globalAccountInfo !== null && _globalAccountInfo !== undefined && (_globalAccountInfo.accountSelected.status === 'Closed' || _globalAccountInfo.accountSelected.status === 'INACTIVE')) {\n vm.energyUsageWidth = true;\n vm.careEnable = false;\n } else {\n vm.energyUsageWidth = false;\n }\n }\n function setColumnClass() {\n if (vm.isPrepaid) {\n vm.col1Class = 'CCDashboard__col--2';\n vm.col2Class = 'CCDashboard__col--2';\n } else if (vm.energyUsageWidth) {\n // closed acc\n vm.col1Class = 'CCDashboard__col--4';\n } else if (!vm.isNonNativeWithAccounts && !vm.isNonNativeWithoutAccounts) {\n vm.col1Class = 'CCDashboard__col--auto';\n vm.col2Class = 'CCDashboard__col--400';\n } else {\n vm.col1Class = 'CCDashboard__col--1';\n vm.col2Class = 'CCDashboard__col--3';\n }\n }\n\n /** Function Declarations */\n function openModal() {\n modalService.dashboardDelegationInvite();\n }\n function getAccountEnrollmentEligibilityStatus(parameters) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.eligibilityStatusResult) {\n var result = $rootScope.eligibilityStatusResult;\n setEligibilityStatusModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(parameters).then(function (result) {\n setEligibilityStatusModel(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setEligibilityStatusModel(result) {\n vm.programs = result.d.Inp_Prog.results[0].Prog_Res.results;\n if (vm.programs.length > 0) {\n var eBill = _.find(vm.programs, function (element) {\n return element.ProgName === _elbill;\n });\n vm.payodda = _.find(vm.programs, function (element) {\n return element.ProgName === 'PYODDA';\n });\n if (vm.payodda && vm.payodda.EligibilityStatus === 'Ineligible') {\n $rootScope.pickyourDueDate = 'Not Eligible';\n } else {\n $rootScope.pickyourDueDate = vm.payodda.EligibilityStatus;\n }\n if (eBill && eBill.EligibilityStatus === 'Ineligible') {\n vm.ineligible = true;\n } else {\n vm.ineligible = false;\n }\n }\n sessionStorageService.set(assetService.storageKeys.eligibilityStatusData, result.d.Inp_Prog.results[0]);\n }\n function getEnrollmentStatusOfExtensionPlan(data) {\n return getEnrollmentStatusOfExtensionPlanService.sitecore.GetEnrollmentStatusOfExtensionPlans(data).then(function (result) {\n if (result.d.DueDate.Status === '') {\n $rootScope.dueDateExtension = 'Eligible';\n } else if (result.d.DueDate.Status === 'ENROLLED') {\n $rootScope.dueDateExtension = 'Enrolled';\n } else if (result.d.DueDate.Status === 'INELIGIBLE') {\n $rootScope.dueDateExtension = 'Not Eligible';\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setEligiblePaymentPlansModel(result) {\n $rootScope.dpa = 'Not Enrolled';\n if (result.d.ReqCA.results.length > 0) {\n if (result.d.ReqCA.results[0].PaymentPlan.results.length > 0) {\n if (result.d.ReqCA.results[0].PaymentPlan[0] !== 'undefined') {\n $rootScope.dpa = 'Enrolled';\n }\n } else {\n $rootScope.dpa = 'Not Eligible';\n }\n }\n if (result.d.ReqCA.results[0].Extensions === null || result.d.ReqCA.results[0].Extensions.DisconnectDate === null) {\n $rootScope.disconnectExtension = 'Not Eligible';\n } else {\n $rootScope.disconnectExtension = result.d.ReqCA.results[0].Extensions.DisconnectDateStr;\n }\n }\n function tracklink() {\n attributePush(\"workFlow:\".concat($('#hdn-toast').attr('businessFunction')), \"headline:\".concat($('#hdn-toast').attr('headline')), \"subheadline:\".concat($('#hdn-toast').attr('subheadline')), \"buttonText:\".concat($('#hdn-toast').attr('buttontext')));\n }\n function landlordLink() {\n sessionStorageService.set(assetService.storageKeys.experienceAccount, 'LANDLORD');\n sessionStorageService.set(assetService.storageKeys.landlordSwitch, 'LandlordPage');\n attributePush(\"workFlow:\".concat($('#hdn-toast').attr('businessFunction')), \"headline:\".concat($('#hdn-toast').attr('headline')), \"subheadline:\".concat($('#hdn-toast').attr('subheadline')), \"buttonText:\".concat($('#hdn-toast').attr('buttontext')));\n }\n function managelink() {\n attributePush(\"workFlow:\".concat($('#hdn-toast-manage').attr('businessFunction')), \"headline:\".concat($('#hdn-toast-manage').attr('headline')), \"subheadline:\".concat($('#hdn-toast-manage').attr('subheadline')), \"buttonText:\".concat($('#hdn-toast-manage').attr('buttontext')));\n }\n $scope.gatAttributePush = function (buttontext, headline, businessfunction) {\n var params = [\"workFlow:\".concat(businessfunction), \"buttonText:\".concat(buttontext), \"headline:\".concat(headline)];\n commongaTaggingService.attributePush(params);\n };\n function load() {\n $rootScope.cancelServiceFailCount = 0;\n $rootScope.channel = '005';\n $rootScope.closeBtn = false;\n $rootScope.isPublicUmc = false;\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n $rootScope.efiInterceptForUser = sessionStorageService.get(assetService.storageKeys.efiInterceptForUser);\n $rootScope.consentForUser = sessionStorageService.get(assetService.storageKeys.consentForUser);\n\n //setting session storage for Notifications & Preferences Page\n sessionStorageService.set(assetService.storageKeys.preferenceFlag, true);\n if (_globalAccountInfo !== null && _globalAccountInfo !== undefined && (_globalAccountInfo.accountSelected.status === 'Closed' || _globalAccountInfo.accountSelected.status === 'INACTIVE')) {\n vm.careEnable = false;\n } else {\n vm.careEnable = true;\n }\n vm.impDetails = impersonationService.getImpDetails();\n switch (dashboardUserType) {\n case assetService.strings.NATIVE_USER:\n vm.nativeDashboard = true;\n break;\n case assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS:\n vm.isNonNativeWithAccounts = true;\n break;\n case assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS:\n vm.isNonNativeWithoutAccounts = true;\n _globalSelectedAccount = null;\n break;\n default:\n vm.nativeDashboard = true;\n }\n var userJurisdiction = $rootScope.jurisdiction;\n $rootScope.prepaidAdvantage = 'Not Eligible';\n if (_globalSelectedAccount) {\n if (_globalSelectedAccount.prepaid) {\n vm.isPrepaid = _globalSelectedAccount.prepaid;\n vm.nativeDashboard = false;\n vm.isNonNativeWithAccounts = false;\n vm.isNonNativeWithoutAccounts = false;\n $rootScope.prepaidAdvantage = 'Enrolled';\n } else {\n vm.roleData.experience = _globalSelectedAccount.experience;\n vm.isPrepaid = false;\n if (userJurisdiction === 'SC01' || userJurisdiction === 'SC02') {\n $rootScope.prepaidAdvantage = 'Eligible';\n }\n }\n vm.UMCLoaded = document.querySelectorAll('script[id=\"_cc-umc-modal.njhtml\"]').length > 0;\n vm.efiLoaded = document.querySelectorAll('script[id=\"_cc-efi-modal.njhtml\"]').length > 0;\n if (!$rootScope.consentForUser && vm.UMCLoaded && !vm.redirecting) {\n umcModalService.UMCReadConsent().then(function (result) {\n if (result && !$rootScope.efiInterceptForUser && vm.impDetails === null) {\n umcModalService.getUMCLatestConsent().then(function () {\n vm.umcModalInstance = modalService.umcModal();\n vm.umcModalInstance.result.then(function () {\n // On success of UMC modal\n }, function () {\n umcModalService.UMCUpdateConsent('IGN').then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else if (!$rootScope.efiInterceptForUser && vm.efiLoaded) {\n efiModalService.eligiblitycheck().then(function (response) {\n if (response) {\n vm.efiModal = modalService.efiInterceptModal();\n vm.efiModal.opened.then(function () {\n $timeout(function () {\n if ($(window).width() < 767) {\n document.getElementsByClassName('modal-dialog')[3].style.width = \"\".concat($(window).width(), \"px\");\n }\n }, 1000);\n if (vm.impDetails == null) {\n efiModalService.updateEligibility().then(function () {\n // On Success of EFI Modal\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n });\n }\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n if (_globalSelectedAccount) {\n var paramData = {\n simpleFormat: true,\n contractAccountId: _globalSelectedAccount.accountNum,\n businessPartner: _globalSelectedAccount.bpNumber\n };\n getAccountEnrollmentEligibilityStatus(paramData);\n energyUsageWidthClass();\n setColumnClass();\n vm.primaryEmail = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n getEnrollmentStatusOfExtensionPlan({\n contractAccountId: _globalSelectedAccount.accountNum,\n action: assetService.serviceActions.getEnrollmentOfExtensionPlan.DUEDATE\n }), vm.altId = $rootScope.altId;\n vm.alternateId = vm.altId.filter(function (item) {\n return item.AccountNum === _globalSelectedAccount.accountNum;\n });\n }\n setTimeout(function () {\n if (_globalSelectedAccount) {\n $rootScope.serviceType = 'Not Eligible';\n if (_globalSelectedAccount.isElectricMeter && _globalSelectedAccount.isGasAccount) {\n $rootScope.serviceType = 'ELECTRIC, GAS';\n } else if (_globalSelectedAccount.isElectricMeter) {\n $rootScope.serviceType = 'ELECTRIC';\n } else if (_globalSelectedAccount.isGasAccount) {\n $rootScope.serviceType = 'GAS';\n }\n $rootScope.AccountStat = vm.alternateId[0].AccountStat;\n $rootScope.AlternateID = vm.alternateId[0].AlternateAccountID;\n vm.webObject = {\n event: 'cc-web-service',\n NumberOfAccounts: $rootScope.numberOfAccount ? $rootScope.numberOfAccount : 'Not Eligible',\n AccountStatus: $rootScope.AccountStat ? $rootScope.AccountStat : 'Not Eligible',\n AlternateID: $rootScope.AlternateID ? $rootScope.AlternateID : 'Not Eligible',\n ServiceType: $rootScope.serviceType ? $rootScope.serviceType : 'Not Eligible',\n EBillDirect: $rootScope.EBillDirect ? $rootScope.EBillDirect : 'Not Eligible',\n Segment: 'Res',\n Jurisdiction: $rootScope.jurisdiction ? $rootScope.jurisdiction : 'Not Eligible',\n BudgetBilling: $rootScope.budgetBilling ? $rootScope.budgetBilling : 'Not Enrolled',\n BankDraft_AutoPay: $rootScope.bankDraft ? $rootScope.bankDraft : 'Not Eligible',\n EqualPaymentPlan_FixedBill: $rootScope.equalPaymentplan ? $rootScope.equalPaymentplan : 'Not Eligible',\n EBillDistributed: $rootScope.eBillDistributed ? $rootScope.eBillDistributed : 'Not Eligible',\n DPA_InstallmentPlans: $rootScope.dpa ? $rootScope.dpa : 'Not Eligible',\n DueDateExtension: $rootScope.dueDateExtension ? $rootScope.dueDateExtension : 'Not Eligible',\n DisconnectExtension: $rootScope.disconnectExtension ? $rootScope.disconnectExtension : 'Not Eligible',\n CurrentDueDate: $rootScope.currentDuedate ? $rootScope.currentDuedate : 'Not Eligible',\n PickYourDueDate: $rootScope.pickyourDueDate ? $rootScope.pickyourDueDate : 'Not Eligible',\n Impersonation: impDetails == null ? 'False' : 'True',\n PrepaidAdvantage: $rootScope.prepaidAdvantage ? $rootScope.prepaidAdvantage : 'Not Eligible',\n RateComparison: $rootScope.rateComparison\n };\n sessionStorageService.set(assetService.strings.WEBOBJECT, vm.webObject);\n $rootScope.webservicePush(vm.webObject);\n }\n }, 8000);\n }\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('CCPrepaidAccountSummary', CCPrepaidAccountSummary);\nCCPrepaidAccountSummary.$inject = ['$scope', 'assetService', 'sessionStorageService', 'getPrepaidDetailsService', 'getAccountBalanceForPrepaid', 'commonService', '$filter', '$sce', 'getEligibilityForAutoReloadService', 'getAccountBalanceForRegularAccountService', 'componentStateHandler', 'commongaTaggingService', '$rootScope', '$q', 'apiService'];\nfunction CCPrepaidAccountSummary($scope, assetService, sessionStorageService, getPrepaidDetailsService, getAccountBalanceForPrepaid, commonService, $filter, $sce, getEligibilityForAutoReloadService, getAccountBalanceForRegularAccountService, componentStateHandler, commongaTaggingService, $rootScope, $q, apiService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _globalAccountInfo = null;\n var prepaidDetails = null;\n var accountBalanceDetails = null;\n var eligibilityForAutoReload = null;\n var billingInfo = null;\n var autoReloadEligibleText = 'ELIGIBLE';\n var closedAccountTooltip = 'This account is closed.';\n vm.cashOnlyStatus = null;\n vm.autoReloadCashOnly = false;\n\n /**\r\n * Global Vars\r\n */\n vm.form = {\n accountSummary: null,\n daysLeft: null,\n deferredBalance: null,\n autoreloadFlag: false\n };\n vm.loadingSpinner = true;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n vm.loadingSpinner = true;\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n vm.formatTotalAmount = formatTotalAmount;\n vm.isMobileView = window.innerWidth <= 705;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n /**\r\n * Function Definitions\r\n */\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function getPrepaidDetails(params) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(function (result) {\n prepaidDetails = _objectSpread({}, result.d.PrepaidToBP.results[0].BPToCA.results[0]);\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function getAccountBalancePrepaid(params) {\n return getAccountBalanceForPrepaid.sitecore.getAccountBalanceForPrepaid(params).then(function (result) {\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function getEligibilityForAutoReload(params) {\n return getEligibilityForAutoReloadService.sitecore.getEligibilityForAutoReload(params).then(function (result) {\n eligibilityForAutoReload = result.d.AREligibility_NAV;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function getAccountBalanceRegular(params) {\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\n var result = $rootScope.accountBalanceResult;\n billingInfoRes = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == _globalAccountInfo.accountSelected.accountNum;\n });\n billingInfo = billingInfoRes[0];\n sessionStorageService.set('accountBalanceRes', $rootScope.accountBalanceResult);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(params).then(function (result) {\n billingInfoRes = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == _globalAccountInfo.accountSelected.accountNum;\n });\n billingInfo = billingInfoRes[0];\n sessionStorageService.set('accountBalanceRes', result);\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setModels() {\n vm.form.autoreloadFlag = prepaidDetails.CAToAutoReload.results[0].AutoReloadFlag;\n vm.form.deferredBalance = accountBalanceDetails.DeferredBalance;\n vm.form.accountBalance = accountBalanceDetails.PrepaidBalance; // billingInfo.totalDueDlrs || 0;\n vm.form.isEnrolledInAutoReload = vm.form.autoreloadFlag !== '';\n vm.form.daysLeft = prepaidDetails.EstimatedDaysRemaining;\n vm.form.showTurnOnAutoReload = false;\n vm.form.showManageAutoReload = false;\n vm.form.showAddFunds = false;\n vm.form.showAddFunds = billingInfo.cashOnly === 'F';\n var isEligibleForAutoReload = eligibilityForAutoReload.Eligible === autoReloadEligibleText;\n if (isEligibleForAutoReload) {\n vm.form.showTurnOnAutoReload = !vm.form.isEnrolledInAutoReload;\n }\n vm.form.showManageAutoReload = vm.form.isEnrolledInAutoReload;\n vm.form.showDeferredBalance = true;\n if (parseFloat(vm.form.deferredBalance) <= 0) {\n vm.form.showDeferredBalance = false;\n }\n if (vm.form.daysLeft != '') {\n //format days left\n vm.form.daysLeft = parseInt(vm.form.daysLeft);\n if (vm.form.daysLeft < 0) {\n vm.form.daysLeft = 0;\n }\n }\n vm.showRemainingDaysTooltip = false;\n vm.remainingDaysTooltip = '';\n var messageList = billingInfo.messageList;\n if (messageList.length > 0) {\n var messageInfo = messageList[0];\n if (messageInfo.messageCode !== 'PO' && messageInfo.messagePriority === 2000) {\n vm.showRemainingDaysTooltip = true;\n vm.remainingDaysTooltip = messageInfo.message;\n }\n }\n\n //for closed account\n if (_globalAccountInfo.accountSelected.status === 'Closed') {\n vm.form.showManageAutoReload = false;\n vm.form.showTurnOnAutoReload = false;\n vm.form.showAddFunds = false;\n }\n\n //for inactive account\n zeroBalInd = sessionStorageService.get(assetService.storageKeys.zeroBalInd);\n if (_globalAccountInfo.accountSelected.prepaid === true && _globalAccountInfo.accountSelected.AccountStatus === 'INACTIVE' && zeroBalInd !== 'X') {\n vm.form.accountBalance = billingInfo.totalDueDlrs;\n }\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n }\n function formatTotalAmount(amount) {\n amount = Number.parseFloat(amount) || 0;\n var formattedAmount = String(amount).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? formattedAmount[1] + '0' : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '-';\n formattedIntegerAmount = formattedIntegerAmount.replace('-', '');\n }\n return $sce.trustAsHtml(\"\".concat(lessThanZero, \"$\").concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function dashboardLoaded() {\n var header = assetService.apiHeaders.authorization;\n var targetEndpointUrl = '/form/MyAccountDashboard/DashboardLoaded';\n var requestPayload = '';\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n handleRedirect();\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n }\n function handleRedirect() {\n var params = new URLSearchParams(window.location.search);\n var value = params.get('redirect');\n var dirtyHtml = value;\n var sanitizeValue = value !== null && value !== undefined ? sanitizeHTML(dirtyHtml) : value;\n if (sanitizeValue) {\n setTimeout(function () {\n window.location.href = sanitizeValue;\n }, '1000');\n }\n }\n function sanitizeHTML(input) {\n var div = document.createElement('div');\n div.textContent = input; // Strips HTML tags \n return div.innerHTML;\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n commonService.executePromises([getPrepaidDetails({\n businessPartnerId: _globalAccountInfo.accountSelected.primaryBp,\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n bankDetail: false\n }), getAccountBalancePrepaid({\n contractAccountId: _globalAccountInfo.accountSelected.accountNum\n }), getEligibilityForAutoReload({\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n action: assetService.events.GET_ELIG\n }), getAccountBalanceRegular({\n accountList: [{\n contractAccountNumber: _globalAccountInfo.accountSelected.accountNum,\n zipCode: _globalAccountInfo.accountSelected.zipCode\n }]\n })]).then(function (result) {\n vm.cashOnlyStatus = billingInfo.cashOnly;\n if (vm.cashOnlyStatus == 'T') {\n vm.autoReloadCashOnly = true;\n } else {\n vm.autoReloadCashOnly = false;\n }\n setModels();\n dashboardLoaded();\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n }\n}\napp.controller('CCWidgetMB', CCWidgetMB);\nCCWidgetMB.$inject = ['assetService', '$scope', 'getProductDetailsService', 'sessionStorageService', 'commonService', 'componentStateHandler'];\nfunction CCWidgetMB(assetService, $scope, getProductDetailsService, sessionStorageService, commonService, componentStateHandler) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _globalAccountInfo = null;\n\n /**\r\n * Global Vars\r\n */\n vm.productsCodes = null;\n vm.loadingSpinner = true;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n\n /**\r\n * Function Definitions\r\n */\n function getProductDetails(productCode) {\n return getProductDetailsService.sitecore.getProductDetails({\n productCode: productCode\n }).then(function (result) {\n return {\n productCode: result.code,\n name: result.name,\n description: result.description\n };\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var productCodesArray = vm.productsCodes.split(',');\n var promises = [];\n _.forEach(productCodesArray, function (productCode) {\n return promises.push(getProductDetails(productCode));\n });\n return commonService.executePromises(promises).then(function (results) {\n vm.products = results;\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n }\n}\napp.controller('DashboardNotifications', DashboardNotifications);\nDashboardNotifications.$inject = ['$scope', '$rootScope', 'getAccountConditionService', 'assetService', 'sessionStorageService', 'componentStateHandler'];\nfunction DashboardNotifications($scope, $rootScope, getAccountConditionService, assetService, sessionStorageService, componentStateHandler) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var displayedNotifications = 0;\n var _globalAccountInfo = null;\n var remainingNotifications = [];\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n vm.paymentArrangement = false;\n vm.serviceOrder = false;\n vm.phoneNumber = false;\n vm.outage = false;\n vm.paymentHistory = false;\n vm.delincuency = false;\n vm.manageAccount = true;\n vm.energyUsage = true;\n vm.cart = true;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n vm.loadingSpinner = true;\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.hideShowNext = hideShowNext;\n\n /**\r\n * Function Definitions\r\n */\n function hideShowNext(selected) {\n /* Hide Selected Notification */\n if (selected === 'paymentArrangement') {\n vm.paymentArrangement = false;\n } else if (selected === 'serviceOrder') {\n vm.serviceOrder = false;\n } else if (selected === 'phoneNumber') {\n vm.phoneNumber = false;\n } else if (selected === 'outage') {\n vm.outage = false;\n } else if (selected === 'paymentHistory') {\n vm.paymentHistory = false;\n } else if (selected === 'delincuency') {\n vm.delincuency = false;\n } else if (selected === 'manageAccount') {\n vm.manageAccount = false;\n } else if (selected === 'energyUsage') {\n vm.energyUsage = false;\n } else if (selected === 'cart') {\n vm.cart = false;\n }\n populateNext();\n }\n\n /* Show Next Notification */\n function populateNext() {\n if (remainingNotifications.includes('history')) {\n vm.paymentArrangement = true;\n remainingNotifications.splice('history', 1);\n } else if (remainingNotifications.includes('delincuency')) {\n vm.delincuency = true;\n remainingNotifications.splice('delincuency', 1);\n } else if (remainingNotifications.includes('manage')) {\n vm.manageAccount = true;\n remainingNotifications.splice('manage', 1);\n } else if (remainingNotifications.includes('energy')) {\n vm.energyUsage = true;\n remainingNotifications.splice('energy', 1);\n } else if (remainingNotifications.includes('cart')) {\n vm.cart = true;\n remainingNotifications.splice('cart', 1);\n }\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var params = {\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n businessPartner: _globalAccountInfo.primaryBp\n };\n getAccountConditionService.sitecore.accountCondition(params).then(function (result) {\n var notifications = result.ReturnCodes;\n var notificationsPriority = assetService.dashboardNotifications.priorityMatch;\n _.forEach(notifications, function (notification) {\n var notificationsCode = notification.ReturnCode;\n var notificationsData = notification.ContractAccounts.Response[0];\n if (notificationsCode === notificationsPriority.paymentArrangement.servicePriority && notificationsData != null) {\n displayedNotifications += 1;\n vm.paymentArrangement = true;\n } else if (notificationsCode === notificationsPriority.serviceOrder.servicePriority && notificationsData != null) {\n displayedNotifications += 1;\n vm.serviceOrder = true;\n } else if (notificationsCode === notificationsPriority.phoneNumber.servicePriority && notificationsData != null) {\n displayedNotifications += 1;\n vm.phoneNumber = true;\n } else if (notificationsCode === notificationsPriority.outage.servicePriority && notificationsData != null) {\n displayedNotifications += 1;\n vm.outage = true;\n }\n });\n _.forEach(notifications, function (notification) {\n var notificationsCode = notification.ReturnCode;\n var notificationsData = notification.ContractAccounts.Response[0];\n if (notificationsCode === notificationsPriority.paymentHistory.servicePriority && notificationsData != null) {\n if (displayedNotifications < 4) {\n displayedNotifications += 1;\n vm.paymentHistory = true;\n } else {\n remainingNotifications.push('history');\n }\n }\n });\n _.forEach(notifications, function (notification) {\n var notificationsCode = notification.ReturnCode;\n var notificationsData = notification.ContractAccounts.Response[0];\n if (notificationsCode === notificationsPriority.delincuency.servicePriority && notificationsData != null) {\n if (displayedNotifications < 4) {\n displayedNotifications += 1;\n vm.delincuency = true;\n } else {\n remainingNotifications.push('delincuency');\n }\n }\n });\n if (displayedNotifications === 2) {\n remainingNotifications.push('cart');\n vm.cart = false;\n } else if (displayedNotifications === 3) {\n remainingNotifications.push('energy');\n remainingNotifications.push('cart');\n vm.energyUsage = false;\n vm.cart = false;\n } else if (displayedNotifications >= 4) {\n remainingNotifications.push('manage');\n remainingNotifications.push('energy');\n remainingNotifications.push('cart');\n vm.manageAccount = false;\n vm.energyUsage = false;\n vm.cart = false;\n }\n componentStateHandler.showComponent(vm);\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n\n /**\r\n * Initialization\r\n */\n $scope.init = function () {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n };\n}\napp.controller('WidgetBPPController', WidgetBPPController);\nWidgetBPPController.$inject = ['$log', '$scope', 'getAccountEnrollmentEligibilityStatusService', 'getAccountBalanceForRegularAccountService', 'assetService', 'commonService', 'sessionStorageService', 'broadcastService', '$rootScope', 'componentStateHandler', 'getInvoiceListService', 'getPaymentHistoryService', 'checkEligibilityForPrepaidService', 'prepaidService'];\nfunction WidgetBPPController($log, $scope, getAccountEnrollmentEligibilityStatusService, getAccountBalanceForRegularAccountService, assetService, commonService, sessionStorageService, broadcastService, $rootScope, componentStateHandler, getInvoiceListService, getPaymentHistoryService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _globalAccountInfo = null;\n /**\r\n * Global Vars\r\n */\n\n vm.changueDataTable = [{\n comparison: [true, false],\n changes: ['Enrolled', 'Not Enrolled'],\n key: 'status'\n }];\n vm.dataTable = [];\n vm.eligibleproducts = [];\n vm.enrolled = 'ENROLLED';\n vm.eligible = 'ELIGIBLE';\n vm.headerKey = ['name', 'status'];\n vm.iconTable = [{\n tipe: 'icon',\n icon: 'Assets/img/table/approve.svg',\n value: true,\n tableHeaderkey: 'status',\n column: 1,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/table/deny.svg',\n value: false,\n tableHeaderkey: 'status',\n column: 1,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/billing/pick.svg',\n value: 'Auto Pay',\n tableHeaderkey: 'name',\n column: 0,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/billing/budget.svg',\n value: 'Budget Billing',\n tableHeaderkey: 'name',\n column: 0,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/billing/duedate.svg',\n value: 'Pick Your Due Date',\n tableHeaderkey: 'name',\n column: 0,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/icons/power-meter.png',\n value: 'Duke Energy Prepaid Advantage',\n tableHeaderkey: 'name',\n column: 0,\n all: false\n }, {\n tipe: 'icon',\n icon: 'Assets/img/icons/scales.png',\n value: 'Fixed Bill',\n tableHeaderkey: 'name',\n column: 0,\n all: false\n }];\n vm.loadingSpinner = true;\n vm.programs = [];\n vm.ineligible = 'INELIGIBLE';\n vm.isBillGenerated = false;\n vm.hideBudBil = false;\n vm.showBPError = false;\n vm.checkTogglingStatus = checkTogglingStatus;\n\n /** Watchers */\n $scope.$on(assetService.events.dashboardLoad, function () {\n // widget loader\n if (!vm.roleBase) {\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n }\n });\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n function setModels() {\n vm.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n }\n function checkTogglingStatus() {\n var bpTable = angular.element('.CC-Widget-BBP .CC-basic-table__row');\n if (bpTable && bpTable.length == 1 && angular.element('.CC-Widget-BBP .CC-basic-table__column__container') && angular.element('.CC-Widget-BBP .CC-basic-table__column__container')[0].innerText == '') {\n angular.element('div.CC-Widget-BBP').closest('.CC-Widget')[0].style.visibility = 'hidden';\n return false;\n }\n angular.forEach(bpTable, function (row) {\n if (row.cells[0].innerText == '') {\n row.style.display = 'none';\n }\n });\n return true;\n }\n function load() {\n vm.loadingSpinner = true;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var moveInDate = new Date(_globalAccountInfo.accountSelected.ActiveDate).getTime();\n var currentDate = new Date().getTime();\n vm.hideBudBil = moveInDate >= currentDate;\n var params = {\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n businessPartner: _globalAccountInfo.primaryBp\n };\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n if (!vm.roleBase) {\n broadcastService.dashboardWidget();\n }\n var dataObj = {\n contractAccountId: params.contractAccountId,\n businessPartner: params.businessPartner,\n invoiceId: null,\n EmailID: $rootScope.currentUserEmailId,\n userId: $rootScope.currentUserCdpId,\n requestedBy: $rootScope.currentUserEmailId //Get RequestedBy Value\n };\n commonService.executePromises([getAccountEnrollmentEligibilityStatus(params), getInvoiceList(params), getAccountBalance({\n accountList: [{\n contractAccountNumber: params.contractAccountId,\n zipCode: _globalAccountInfo.accountSelected.zipCode\n }]\n })]).then(function () {\n setModels();\n }, function () {\n componentStateHandler.failedStateDashboard(vm);\n });\n function getAccountEnrollmentEligibilityStatus(data) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.eligibilityStatusResult) {\n var result = $rootScope.eligibilityStatusResult;\n setEligibilityStatusModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(data).then(function (result) {\n setEligibilityStatusModel(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setEligibilityStatusModel(result) {\n if (result) {\n vm.programs = [];\n vm.statusValue = _.filter(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === 'BUDBIL';\n });\n vm.statusAutopay = _.filter(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === 'DIRDEB';\n });\n vm.statusFixedpay = _.filter(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === 'FIXBIL';\n });\n vm.statusDueDate = _.filter(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === 'PYODDA';\n });\n $rootScope.budgetBilling = vm.statusValue[0].EligibilityStatus;\n if ($rootScope.budgetBilling && $rootScope.budgetBilling.toLowerCase() === 'ineligible') {\n $rootScope.budgetBilling = 'Not Eligible';\n }\n $rootScope.bankDraft = vm.statusAutopay[0].EligibilityStatus;\n if ($rootScope.bankDraft && $rootScope.bankDraft.toLowerCase() === 'ineligible') {\n $rootScope.bankDraft = 'Not Eligible';\n }\n $rootScope.equalPaymentplan = vm.statusFixedpay[0].EligibilityStatus;\n if ($rootScope.equalPaymentplan && $rootScope.equalPaymentplan.toLowerCase() === 'ineligible') {\n $rootScope.equalPaymentplan = 'Not Eligible';\n }\n $rootScope.pickyourDueDate = vm.statusDueDate[0].EligibilityStatus;\n if ($rootScope.pickyourDueDate && $rootScope.pickyourDueDate.toLowerCase() === 'ineligible') {\n $rootScope.pickyourDueDate = 'Not Eligible';\n }\n if (vm.statusValue[0].EligibilityStatus == 'Ineligible' && vm.statusAutopay[0].EligibilityStatus == 'Ineligible' && vm.statusFixedpay[0].EligibilityStatus == 'Ineligible' && vm.statusDueDate[0].EligibilityStatus == 'Ineligible') {\n vm.showBPError = true;\n } else {\n vm.showBPError = false;\n }\n vm.programs = _.filter(_.map(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return {\n name: assetService.billingAndPaymentPrograms[item.ProgName],\n status: item.EligibilityStatus.toUpperCase(),\n code: item.ProgName.toUpperCase(),\n planType: setProgramId(item),\n PyddaDate: item.PyddaDate.length < 2 ? moment.utc(new Date('2020-03-' + \"0\".concat(item.PyddaDate))).format('Do') : moment.utc(new Date('2020-03-' + item.PyddaDate)).format('Do'),\n enrolledDate: item.EnrolledDate ? moment(item.EnrolledDate).utc().format('MM/DD/YYYY') : 'XX/XX/XXXX'\n };\n }), function (item) {\n return item.status !== vm.ineligible && !(item.code == 'BUDBIL' && vm.hideBudBil);\n });\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n }\n function setProgramId(data) {\n var programId = '';\n if (data.ProgName.toUpperCase() === 'BUDBIL') {\n programId = data.ProgramId === 'BBPQ' ? 'Quarterly' : data.ProgramId === 'BBPA' ? 'Annual' : '';\n }\n return programId;\n }\n function getInvoiceList(params) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.invoiceListResult) {\n var result = $rootScope.invoiceListResult;\n setInvoiceListModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getInvoiceListService.sitecore.getInvoiceList(params).then(function (result) {\n if (result) {\n setInvoiceListModel(result);\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n });\n }\n function setInvoiceListModel(result) {\n var data = result.d.Inp_Req.results[0].Account_Invoice.results;\n var sortedData = _.orderBy(data, ['BillEndDateStr'], ['desc']);\n var fixedBillAmt = _.find(sortedData, function (element) {\n var billDate = new Date(moment(element.BillEndDateStr).utc().format('MM/DD/YYYY'));\n var enrollDate = new Date(moment(vm.statusFixedpay[0].EnrolledDateStr).utc().format('MM/DD/YYYY'));\n if (billDate > enrollDate && parseInt(element.FBAmount) > 0) {\n return true;\n } else {\n return false;\n }\n });\n fixedBillAmt ? vm.fixedBillamount = parseFloat(fixedBillAmt.FBAmount).toFixed(2) : vm.fixedBillamount = '';\n var budgetBillAmt = _.find(sortedData, function (element) {\n billDate = new Date(moment(element.BillEndDateStr).utc().format('MM/DD/YYYY'));\n enrollDate = new Date(moment(vm.statusValue[0].EnrolledDateStr).utc().format('MM/DD/YYYY'));\n if (billDate > enrollDate && parseInt(element.BBAmount) > 0) {\n return true;\n } else {\n return false;\n }\n });\n budgetBillAmt ? vm.budgetBillAmount = parseFloat(budgetBillAmt.BBAmount).toFixed(2) : vm.budgetBillAmount = '';\n }\n function getAccountBalance(data) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\n var result = $rootScope.accountBalanceResult;\n setAccountBalanceModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n setAccountBalanceModel(result);\n }, function () {\n return componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setAccountBalanceModel(result) {\n if (result) {\n vm.paynowStatus = result.getAccountAndBillingInfoResList[0].cashOnly === 'T' || result.getAccountAndBillingInfoResList[0].noCheckDraftInd === 'T' ? true : false;\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n }\n }\n\n /**\r\n * Initialization\r\n */\n $scope.init = function () {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n load();\n }\n };\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('WidgetDueController', WidgetDueController);\nWidgetDueController.$inject = ['$scope', 'assetService', 'invoiceImageService', 'modalService', 'sessionStorageService', 'getAccountBalanceForRegularAccountService', 'getInvoiceListService', 'getPaymentHistoryService', 'commonService', '$filter', '$sce', '$rootScope', 'componentStateHandler', 'dateHelperService', 'commongaTaggingService', 'errorHandlingService', '$q', 'apiService'];\nfunction WidgetDueController($scope, assetService, invoiceImageService, modalService, sessionStorageService, getAccountBalanceForRegularAccountService, getInvoiceListService, getPaymentHistoryService, commonService, $filter, $sce, $rootScope, componentStateHandler, dateHelperService, commongaTaggingService, errorHandlingService, $q, apiService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n vm.sortAsc = true;\n vm.dateToSort = assetService.strings.SORTBY_DATEFORSORT;\n var _dueDate = assetService.strings.SORTBY_DATEFORSORT;\n var _invoicesData = null;\n var _invoicesDataSorted = null;\n var _globalAccountInfo = {};\n var _paramObj = {};\n var _paymentsData = null;\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n var pmCount = 0;\n var functionalityHeadLine = '';\n var windowReference = null;\n var isSafari = navigator.vendor.match(/apple/i) && !navigator.userAgent.match(/crios/i) && !navigator.userAgent.match(/fxios/i) && !navigator.userAgent.match(/Opera|OPT\\//);\n /**\r\n * Global Vars\r\n */\n vm.accountDue = {};\n vm.activateDetailsVar = [];\n vm.bills = null;\n vm.data = {};\n vm.toggleBPInfoVar = false;\n vm.loadingSpinner = true;\n vm.displayCPIMessage = false;\n vm.message = null;\n vm.currentUser = {};\n vm.showError = showError;\n vm.activeError = [];\n vm.roleBase = {};\n vm.latestScheduledPayment = {};\n vm.guid = '';\n vm.emptyState = false;\n vm.closedOrInactive = false;\n var paymentDescription = {};\n\n /**\r\n * Function Declarations\r\n */\n vm.getDocument = getDocument;\n vm.payNow = payNow;\n vm.toggleBPInfo = toggleBPInfo;\n vm.init = init;\n vm.formatTotalAmount = formatTotalAmount;\n vm.hideAccount = hideAccount;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.onCLickBPA = onCLickBPA;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n vm.loadingSpinner = true;\n load();\n });\n\n /* Function Definitions */\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid || ''\n });\n };\n function virtualPagePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.attributePush(arrayElements);\n }\n function onCLickBPA(action, subAction) {\n var accountStatus = vm.closedOrInactive ? 'closed-account' : 'open-account';\n pushDL('my_account', \"\".concat($rootScope.dataLayerFormat(action), \"-|-\").concat(subAction), \"billing-payment-activity-|-\".concat(accountStatus));\n }\n function pdfNotFoundAttibutePush() {\n if (functionalityHeadLine) {\n functionalityHeadLine = $('#hdn-dd').attr('subhead2');\n } else {\n functionalityHeadLine = $('#hdn-dd').attr('Headline');\n }\n attributePush('workFlow: error ' + $('#hdn-dd').attr('labelPDF'), 'headline:' + $('#hdn-dd').attr('businessFunction'), 'subheadline:' + functionalityHeadLine, 'buttonText:' + 'not-set', 'addedSpec:' + assetService.sitecoreEndpoints.InvoiceImage, 'addedEvent:' + $('#hdn-dd').attr('eventActionPDF'));\n virtualPagePush($('#hdn-dd').attr('businessFunction'), $('#hdn-dd').attr('businessFunction'), $('#hdn-dd').attr('labelPDF'), 'error', 'not set');\n }\n function toggleBPInfo() {\n vm.toggleBPInfoVar = !vm.toggleBPInfoVar;\n }\n function showError(value, rule) {\n if (rule !== 0) {\n vm.activeError[value] = true;\n } else {\n for (var index = 0; index < vm.activeError.length; index++) {\n vm.activeError[index] = false;\n }\n }\n }\n function hideAccount(value) {\n var convertedValue = value;\n if (convertedValue && !isNaN(convertedValue)) {\n var stringLength = convertedValue.length,\n visibleDigits = 4;\n if (stringLength > visibleDigits) {\n convertedValue = convertedValue.slice(-visibleDigits);\n }\n convertedValue = \"*****\".concat(convertedValue);\n }\n return convertedValue;\n }\n function setModels(scheduledPayment) {\n vm.bills = _.orderBy(_invoicesData, [_dueDate], ['desc']);\n vm.latestScheduledPayment = scheduledPayment;\n var options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n if (vm.data.dueDate && vm.data.dueDate.toString().length > 7) {\n var updt = vm.data.dueDate.toString().replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/, '$2/$3/$1');\n var newDate = new Date(moment(updt));\n vm.data.dueDate = newDate.toLocaleDateString('en', options);\n } else {\n vm.data.dueDate = '';\n }\n sessionStorageService.set(assetService.storageKeys.dashboard.dueData, vm.data);\n componentStateHandler.showComponent(vm);\n }\n function getAccountBalance(data) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\n var result = $rootScope.accountBalanceResult;\n setAccountBalanceModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n setAccountBalanceModel(result);\n }, function () {\n return componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setAccountBalanceModel(result) {\n if (result) {\n var accountSelected = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == _globalAccountInfo.accountSelected.accountNum;\n });\n zeroBalInd = sessionStorageService.get(assetService.storageKeys.zeroBalInd);\n var infoResList = accountSelected[0];\n $rootScope.currentDuedate = infoResList.currentDueDate;\n var msgPriority = infoResList.messageList[0].messagePriority;\n vm.paynowStatus = infoResList.cashOnly === 'T' ? false : true;\n vm.closedAccount = _globalAccountInfo.accountSelected.status === 'Closed' || _globalAccountInfo.accountSelected.status === 'INACTIVE' && zeroBalInd;\n vm.closedOrInactive = !!(_globalAccountInfo.accountSelected.status === 'Closed' || _globalAccountInfo.accountSelected.status === 'INACTIVE');\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n sessionStorageService.set(assetService.storageKeys.accountBalRegSession, infoResList);\n var messageList = infoResList.messageList;\n if (messageList.length > 0 && messageList[0].messageCode !== '80 ' && messageList[0].messageCode !== 'PO' && msgPriority === 2000 && msgPriority !== null && msgPriority !== '') {\n var response = _.map(messageList, function (msg) {\n return {\n displayCPIMessage: true,\n message: msg.message\n };\n });\n vm.displayCPIMessage = response[0].displayCPIMessage;\n vm.message = response[0].message;\n } else {\n vm.displayCPIMessage = false;\n }\n var options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n var dateToDisplay = infoResList.currentDueDate ? infoResList.currentDueDate : infoResList.installmentDueDate;\n var parsedDate = dateToDisplay ? dateHelperService.parseSimpleDate(String(dateToDisplay)) : '';\n var date = parsedDate ? new Date(\"\".concat(parsedDate.month, \"/\").concat(parsedDate.day, \"/\").concat(parsedDate.year)) : '';\n vm.data.dueDate = date ? date.toLocaleDateString('en', options) : '';\n vm.data.dueAmmount = infoResList.totalDueDlrs || 0;\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n }\n function showPDFModal() {\n pdfNotFoundAttibutePush();\n modalService.pdfNotFound();\n }\n function getDocument(item) {\n if (isSafari) {\n windowReference = window.open();\n windowReference.document.body.innerHTML = 'Please wait...';\n }\n functionalityHeadLine = item;\n var invoiceId = '';\n var imageAvailable = '';\n if (!item) {\n invoiceId = vm.bills[0].itemId;\n imageAvailable = vm.bills[0].isImageAvailable;\n } else {\n invoiceId = item.itemId;\n imageAvailable = item.isImageAvailable;\n }\n paramObj = {\n documentNumber: invoiceId\n };\n return invoiceImageService.sitecore.invoceImage(paramObj).then(function (result) {\n if (result && result.MessageReply && result.MessageReply.replyCode && result.MessageReply.replyCode != '') {\n var hexValue = result.MessageReply.replyCode;\n if (hexValue && imageAvailable) {\n var hexToBase64 = function hexToBase64(str) {\n return btoa(str.match(/\\w{2}/g).map(function (a) {\n return String.fromCharCode(parseInt(a, 16));\n }).join(''));\n };\n var base64Value = hexToBase64(hexValue);\n var byteCharacters = atob(base64Value);\n var byteNumbers = new Array(byteCharacters.length);\n for (var i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n var byteArray = new Uint8Array(byteNumbers);\n var file = new Blob([byteArray], {\n type: 'application/pdf'\n });\n var fileURL = URL.createObjectURL(file);\n viewBillAttributePush();\n if (isSafari) {\n windowReference.location = fileURL;\n } else {\n window.open(fileURL);\n }\n }\n } else {\n if (isSafari) {\n windowReference.close();\n }\n showPDFModal();\n }\n }, function () {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function viewBillAttributePush() {\n if (functionalityHeadLine) {\n functionalityHeadLine = $('#hdn-dd').attr('subhead2');\n } else {\n functionalityHeadLine = $('#hdn-dd').attr('Headline');\n }\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + functionalityHeadLine, 'buttonText:' + $('#hdn-dd').attr('labelPDF'));\n }\n function getInvoices(paramData) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.invoiceListResult) {\n var result = $rootScope.invoiceListResult;\n setInvoiceListModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getInvoiceListService.sitecore.getInvoiceList(paramData).then(function (result) {\n setInvoiceListModel(result);\n }, function () {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setInvoiceListModel(result) {\n if (result) {\n _invoicesData = _.map(result.d.Inp_Req.results[0].Account_Invoice.results, function (invoice) {\n return {\n itemId: invoice.InvArchieveId,\n dateForSort: invoice.InvDateStr,\n dueDate: moment(invoice.InvDateStr).format('MM/DD/YY'),\n type: assetService.strings.TYPE_BILL,\n dueAmount: Number(invoice.InvAmt),\n isImageAvailable: invoice.IsImageAvlbl\n };\n });\n return _invoicesData;\n }\n componentStateHandler.failedStateDashboard(vm);\n return [];\n }\n function getPayments(paramData) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(paramData).then(function (result) {\n if (result) {\n _paymentsData = result.d.Req_Inp.results[0].Inp_Res.results;\n if (!_paymentsData || _paymentsData.length === 0) {\n return null;\n }\n var payment = _paymentsData[0];\n return {\n dateForSort: payment.Payment_Status === 'SCHEDULED' ? payment.Payment_Due_Date : payment.Payment_Date,\n dueDate: moment(payment.Payment_Due_Date).utc().format('MMMM DD, YYYY'),\n dueAmount: Number(payment.Payment_Amount),\n // Same as paymentAmount\n paymentStatus: payment.Payment_Status\n };\n }\n componentStateHandler.failedStateDashboard(vm);\n return null;\n }, function () {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function payNow(event) {\n event.stopPropagation();\n event.preventDefault();\n var link = event.target.getAttribute('href');\n var payNowData = {\n totalAmount: vm.data.dueAmmount,\n billsQuantity: 1,\n selectedAccounts: [{\n account: _globalAccountInfo.accountSelected.accountNum\n }]\n };\n sessionStorageService.set(assetService.storageKeys.dashboard.payNowData, payNowData);\n window.location.href = \"\".concat(link);\n }\n function formatTotalAmount(amount) {\n amount = Number.parseFloat(amount) || 0;\n var formattedAmount = String(amount).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '';\n } else if (formattedAmount[0].indexOf('-') >= 0) {\n lessThanZero = '-';\n }\n return $sce.trustAsHtml(\"$\".concat(lessThanZero).concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function dashboardLoaded() {\n var header = assetService.apiHeaders.authorization;\n var targetEndpointUrl = '/form/MyAccountDashboard/DashboardLoaded';\n var requestPayload = '';\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n handleRedirect();\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n }\n function handleRedirect() {\n var params = new URLSearchParams(window.location.search);\n var value = params.get('redirect');\n var dirtyHtml = value;\n var sanitizeValue = value !== null && value !== undefined ? sanitizeHTML(dirtyHtml) : value;\n if (sanitizeValue) {\n setTimeout(function () {\n window.location.href = sanitizeValue;\n }, '1000');\n }\n }\n function sanitizeHTML(input) {\n var div = document.createElement('div');\n div.textContent = input; // Strips HTML tags \n return div.innerHTML;\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var params = {\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n businessPartner: _globalAccountInfo.primaryBp,\n zipCode: _globalAccountInfo.accountSelected.zipCode,\n invoiceCount: '1'\n };\n commonService.executePromises([getPayments(_objectSpread(_objectSpread({}, params), {}, {\n EmailID: _globalAccountInfo.userEmail,\n action: assetService.serviceActions.getPaymentHistory.DASH_PAY\n })), getInvoices(_objectSpread(_objectSpread({}, params), {}, {\n isDashboard: true,\n action: assetService.strings.INVLIST_REQ_DASH,\n top: assetService.strings.ONE,\n invoiceCount: assetService.serviceActions.getInvoiceList.INVOICE_COUNT\n })), getAccountBalance({\n accountList: [{\n contractAccountNumber: params.contractAccountId,\n zipCode: params.zipCode\n }]\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n scheduledPayment = _ref2[0];\n setModels(scheduledPayment);\n dashboardLoaded();\n componentStateHandler.showComponent(vm);\n }, function () {\n return componentStateHandler.failedStateDashboard(vm);\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n // on globalswitcher account ?\n load();\n }\n }\n init();\n}\nfunction WidgetEnergyUsageController($scope, assetService, $rootScope, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n vm.isPrepaidAdvantage = false;\n vm.guid = '';\n\n /**\r\n * GA Tagging\r\n */\n\n vm.pushVPV = function (vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n vm.pushDL = function (category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n vm.gaTagging = function (action, subAction) {\n var label = vm.isClosed ? 'closed-account' : 'open-account';\n if (vm.isPrepaidAdvantage) label = 'prepaid-advantage';\n vm.pushDL('task_tiles', \"\".concat($rootScope.dataLayerFormat(action), \"-|-\").concat(subAction), label);\n };\n\n /**\r\n * load function\r\n */\n var load = function load() {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var globalSelectedAccount = globalAccountInfo.accountSelected;\n vm.isPrepaidAdvantage = globalSelectedAccount && globalSelectedAccount.prepaid ? globalSelectedAccount.prepaid : false;\n vm.isClosed = !!(globalSelectedAccount && (globalSelectedAccount.status === 'Closed' || globalSelectedAccount.status === 'INACTIVE'));\n };\n\n /**\r\n * Initialization\r\n */\n vm.init = function (obj) {\n load();\n vm.guid = obj.Guid;\n };\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n load();\n });\n}\nWidgetEnergyUsageController.$inject = ['$scope', 'assetService', '$rootScope', 'sessionStorageService'];\napp.controller('WidgetEnergyUsageController', WidgetEnergyUsageController);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('widgetManageProductServicesController', widgetManageProductServicesController);\nwidgetManageProductServicesController.$inject = ['$log', 'getEnrollmentsService', 'commonService', 'getProductDetailsService', 'assetService', 'getLoggedInUserDetailsService', 'ccGetUserAccountsService', '$location', 'componentStateHandler'];\nfunction widgetManageProductServicesController($log, getEnrollmentsService, commonService, getProductDetailsService, assetService, getLoggedInUserDetailsService, ccGetUserAccountsService, $location, componentStateHandler) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _CANCELLED = assetService.strings.CANCELLED;\n var _Cancelled = assetService.strings.Cancelled;\n var _ENROLL = assetService.strings.ENROLL;\n var _Enrolled = assetService.strings.Enrolled;\n var _UPGRADE = assetService.strings.UPGRADE;\n var _Upgrade = assetService.strings.Upgrade;\n var _RECURRING = assetService.strings.RECURRING;\n var _startedFromWatcher = false;\n var _startedFromScope = false;\n\n /**\r\n * Global Vars\r\n */\n vm.Enrolled = _Enrolled;\n vm.Cancelled = _Cancelled;\n vm.switch = 1;\n vm.subscriptions = null;\n vm.loadingSpinner = true;\n vm.enrollmentStatuses = angular.copy(assetService.enrollmentStatuses);\n\n /**\r\n * Watchers\r\n */\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n\n /* Function Definitions */\n function getRecurrentPayments(enrollments) {\n return _.take(_.filter(enrollments.EnrollmentArray.results, function (result) {\n return result.TypeOfTheCharge === _RECURRING;\n }).map(function (enrollment) {\n return {\n price: enrollment.Price,\n status: function () {\n switch (enrollment.Substatus) {\n case _ENROLL:\n return _Enrolled;\n case _UPGRADE:\n return _Upgrade;\n case _CANCELLED:\n return _Cancelled;\n default:\n return '';\n }\n }(),\n fullAddress: \"\".concat(enrollments.HouseNumber, \" \").concat(enrollments.Street, \" \").concat(enrollments.City, \" \").concat(enrollments.CityPostalCode),\n productCode: enrollment.ProductCode,\n enrollmentCode: enrollment.EnrollmentCodeContract,\n providerContract: enrollment.ProviderContract,\n cancellationDate: enrollment.CancellationDate,\n startDate: enrollment.StartDate\n };\n }), 2);\n }\n function formatProducts(enrollments, productDefinitions) {\n return _.map(enrollments, function (enrollment) {\n return _objectSpread(_objectSpread({}, enrollment), {}, {\n product: {\n productCode: enrollment.productCode,\n title: function () {\n var productFound = _.find(productDefinitions, function (productDefinition) {\n return productDefinition.productCode === enrollment.productCode;\n });\n return productFound ? productFound.name : '';\n }(),\n image: function () {\n var productFound = _.find(productDefinitions, function (productDefinition) {\n return productDefinition.productCode === enrollment.productCode;\n });\n if (productFound) {\n if (Object.prototype.hasOwnProperty.call(productFound, 'images')) {\n var images = _.find(productFound.images, function (image) {\n var imageFound = null;\n if (image.format === 'thumbnail') {\n imageFound = image;\n } else if (image.format === 'product') {\n imageFound = image;\n }\n if (imageFound) {\n return {\n url: image.url,\n alt: image.altText ? image.altText : productFound.name\n };\n }\n });\n if (images) {\n return images;\n }\n }\n }\n return {\n url: null,\n alt: productFound.name\n };\n }()\n }\n });\n });\n }\n function getEnrollments(paramData) {\n return getEnrollmentsService.sitecore.getEnrollments(paramData).then(function (result) {\n return result.results[0].ContractAccountArray.results[0];\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getProductDetails(productCode) {\n return getProductDetailsService.sitecore.getProductDetails({\n productCode: productCode\n }).then(function (result) {\n return {\n productCode: result.code,\n name: result.name,\n images: Object.prototype.hasOwnProperty.call(result, 'images') ? result.images : []\n };\n });\n }\n function load() {\n var data = null;\n if (assetService.apiConfig.useLocalHost) {\n data = {\n businessPartnerId: $location.search().businessPartnerId,\n // Get Primary Bp\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpId: $location.search().cdpId // Get Primary Bp\n };\n } else {\n data = {\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId\n };\n }\n ccGetUserAccountsService.getUserAccounts(data).then(function (results) {\n if (results && results.accounts.length > 0) {\n vm.bp = results.bpData.primaryBp;\n var paramData = {\n BusinessPartner: results.bpData.primaryBp\n };\n getEnrollments(paramData).then(function (enrollments) {\n var recurringPayments = getRecurrentPayments(enrollments);\n var productCodesArray = _.map(recurringPayments, function (recurringPayment) {\n return recurringPayment.productCode;\n });\n var promises = [];\n _.forEach(productCodesArray, function (productCode) {\n return promises.push(getProductDetails(productCode));\n });\n return commonService.executePromises(promises).then(function (promisesResults) {\n var productDefinitions = promisesResults;\n vm.subscriptions = formatProducts(recurringPayments, productDefinitions);\n componentStateHandler.showComponent(vm);\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n });\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n });\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n if (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n } else {\n componentStateHandler.failedStateDashboard(vm);\n }\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n } else {\n load();\n }\n }\n}\napp.controller('CorrespondenceController', CorrespondenceController);\nCorrespondenceController.$inject = ['genericHelperService', 'displayCommunicationHistoryService', 'apiApigeeConfigService', 'assetService', 'sessionStorageService', '$scope'];\nfunction CorrespondenceController(genericHelperService, displayCommunicationHistoryService, apiApigeeConfigService, assetService, sessionStorageService, $scope) {\n /*--------------Scope Vars-----------------------*/\n var _url = null;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n /*--------------Global Vars-----------------------*/\n var vm = this;\n vm.userAccounts = {};\n vm.contractAccountId;\n vm.showIcon = false;\n vm.dataDrop = {\n range: [{\n text: \"Show All\",\n selected: true,\n value: -1\n }, {\n text: \"5 Most Recent\",\n value: 5\n }, {\n text: \"This Year\",\n value: 1\n }, {\n text: \"Last Year\",\n value: 12\n }]\n };\n vm.selectInitial = {\n text: \"Show All\",\n value: -1\n };\n vm.copyData = {\n correspondence: {\n range: 1,\n title: null,\n info: 1\n }\n };\n vm.corresponData = {\n correspondence: {\n range: 1,\n title: null,\n info: 1\n }\n };\n vm.categoryDrop = [];\n\n /*--------------Function Definitions-----------------------*/\n\n vm.categoryData = categoryData;\n vm.categoryDate = categoryDate;\n vm.selectCategoryDate = -1;\n vm.convert = convert;\n vm.findText = findText;\n vm.filterDate = function (value) {\n if (value >= 0) {\n var endDate = new Date();\n var startDate = new Date();\n if (value == 1) {\n startDate = new Date(endDate.getFullYear(), 0, 1);\n } else {\n startDate.setMonth(endDate.getMonth() - (value - 1));\n }\n vm.corresponData.correspondence.info = genericHelperService.filterDates(vm.copyData.correspondence.info, startDate, endDate);\n } else {\n vm.corresponData.correspondence.info = vm.copyData.correspondence.info;\n }\n };\n vm.filterData = function (value) {\n vm.corresponData.correspondence.info = vm.copyData.correspondence.info.filter(function (data) {\n return data.category === value;\n });\n };\n vm.orderDate = function () {\n vm.showIcon = !vm.showIcon;\n if (vm.showIcon) {\n vm.corresponData.correspondence.info = genericHelperService.orderDateDesc(vm.corresponData.correspondence.info);\n } else {\n vm.corresponData.correspondence.info = genericHelperService.orderDateAsc(vm.corresponData.correspondence.info);\n }\n };\n function categoryDate() {\n vm.filterDate(vm.selectCategoryDate);\n }\n function categoryData() {\n vm.filterData(vm.selectCategoryData);\n }\n function dataCategoryTypes() {\n vm.categoryDrop = _.map(_.uniq(vm.corresponData.correspondence.info, 'category'), function (item) {\n return {\n value: item.category,\n text: item.category\n };\n });\n vm.categoryDrop = _.sortBy(vm.categoryDrop, function (o) {\n return o.value;\n });\n }\n function setModel() {\n vm.copyData.correspondence.info = vm.corresponData.correspondence.info;\n dataCategoryTypes();\n }\n function load() {\n if (globalSelectedAccount.accountNum && globalSelectedAccount.primaryBp) {\n var contractAccountId = globalSelectedAccount.accountNum;\n var businessPartnerId = globalSelectedAccount.primaryBp;\n var _accountData = {\n contractAccountId: contractAccountId,\n businessPartnerId: businessPartnerId\n };\n }\n displayCommunicationHistory(accountData);\n }\n function displayCommunicationHistory(accountData) {\n displayCommunicationHistoryService.sitecore.displayCommunicationHistory(accountData).then(function (result) {\n transformDataCorrespondance(result.d.CORRESPONDENCE_NAV.results);\n setModel();\n });\n }\n function transformDataCorrespondance(data) {\n vm.corresponData.correspondence.info = data.map(function (value) {\n var datetrans = moment(parseInt(value.CorrDate.slice(6, 18))).format('L');\n var newValue;\n return newValue = {\n date: datetrans,\n category: value.Category,\n subject: value.LetterDesc,\n deliveryMethod: value.Delivery\n };\n });\n vm.copyData.correspondence.info = vm.corresponData.correspondence.info;\n vm.selectInitial = vm.dataDrop.range[0].text;\n }\n function convert(data) {\n data = data.toLowerCase();\n var dataReplaced = data.replace(/ /g, \"-\");\n return dataReplaced;\n }\n function findText(items, value) {\n var item = items.filter(function (data) {\n return data.value === value;\n });\n return item[0].text;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n function init() {\n /*empty function*/\n }\n init();\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('AccountPermissionsController', AccountPermissionsController);\nAccountPermissionsController.$inject = ['$log', '$scope', '$rootScope', 'genericHelperService', 'assetService', 'ccDelegationAssetService', 'getUserRolesAdministrationService', 'sessionStorageService', 'dateHelperService', 'TableHelperService', 'retrieveDelegationService', 'accountSearchService', 'updateDelegationService', 'maintainRelationshipService', 'modalService', 'dataModelsDTOProductsAndServices', 'FPBroadcastService', 'commongaTaggingService'];\nfunction AccountPermissionsController($log, $scope, $rootScope, genericHelperService, assetService, ccDelegationAssetService, getUserRolesAdministrationService, sessionStorageService, dateHelperService, tableHelperService, retrieveDelegationService, accountSearchService, updateDelegationService, maintainRelationshipService, modalService, dataModelsDTOProductsAndServices, FPBroadcastService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _action = assetService.serviceActions.maintainRelationship.UPD_REL;\n // const _successToast = assetService.strings.success;\n var _fadeOut = ccDelegationAssetService.strings.FADEOUT;\n var _fadeInOut = ccDelegationAssetService.strings.FADEINOUT;\n var _accountSelector = null;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var _cdpId = null;\n var _account = {};\n var globalUsersList = [];\n var usersBeingShowed = 0;\n var noOfUsersToShowInTable = 10;\n\n /* --------------Global Vars-----------------------*/\n vm.headerKey = ccDelegationAssetService.accountPermissionsTable.headerKey;\n vm.header = ccDelegationAssetService.accountPermissionsTable.header;\n vm.dropTable = [];\n vm.calendarTable = [];\n vm.tableData = {};\n vm.dataTable = {};\n vm.tableRelations = ccDelegationAssetService.accountPermissionsTable.tableRelations;\n vm.statusTable = ccDelegationAssetService.accountPermissionsTable.statusTable;\n vm.tableOptions = ccDelegationAssetService.accountPermissionsTable.tableOptions;\n vm.showCompareRolesTable = false;\n vm.showInvitesTable = false;\n vm.usersDelegations = [];\n vm.updateRelationships = [];\n vm.userRoles = [];\n vm.pendingDelegations = [];\n vm.sortArrow = '';\n vm.defaultTable = true;\n vm.userAccounts = [];\n vm.today = dateHelperService.getDateFromFullDate(moment().format());\n vm.endDate = dateHelperService.getDateFromFullDate(moment().add(2, 'years').format());\n vm.delegationUpdates = [];\n vm.sessionData = {\n users: []\n };\n vm.primaryBP = '';\n vm.contractAccountId = '';\n vm.relatedBusinessPartner = '1100565992';\n vm.primaryEmail = '';\n vm.maintainRelationship = {\n replyCode: ''\n };\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.selectedUser = {};\n vm.showToast = false;\n vm.data = {};\n vm.showmessage = 0;\n vm.showMoreButtonActivate = false;\n vm.activeUserCount = 0;\n vm.nonRegisteredDelegations = [];\n vm.loadingSpinner = true;\n $rootScope.emptyState = false;\n\n // vm.closeModal = closeModal;\n /* ---------------Initialization-------------------*/\n var init = init;\n\n /* --------------$on functions-----------------------*/\n\n $scope.$on('setDateValue', function () {\n vm.dataTable.forEach(function (element) {\n element.accesUntil = element.accesUntilModel ? element.accesUntilModel : element.accesUntil;\n });\n });\n\n /* --------------Function Definitions-----------------------*/\n\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function capitalizeName(name) {\n return dataModelsDTOProductsAndServices.transformName(name);\n }\n function getDateFromFullDate(dateStr) {\n var newDate = moment(dateStr).format('YYYY-MM-DDTHH:mm:ss');\n var date = new Date(newDate);\n var mm = date.getMonth() + 1;\n mm = mm.length === 1 ? \"0\".concat(mm) : mm;\n var dd = date.getDate().length === 1 ? \"0\".concat(date.getDate()) : \"\".concat(date.getDate());\n return \"\".concat(mm, \"/\").concat(dd, \"/\").concat(date.getFullYear());\n }\n function deleteDelegation(index) {\n attributePush(\"workFlow:\".concat($('#delegation-lp-gat').attr('businessFunction')), \"headline:\".concat($('#delegation-lp-gat').attr('headLine')), \"subheadline:\".concat(vm.usersDelegations[index].relationship), \"buttonText:\".concat(vm.usersDelegations[index].status), 'addedSpec:delete');\n vm.sessionData.deleteUser = {\n index: index\n };\n saveData();\n modalService.deleteUserAP();\n }\n function editDelationInfo(index) {\n attributePush(\"workFlow:\".concat($('#delegation-lp-gat').attr('businessFunction')), \"headline:\".concat($('#delegation-lp-gat').attr('headLine')), \"subheadline:\".concat(vm.usersDelegations[index].relationship), \"buttonText:\".concat(vm.usersDelegations[index].status), 'addedSpec:edit');\n vm.selectedUser = this.usersDelegations[index];\n saveData();\n modalService.updateUserAP();\n }\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n $scope.$on(ccDelegationAssetService.events.updateUserAP, function () {\n getUserRoles();\n showToast();\n });\n $scope.$on(ccDelegationAssetService.events.deleteUserAP, function () {\n getUserRoles();\n showToast();\n // vm.sessionData = sessionStorageService.get(\n // ccDelegationAssetService.storageKeys.accountPermissions,\n // );\n // vm.usersDelegations = vm.sessionData.users;\n // setTableFormat();\n });\n $scope.$on(ccDelegationAssetService.events.resendLink, function () {\n showToast();\n });\n function resendDelegation(index) {\n attributePush(\"workFlow:\".concat($('#delegation-lp-gat').attr('businessFunction')), \"headline:\".concat($('#delegation-lp-gat').attr('headLine')), \"subheadline:\".concat(vm.usersDelegations[index].relationship), \"buttonText:\".concat(vm.usersDelegations[index].status), 'addedSpec:resend-invite');\n vm.sessionData.resendLink = {\n index: index\n };\n saveData();\n modalService.resendInviteLinkAP();\n }\n function setTableFormat() {\n vm.loadingSpinner = false;\n if (vm.usersDelegations.length === 0) {\n $rootScope.emptyState = true;\n } else {\n $rootScope.emptyState = false;\n }\n globalUsersList = genericHelperService.notReferencesArrayObjects(vm.usersDelegations);\n if (globalUsersList.length > noOfUsersToShowInTable) {\n usersBeingShowed = noOfUsersToShowInTable;\n vm.showMoreButtonActivate = true;\n } else {\n usersBeingShowed = globalUsersList.length;\n vm.showMoreButtonActivate = false;\n }\n vm.dataTable = globalUsersList.slice(0, usersBeingShowed);\n vm.tableRelations = genericHelperService.arrayToDrop(vm.tableRelations, null, null);\n vm.sessionData.users = vm.usersDelegations;\n saveData();\n }\n function mergeUsers() {\n vm.activeUserCount = 0;\n if (vm.userRoles.length > 0) {\n vm.userRoles.forEach(function (user) {\n vm.updateExistingUsers(user);\n });\n } else {\n if (vm.nonRegisteredDelegations.length > 0) {\n vm.nonRegisteredDelegations.forEach(function (delegation) {\n vm.usersDelegations.push(delegation);\n });\n }\n setTableFormat();\n }\n }\n function updateExistingUsers(user) {\n // const dataObj = {\n // businessPartnerId: user.DelegatedUserBp,\n // };\n // accountSearchService.sitecore.accountSearch(dataObj).then(\n // (result) => {\n // if (result && result.d.ReqToHResNav.results) {\n var userDelegation = {\n userName: user.DelegateUserName,\n relationship: user.Relationship === '012' ? ccDelegationAssetService.accountPermissionsTable.tableRelations[0] : ccDelegationAssetService.accountPermissionsTable.tableRelations[1],\n status: user.DelegationStat,\n accesUntil: user.CaAccessEndDate === null || user.CaAccessEndDate === '99991231' || user.CaAccessEndDate === '00000000' ? 'No End Date' : getDateFromFullDate(user.CaAccessEndDate),\n update: false,\n delegationId: user.DelegatedUserBp,\n cdpId: user.DelegatedCdpId\n };\n vm.usersDelegations.push(userDelegation);\n vm.activeUserCount += 1;\n if (vm.activeUserCount === vm.userRoles.length) {\n if (vm.nonRegisteredDelegations.length > 0) {\n vm.nonRegisteredDelegations.forEach(function (delegation) {\n vm.usersDelegations.push(delegation);\n });\n }\n setTableFormat();\n }\n // }\n // },\n // (error) => {\n // if (assetService.apiConfig.showAppErrors) $log.error(error);\n // },\n // );\n }\n function updatePendingdelegations() {\n vm.pendingDelegations.forEach(function (userDel) {\n var status = ccDelegationAssetService.accountPermissionsTable.statusTable[1];\n if (userDel.declineTimeStamp) {\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[4];\n }\n if (userDel.isExpired === 'Y') {\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[2];\n }\n if (userDel.accessEndDate && vm.checkPastDate(userDel.accessEndDate)) {\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[3];\n }\n var pendingUser = {\n userName: userDel.relatedBusinessPartnerEmailAddress,\n relationship: userDel.roleName === '001' ? ccDelegationAssetService.accountPermissionsTable.tableRelations[1] : ccDelegationAssetService.accountPermissionsTable.tableRelations[0],\n status: status,\n accesUntil: userDel.accessEndDate === null ? 'No End Date' : dateHelperService.getDateFromFullDate(userDel.accessEndDate),\n update: false,\n delegationId: userDel.accountDelegationRequestId\n };\n vm.nonRegisteredDelegations.push(pendingUser);\n });\n }\n function checkPastDate(date) {\n var currentDate = new Date();\n var accessEndDate = dateHelperService.getDateFromFullDate(date).split('/');\n var endDate = new Date(accessEndDate);\n var accessEndDateVal = \"\".concat(accessEndDate[0], \"/\").concat(accessEndDate[1], \"/\").concat(accessEndDate[2]);\n if (endDate == 'Invalid Date' || endDate == undefined) {\n endDate = new Date(accessEndDateVal);\n }\n if (endDate < currentDate && !(endDate.getFullYear() === currentDate.getFullYear() && endDate.getMonth() === currentDate.getMonth() && endDate.getDate() === currentDate.getDate())) {\n return true;\n }\n return false;\n }\n function getPendingDelegations() {\n // _account = _.find(_accountSelector.accounts, account => account.value === vm.contractAccountId);\n vm.pendingDelegations = [];\n vm.nonRegisteredDelegations = [];\n _cdpId = sessionStorageService.get(assetService.storageKeys.cdpId);\n var dataObject = {\n contractAccountNumber: vm.contractAccountId,\n cdpId: _cdpId,\n action: ccDelegationAssetService.serviceActions.MANAGE_DELEGATION\n };\n retrieveDelegationService.sitecore.retrieveDelegation(dataObject).then(function (result) {\n if (result) {\n vm.pendingDelegations = result.delegations;\n if (vm.pendingDelegations.length > 0) {\n vm.updatePendingdelegations();\n }\n mergeUsers();\n }\n }, function (error) {\n if (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }\n });\n }\n function updateTableFormat() {\n var _vm$dataTable;\n if (usersBeingShowed + noOfUsersToShowInTable > globalUsersList.length) {\n usersBeingShowed = globalUsersList.length;\n vm.showMoreButtonActivate = false;\n } else {\n usersBeingShowed += noOfUsersToShowInTable;\n }\n var dataTableLength = vm.dataTable.length;\n (_vm$dataTable = vm.dataTable).push.apply(_vm$dataTable, _toConsumableArray(globalUsersList.slice(dataTableLength, usersBeingShowed)));\n }\n function sortTable() {\n vm.sortArrow = tableHelperService.sortingTableData(vm.usersDelegations, 'userName', vm.sortArrow);\n saveData();\n setTableFormat();\n }\n function saveData() {\n vm.sessionData.users = vm.usersDelegations;\n vm.sessionData.selectedUser = vm.selectedUser;\n sessionStorageService.set(ccDelegationAssetService.storageKeys.accountPermissions, vm.sessionData);\n }\n function getUserRoles() {\n vm.userRoles = [];\n vm.usersDelegations = [];\n if (!globalSelectedAccount.primaryBp && !globalSelectedAccount.accountNum) return;\n var dataObject = {\n businessPartnerId: globalSelectedAccount.primaryBp,\n contractAccountId: globalSelectedAccount.accountNum,\n requestedBy: '',\n sessionNo: '',\n emailId: globalAccountInfo.userEmail,\n experience: ''\n };\n getUserRolesAdministrationService.sitecore.getUserRoles(dataObject).then(function (result) {\n if (result) {\n vm.userRoles = result.d.results[0].ZDIG_USERROL_REQ_TO_PBP.results;\n vm.userRoles = vm.userRoles.length > 0 ? vm.userRoles[0].ZDIG_USERROL_PBP_TO_CA.results[0].ZDIG_USERROL_CA_TO_DELEGTED.results : vm.userRoles;\n vm.userRoles = vm.userRoles.filter(function (value) {\n return value.DelegationStat === 'ACTIVE';\n });\n vm.userRoles = vm.userRoles.filter(function (value) {\n return value.Relationship !== '002' && value.Relationship !== '014';\n });\n getPendingDelegations();\n // mergeUsers();\n }\n }, function (error) {\n if (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }\n });\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n sessionStorageService.delete(ccDelegationAssetService.storageKeys.accountPermissions);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n vm.selectMessage = function (message) {\n vm.showMessage = vm.showMessage === message ? 0 : message;\n };\n function activateDetails(event) {\n vm.dataTable.forEach(function (user, index) {\n user.active = event !== index ? false : !user.active;\n });\n }\n function closeToast() {\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }\n function showToast() {\n vm.showToast = true;\n vm.data.option = sessionStorageService.get(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification);\n vm.data.messageOption = sessionStorageService.get(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage);\n vm.data.show = sessionStorageService.get(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime);\n attributePush('workFlow:' + 'toast-notification', \"headline:\".concat(vm.data.option), \"subheadline:\".concat(vm.data.messageOption), 'buttonText:' + 'impression', 'addedSpec:' + 'account-permissions');\n virtualPagePush('toast-notification', 'account-permissions', vm.data.messageOption, 'impression', vm.data.option);\n if (vm.data.option === 'success') {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }, 6000);\n } else if (vm.data.option === 'error') {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.showToast = true;\n }\n }\n function load() {\n vm.loadingSpinner = true;\n _accountSelector = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.sessionData = sessionStorageService.get(ccDelegationAssetService.storageKeys.accountPermissions);\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.primaryBP = globalAccountInfo.primaryBp;\n vm.primaryEmail = globalAccountInfo.userEmail;\n getRole();\n if (window.location.pathname === '/my-account/account-permissions' && !vm.roleBase.ownerRole) {\n window.location.href = '/my-account/Dashboard';\n }\n if (vm.sessionData !== null) {\n vm.usersDelegations = vm.sessionData.users;\n setTableFormat();\n } else {\n vm.usersDelegations = [];\n vm.sessionData = {\n users: []\n };\n getUserRoles();\n }\n }\n /* --------------Function Declarations-----------------------*/\n vm.deleteDelegation = deleteDelegation;\n vm.resendDelegation = resendDelegation;\n vm.editDelationInfo = editDelationInfo;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.sortTable = sortTable;\n vm.closeToast = closeToast;\n vm.updateTableFormat = updateTableFormat;\n vm.capitalizeName = capitalizeName;\n vm.activateDetails = activateDetails;\n vm.checkPastDate = checkPastDate;\n vm.updatePendingdelegations = updatePendingdelegations;\n vm.updateExistingUsers = updateExistingUsers;\n /* ---------------Initialization-------------------*/\n init = function init() {\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n load();\n };\n init();\n}\napp.controller('DisconnectExtensionController', DisconnectExtensionController);\nDisconnectExtensionController.$inject = ['$log', '$scope', 'assetService', 'commonService', 'dateHelperService', 'getAccountBalanceForRegularAccountService', 'getEligiblePaymentPlansExtensionsService', 'getLoggedInUserDetailsService', 'sessionStorageService', 'setExtensionsService', '$rootScope', 'commongaTaggingService'];\nfunction DisconnectExtensionController($log, $scope, assetService, commonService, dateHelperService, getAccountBalanceForRegularAccountService, getEligiblePaymentPlansExtensionsService, getLoggedInUserDetailsService, sessionStorageService, setExtensionsService, $rootScope, commongaTaggingService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _currentDate;\n var _disconnectDateOne;\n var _disconnectDateTwo;\n var _disconnectAmount;\n var _globalAccountInfo = {};\n var _globalSelectedAccount = {};\n var _success = assetService.replyCodes.Success;\n\n /**\r\n * Global Vars\r\n */\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.currentDate = null;\n vm.disconnectAmount = null;\n vm.disconnectAmtDecimal = null;\n vm.isLoaded = false;\n vm.pageLoad = true;\n vm.showDesctiptDetails = false;\n vm.arrow = '';\n vm.paymentAssistance = {};\n vm.data = {\n contractAccountId: null\n };\n vm.form = {\n option: null\n };\n vm.setExtensions = {\n replyCode: null\n };\n vm.disconnectDateOne = null;\n vm.disconnectDateTwo = null;\n vm.currentUser = {}; //Get RequestedBy value\n\n /**\r\n * Function Declarations\r\n */\n vm.showDetails = showDetails;\n vm.disconnect = disconnect;\n\n /**\r\n * Function Definitions\r\n */\n\n function showDetails() {\n vm.showDesctiptDetails = !vm.showDesctiptDetails;\n vm.arrow = vm.showDesctiptDetails ? 'down' : '';\n }\n function setExtensions(data) {\n return setExtensionsService.sitecore.setExtensions(data).then(function (result) {\n vm.setExtensions.replyCode = result.d.ReqCA.results[0].Messages.Type;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function disconnect(event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n $scope.$emit(assetService.events.loadingSpinnerSuccess, true);\n var dataToPost = {\n contractAccountId: _globalSelectedAccount.accountNum,\n extendedDisconnectDate: vm.form.option === '1' ? moment.utc(_disconnectDateOne).format('YYYY-MM-DDTHH:mm:ss') : moment.utc(_disconnectDateTwo).format('YYYY-MM-DDTHH:mm:ss'),\n requestedBy: vm.currentUser.emailId\n };\n setExtensions(dataToPost).then(function () {\n if (vm.setExtensions.replyCode === 'S') {\n sessionStorageService.set(assetService.storageKeys.paymentAssistance.disconnect, dataToPost.extendedDisconnectDate);\n $scope.$emit(assetService.events.successDisconnectExtension, 'success');\n } else {\n vm.pageLoad = false;\n $scope.$emit(assetService.events.successDisconnectExtension, 'error');\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getDateFromFullDate(date) {\n return moment.utc(date).format('MM/DD/YYYY');\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function setModel() {\n vm.currentDate = getDateFromFullDate(_currentDate);\n vm.disconnectAmount = !_disconnectAmount || _disconnectAmount === 0 ? 0.0 : _disconnectAmount;\n vm.disconnectAmtDecimal = ('0' + Number((_disconnectAmount + '').split('.')[1])).slice(-2);\n vm.data.amountDue = !!vm.disconnectAmount;\n vm.disconnectDateOne = _disconnectDateOne;\n vm.disconnectDateTwo = _disconnectDateTwo;\n vm.isLoaded = true;\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n function load() {\n if (assetService.apiConfig.useLocalHost) {\n _globalSelectedAccount = {\n accountNum: assetService.apiConfig.testAccount\n };\n } else {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n var promises = [getEligiblePaymentPlansExtensions({\n contractAccountId: _globalSelectedAccount.accountNum\n }), getAccountBalanceForRegularAccount({\n accountList: [{\n contractAccountNumber: _globalSelectedAccount.accountNum,\n requestedBy: vm.currentUser.emailId\n }]\n })];\n commonService.executePromises(promises).then(function () {\n setModel();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function getAccountBalanceForRegularAccount(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n if (result.getAccountAndBillingInfoResList.length > 0) {\n vm.accountStatus = result.getAccountAndBillingInfoResList[0].messageList[0].message;\n _disconnectAmount = result.getAccountAndBillingInfoResList[0].totalDueDlrs;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getEligiblePaymentPlansExtensions(data) {\n return getEligiblePaymentPlansExtensionsService.sitecore.getEligiblePaymentPlansExtensions(data).then(function (result) {\n if (result.d.ReqCA.results.length > 0 && result.d.ReqCA.results[0].Extensions) {\n var extension = result.d.ReqCA.results[0].Extensions;\n _currentDate = getDateFromFullDate(extension.DisconnectDateStr);\n _disconnectDateOne = getDateFromFullDate(extension.Date1ForDisconnectStr);\n _disconnectDateTwo = getDateFromFullDate(extension.Date2ForDisconnectStr);\n }\n var getExtension = result.d.ReqCA.results[0].Extensions;\n if (result && result.d.ReqCA.results[0] && getExtension === null) {\n vm.pageLoad = false;\n window.location.href = assetService.sitePagesUrlPaths.PAYMENT_ASSISTANCE_PROG;\n }\n if (vm.Installment === false && vm.disconnect === false && vm.dueDate === false) {\n vm.nonAplicable = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.pageLoad = false;\n });\n }\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n }\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('DisconnectSuccessController', DisconnectSuccessController);\nDisconnectSuccessController.$inject = ['$scope', 'assetService', 'dateHelperService', 'sessionStorageService', '$rootScope', '$window', 'commongaTaggingService', 'broadcastService'];\nfunction DisconnectSuccessController($scope, assetService, dateHelperService, sessionStorageService, $rootScope, $window, commongaTaggingService, broadcastService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n var _date = null;\n\n /**\r\n * Global Vars\r\n */\n vm.disconnect = null;\n vm.isLoaded = false;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Function Definitions\r\n */\n function getDateFromFullDate(date) {\n return dateHelperService.getDateFromFullDate(date);\n }\n function setModel() {\n vm.message = moment.utc(vm.disconnect).format('MM/DD/YY');\n vm.isLoaded = true;\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.disconnect = sessionStorageService.get(assetService.storageKeys.paymentAssistance.disconnect);\n broadcastService.headerSwitch('Full');\n setModel();\n $window.scrollTo(0, 0);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ShelDisconnectExtensionController', ShelDisconnectExtensionController);\nShelDisconnectExtensionController.$inject = ['$scope', 'assetService', 'cookieService', 'sessionStorageService', '$state'];\nfunction ShelDisconnectExtensionController($scope, assetService, cookieService, sessionStorageService, $state) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n var _success = assetService.strings.success;\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n $state.go(assetService.disconnectExtension.dataPage);\n }\n $scope.$on(assetService.events.successDisconnectExtension, function (index, data) {\n if (data === _success) {\n vm.loadingSpinner = true;\n $state.go(assetService.disconnectExtension.successPage);\n }\n });\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* ---------------Initialization-------------------*/\n function init() {\n var isValidation = cookieService.getCookie('payment-assistance-validation');\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = \"\".concat(window.location.protocol, \"/\").concat(window.location.hostname, \"/my-account/payment-assistance-programs/\");\n }\n }\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('DueDateSuccessController', DueDateSuccessController);\nDueDateSuccessController.$inject = ['$scope', 'assetService', 'dateHelperService', 'sessionStorageService', '$window', 'commongaTaggingService', 'broadcastService'];\nfunction DueDateSuccessController($scope, assetService, dateHelperService, sessionStorageService, $window, commongaTaggingService, broadcastService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _date = null;\n\n /**\r\n * Global Vars\r\n */\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.disconnect = null;\n vm.isLoaded = false;\n vm.extnEligibleUptoDate = null;\n vm.extnCount = 0;\n vm.firstExtendedDate = null;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Function Definitions\r\n */\n function getDateFromFullDate(date) {\n return dateHelperService.getDateFromFullDate(date);\n }\n function setModel() {\n vm.message = moment.utc(vm.dueDate).format('MM/DD/YY');\n vm.isLoaded = true;\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.dueDate = sessionStorageService.get(assetService.storageKeys.paymentAssistance.dueDate);\n broadcastService.headerSwitch('Full');\n setModel();\n $window.scrollTo(0, 0);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('DueDateExtensionController', DueDateExtensionController);\nDueDateExtensionController.$inject = ['$log', '$state', 'assetService', 'commonService', 'setExtensionsService', 'sessionStorageService', '$scope', 'accountSearchService', 'getEligiblePaymentPlansExtensionsService', 'getLoggedInUserDetailsService', '$rootScope', 'commongaTaggingService'];\nfunction DueDateExtensionController($log, $state, assetService, commonService, setExtensionsService, sessionStorageService, $scope, accountSearchService, getEligiblePaymentPlansExtensionsService, getLoggedInUserDetailsService, $rootScope, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n\n /* --------------Global Vars-----------------------*/\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.accountStatusByCA = {};\n vm.actualDate = '';\n vm.balanceData = {\n bills: {}\n };\n vm.currentUser = {}; //Get RequestedBy value\n vm.billDueDate = '';\n vm.contractAccountId = null;\n vm.buttonContinue = true;\n vm.calendarDate = undefined;\n vm.currentDate = undefined;\n vm.startDate = undefined;\n vm.endDate = undefined;\n vm.disableDate = undefined;\n vm.data = {\n contractAccountId: null\n };\n vm.description = assetService.dueDateExtension.description;\n vm.invoice = null;\n vm.formattedCurrentDate = undefined;\n vm.justForFirstPage = true;\n vm.latestBill = {};\n vm.lastButton = assetService.dueDateExtension.lastButton;\n vm.isLoaded = false;\n vm.nextPage = assetService.dueDateExtension.successPage;\n vm.recentBills = '';\n vm.returnTo = assetService.dueDateExtension.returnTo;\n vm.setExtensions = {};\n vm.title = assetService.dueDateExtension.title;\n vm.setExtensions = {\n replyCode: null\n };\n vm.pageLoad = true;\n\n /* --------------Function Declarations-----------------------*/\n vm.nextStep = nextStep;\n vm.onCancel = onCancel;\n vm.selectCalendarDate = selectCalendarDate;\n vm.init = init;\n\n /* --------------Function Definitions-----------------------*/\n function card(accountNickname, accountNumber, address, dueDate, message, amount, viewBillLinkUrl) {\n this.accountNickname = accountNickname;\n this.accountNumber = accountNumber;\n this.address = address;\n this.dueDate = dueDate;\n this.message = message;\n this.amount = amount;\n this.viewBillLinkUrl = viewBillLinkUrl;\n }\n function selectCalendarDate() {\n if (!vm.calendarDate) {\n vm.formattedCurrentDate = moment(vm.disableDate).format('YYYY-MM-DDTHH:mm:ss');\n } else {\n vm.formattedCurrentDate = new Date(vm.calendarDate.split(' ').join(''));\n vm.formattedCurrentDate = moment(vm.formattedCurrentDate).format('YYYY-MM-DDTHH:mm:ss');\n }\n if (vm.disableDate) {\n moment(vm.disableDate).date();\n $(\".sui-days\").find(\"td[title='\" + vm.disableDate + \"'] > span\").replaceWith('' + moment(vm.disableDate).date() + '');\n $(\".sui-days\").find(\"td[title='\" + vm.disableDate + \"']\").removeClass('sui-selected');\n }\n if (vm.calendarDate !== undefined) {\n if (vm.extendedDueDate != \"\" && moment(vm.formattedCurrentDate).format('MM/DD/YYYY') !== moment(vm.extendedDueDate).format('MM/DD/YYYY') || moment(vm.formattedCurrentDate).format('MM/DD/YYYY') !== moment(vm.disableDate).format('MM/DD/YYYY')) {\n vm.buttonContinue = false;\n } else {\n vm.buttonContinue = true;\n }\n }\n }\n function nextStep(event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n $scope.$emit(assetService.events.loadingSpinnerSuccess, true);\n var paramData = {\n contractAccountId: _globalSelectedAccount.accountNum,\n extendedDueDate: moment(vm.formattedCurrentDate).format('YYYY-MM-DDTHH:mm:ss'),\n requestedBy: vm.currentUser.emailId\n };\n setExtension(paramData).then(function () {\n if (vm.setExtensions.replyCode === 'S') {\n sessionStorageService.set(assetService.storageKeys.paymentAssistance.dueDate, paramData.extendedDueDate);\n $scope.$emit(assetService.events.successDueDateExtension, 'success');\n } else {\n vm.pageLoad = false;\n $scope.$emit(assetService.events.successDueDateExtension, 'error');\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function onCancel(path) {\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n }\n function setExtension(paramData) {\n return setExtensionsService.sitecore.setExtensions(paramData).then(function (result) {\n vm.setExtensions.replyCode = result.d.ReqCA.results[0].Messages.Type;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.pageLoad = false;\n $scope.$emit(assetService.events.successDueDateExtension, 'error');\n });\n }\n function setModels() {\n var promises = [accountSearch({\n contractAccountId: _globalSelectedAccount.accountNum\n }), getEligiblePaymentPlansExtensions({\n contractAccountId: _globalSelectedAccount.accountNum,\n requestedBy: vm.currentUser.emailId\n })];\n commonService.executePromises(promises).then(function () {\n var dataRow = new card(vm.contractAccount.nickname, vm.contractAccount.accountNum, vm.contractAccount.address, moment.utc(vm.currentDate).format('MM/DD/YYYY'));\n vm.isLoaded = true;\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n });\n }\n function accountSearch(dataObj) {\n return accountSearchService.sitecore.accountSearch(dataObj).then(function (result) {\n var contractAccounts = _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results, function (account) {\n return {\n accountNum: account.AccountNumber,\n accountStat: account.AccountStatus,\n address: account.AccountMailingAddress,\n experience: account.Experience ? _.camelCase(account.Experience) : assetService.strings.EMPTY,\n jurisdiction: account.Jurisdiction,\n nickname: account.AccountNickname,\n prepaid: account.Prepaid === 'X',\n primaryBp: account.PrimaryBp,\n bpNumber: account.PrimaryBp,\n relatedBp: account.RbpNumber\n };\n });\n if (contractAccounts.length > 0) {\n vm.contractAccount = contractAccounts[0];\n } else {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getEligiblePaymentPlansExtensions(data) {\n return getEligiblePaymentPlansExtensionsService.sitecore.getEligiblePaymentPlansExtensions(data).then(function (result) {\n if (result.d.ReqCA.results.length > 0 && result.d.ReqCA.results[0].Extensions.DeferralDate) {\n vm.currentDate = vm.extendedDueDate && moment.utc(vm.extendedDueDate).format('MM/DD/YYYY') >= moment.utc(result.d.ReqCA.results[0].Extensions.DueDate).format('MM/DD/YYYY') ? moment.utc(vm.extendedDueDate).format('YYYY-MM-DDTHH:mm:ss') : moment.utc(result.d.ReqCA.results[0].Extensions.DueDate).format('YYYY-MM-DDTHH:mm:ss');\n if (!vm.extendedDueDate || vm.extendedDueDate && moment.utc(vm.extendedDueDate).format('MM/DD/YYYY') >= moment.utc(vm.currentDate).format('MM/DD/YYYY')) {\n vm.startDate = moment.utc(result.d.ReqCA.results[0].Extensions.StartDate).subtract(1, 'days').format('YYYY-MM-DDTHH:mm:ss');\n } else {\n vm.startDate = moment.utc(result.d.ReqCA.results[0].Extensions.StartDate).format('YYYY-MM-DDTHH:mm:ss');\n }\n $scope.datePicked = moment.utc(vm.currentDate).format('MM/DD/YYYY');\n vm.disableDate = $scope.datePicked;\n vm.endDate = moment.utc(result.d.ReqCA.results[0].Extensions.EndDate).format('YYYY-MM-DDTHH:mm:ss');\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n if (assetService.apiConfig.useLocalHost) {\n _globalSelectedAccount = {\n accountNum: assetService.apiConfig.testAccount\n };\n } else {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n vm.extendedDueDate = sessionStorageService.get(assetService.storageKeys.paymentAssistance.extendedDueDate);\n vm.data.contractAccountId = _globalSelectedAccount.accountNum;\n setModels();\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n $scope.datePicked = '';\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n }\n}\napp.controller('ShellDueDateExtensionController', ShellDueDateExtensionController);\nShellDueDateExtensionController.$inject = ['$scope', 'assetService', 'cookieService', 'sessionStorageService', '$state'];\nfunction ShellDueDateExtensionController($scope, assetService, cookieService, sessionStorageService, $state) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _success = assetService.strings.success;\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n $state.go(assetService.dueDateExtension.dataPage);\n }\n $scope.$on(assetService.events.successDueDateExtension, function (index, data) {\n if (data === _success) {\n vm.loadingSpinner = true;\n $state.go(assetService.dueDateExtension.successPage);\n }\n });\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* ---------------Initialization-------------------*/\n function init() {\n var isValidation = cookieService.getCookie('payment-assistance-validation');\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = \"/my-account/payment-assistance-programs/\";\n }\n }\n}\nfunction efiErrorModalController($log, $modalInstance, commongaTaggingService) {\n var vm = this;\n vm.closeModal = function () {\n $modalInstance.close();\n };\n\n /**\r\n * Initialization\r\n */\n vm.virtualPagePush = function () {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n };\n vm.attributePush = function () {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n };\n}\napp.controller('efiErrorModalController', efiErrorModalController);\nefiErrorModalController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\nfunction efiInerceptController($log, $modalInstance, commongaTaggingService) {\n var vm = this;\n vm.closeModal = function () {\n $modalInstance.close();\n };\n\n /**\r\n * Initialization\r\n */\n vm.virtualPagePush = function () {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n };\n vm.attributePush = function () {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n };\n}\napp.controller('efiInerceptController', efiInerceptController);\nefiInerceptController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('ccEnergyUsageGraphController', ccEnergyUsageGraphController);\nccEnergyUsageGraphController.$inject = ['$log', 'ccMeterSelectorService', 'ccEnergyUsageDto', 'accountSearchService', 'getInvoiceListService', 'getInvoiceDetailsService', 'getWeatherInfoService', 'getEnergyUsageService', 'sessionStorageService', 'errorHandlingService', 'assetService', 'commonService', '$scope', '$rootScope', '$timeout', 'energyService', 'getUsageComparisionService', 'exportCsvService', 'componentStateHandler', 'getMeterNumberService', 'commongaTaggingService'];\nfunction ccEnergyUsageGraphController($log, ccMeterSelectorService, ccEnergyUsageDto, accountSearchService, getInvoiceListService, getInvoiceDetailsService, getWeatherInfoService, getEnergyUsageService, sessionStorageService, errorHandlingService, assetService, commonService, $scope, $rootScope, $timeout, energyService, getUsageComparisionService, exportCsvService, componentStateHandler, getMeterNumberService, commongaTaggingService) {\n var vm = this;\n vm.error = false;\n vm.loaded = false;\n vm.lighting = false;\n vm.meterObject = {};\n vm.energyUsageArray = [];\n vm.compareEnergyUsageArray = [];\n vm.invoiceListArray = [];\n vm.compareInvoiceListArray = [];\n vm.invoiceDetailsArray = [];\n vm.compareInvoiceDetailsArray = [];\n vm.weatherInfoArray = [];\n vm.ticksOverride = [];\n vm.compareUsageComparisonList = [];\n vm.usageComparisonList = [];\n vm.dataToGet = {};\n vm.downloadData = '';\n vm.loadingSpinner = true;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.is_mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || $(window).width() < 767;\n vm.isDashboard = window.location.pathname.toLowerCase() === assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD;\n var graphColors = energyService.graphColors;\n $scope.$on(energyService.string.loadGraph, function (e, d) {\n vm.meterObject = d;\n if (!vm.meterObject.isBlankState) {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\n _bpNumber = _globalSelectedAccount.bpNumber;\n }\n vm.invoiceListArray = d.invoiceListArray;\n vm.loadingSpinner = true;\n if (vm.meterObject.periodType == 'Year' || vm.meterObject.periodType === energyService.periodType.BillingCycle || vm.meterObject.periodType === energyService.periodTypeOption.Week) {\n getWeatherInfo();\n } else {\n loadGraph();\n }\n }\n });\n $scope.$on('exportData', function (e, d) {\n vm.accountInfo = {\n 'Account Name': _globalSelectedAccount.firstName + ' ' + _globalSelectedAccount.lastName,\n Address: _globalSelectedAccount.address,\n 'Account Number': _globalSelectedAccount.accountNum,\n Disclaimer: 'The information contained in this file is intended for the personal and confidential use of the recipient(s) named above. Any unauthorized use is prohibited.',\n 'Graph Title': 'Energy Usage',\n 'Meter Number': d.meterNumber,\n 'Selected Date': moment().utc().format('MM/DD/YYYY'),\n 'Selected Period': d.periodType,\n 'Primary Data Unit': d.unitOfMeasure,\n 'Secondary Data Unit': '',\n 'Tertiary Data Unit': ''\n };\n if (d.unitOfMeasure == 'Dollar' && d.periodType == 'Year') {\n if (vm.meterObject.compareToPreviousYear) {\n vm.exportComaprisonList = [];\n vm.exportComaprisonList = vm.usageComparisonList.concat(vm.compareUsageComparisonList);\n vm.filename = 'EnergyUsageExport YOYYear';\n exportCsvService.exportToCSV(d.periodType, vm.exportComaprisonList, vm.filename, vm.accountInfo);\n } else {\n vm.filename = 'EnergyUsageExport Dollars';\n exportCsvService.exportToCSV(d.unitOfMeasure, vm.usageComparisonList, vm.filename, vm.accountInfo);\n }\n }\n if (d.periodType == 'Year' && (d.unitOfMeasure == 'kWh' || d.unitOfMeasure == 'CCF')) {\n if (vm.meterObject.compareToPreviousYear) {\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\n vm.exportForNet = {};\n if (vm.meterObject.netMeter) {\n vm.exportForNet.Series1 = vm.exportEnergyUsage.Series1.concat(vm.exportCompareEnergyUsage.Series1);\n vm.exportForNet.Series3 = vm.exportEnergyUsage.Series3.concat(vm.exportCompareEnergyUsage.Series3);\n vm.exportForNet.Series2 = vm.exportEnergyUsage.Series2.concat(vm.exportCompareEnergyUsage.Series2);\n vm.exportForNet.TickSeries = vm.exportEnergyUsage.TickSeries.concat(vm.exportCompareEnergyUsage.TickSeries);\n vm.filename = 'EnergyUsageExport YoY Net';\n exportCsvService.exportToCSV('NetMeter', vm.exportForNet, vm.filename, vm.accountInfo);\n } else {\n vm.exportForNet.Series1 = vm.exportEnergyUsage.Series1.concat(vm.exportCompareEnergyUsage.Series1);\n vm.exportForNet.Series2 = vm.exportEnergyUsage.Series2.concat(vm.exportCompareEnergyUsage.Series2);\n vm.exportForNet.TickSeries = vm.exportEnergyUsage.TickSeries.concat(vm.exportCompareEnergyUsage.TickSeries);\n vm.filename = 'EnergyUsageExport YOYYear';\n exportCsvService.exportToCSV(d.intervalFrequency, vm.exportForNet, vm.filename, vm.accountInfo);\n }\n } else {\n vm.exportComaprisonList = vm.usageComparisonList.concat(vm.compareUsageComparisonList);\n vm.filename = 'EnergyUsageExport YOYYear';\n exportCsvService.exportToCSV(d.periodType, vm.exportComaprisonList, vm.filename, vm.accountInfo);\n }\n } else {\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\n if (vm.meterObject.netMeter) {\n vm.filename = 'EnergyUsageExport Net';\n exportCsvService.exportToCSV('NetMeter', vm.energyUsageArray, vm.filename, vm.accountInfo);\n } else {\n vm.filename = 'EnergyUsageExport Year';\n exportCsvService.exportToCSV(d.intervalFrequency, vm.energyUsageArray, vm.filename, vm.accountInfo);\n }\n } else {\n vm.filename = 'EnergyUsageExport Year';\n exportCsvService.exportToCSV(d.periodType, vm.usageComparisonList, vm.filename, vm.accountInfo);\n }\n }\n }\n if (d.periodType != 'Year' && (d.unitOfMeasure == 'kWh' || d.unitOfMeasure == 'CCF')) {\n vm.filename = d.periodType == 'billingCycle' ? 'EnergyUsageExport BillCycle' : d.periodType == 'Week' ? 'EnergyUsageExport Week' : d.periodType == 'Day' ? 'EnergyUsageExport Day' : 'EnergyUsageExport Mins';\n exportCsvService.exportToCSV(d.periodType, vm.energyUsageArray, vm.filename, vm.accountInfo, d.startDate);\n }\n });\n $scope.$on('downloadData', function (e, d) {\n vm.downloadData = d;\n if (vm.downloadData == 'download') {\n $rootScope.download = true;\n }\n var promises = [getEnergyUsage()];\n commonService.executePromises(promises).then(function () {\n vm.downloadData = '';\n $rootScope.$broadcast('resetLoadingSpinner', false);\n });\n });\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function getEnergyUsage() {\n startDate = new Date(vm.meterObject.startDate);\n var params = {\n srcAcctId: _globalSelectedAccount.accountNum,\n meterSerialNumber: vm.meterObject.meterNumber,\n intervalFrequency: vm.meterObject.intervalFrequency,\n netmetering: vm.meterObject.netMeter ? 'Y' : 'N',\n periodType: vm.meterObject.periodType,\n serviceType: vm.meterObject.serviceType.toUpperCase(),\n startDate: moment(startDate.setDate(startDate.getDate())).format('MM/DD/YYYY'),\n endDate: vm.meterObject.periodType == 'Year' ? moment(moment(new Date(vm.meterObject.endDate), 'MM/DD/YYYY').add(1, 'days')).format('MM/DD/YYYY') : moment(vm.meterObject.endDate).format('MM/DD/YYYY'),\n isDownload: vm.downloadData ? vm.downloadData : ''\n };\n if (vm.meterObject.serviceType.toUpperCase() === 'GAS') {\n params.meterSerialNumber = vm.meterObject.meterNumber + ' ';\n }\n vm.energyUsageArray = {};\n vm.exportEnergyUsage = {};\n return getEnergyUsageService.sitecore.getEnergyUsage(params).then(function (result) {\n if (result) {\n vm.ticksOverride = [];\n if (vm.downloadData == 'download') {\n var bytes = new TextEncoder().encode(result);\n var blob = new Blob([bytes], {\n type: 'text/plain;charset=utf-8'\n });\n saveAs(blob, \"Energy Usage.xml\");\n vm.meterObject.isDownloadclicked = false;\n } else {\n if (result.MessageText == 'Success') {\n vm.energyUsageArray = result;\n vm.exportEnergyUsage = Object.assign({}, result);\n vm.averageConsolidated = result.Series2 ? parseFloat(result.Series2[0]) : 0;\n if (vm.energyUsageArray.TickSeries && (vm.meterObject.periodType == 'billingCycle' || vm.meterObject.periodType == 'Week')) {\n for (var i = 0; i < vm.energyUsageArray.TickSeries.length; i++) {\n var yearSelected = moment(vm.meterObject.endDate).format('YYYY');\n if (vm.energyUsageArray.TickSeries[i] == '') {\n var testDate = new Date(new Date(vm.energyUsageArray.TickSeries[i - 1]).setDate(new Date(vm.energyUsageArray.TickSeries[i - 1]).getDate() + 1));\n } else {\n yearSelected = vm.energyUsageArray.TickSeries[i].split('/')[0] == '12' ? moment(vm.meterObject.startDate).format('YYYY') : moment(vm.meterObject.endDate).format('YYYY');\n var testDate = new Date(moment(\"\".concat(vm.energyUsageArray.TickSeries[i], \"/\").concat(yearSelected), 'M/DD/YYYY'));\n }\n vm.energyUsageArray.TickSeries[i] = testDate;\n vm.ticksOverride.push(vm.energyUsageArray.TickSeries[i]);\n }\n }\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\n for (var i = 0; i < vm.energyUsageArray.TickSeries.length; i++) {\n if (vm.energyUsageArray.TickSeries[i] == '') {\n var a = vm.energyUsageArray.TickSeries[i - 1].split('/');\n a.splice(1, 0, '01');\n // var dateCompare = new Date(moment(a.join(\"/\")).add(1, 'months'))\n // var usageComparisonArray = vm.meterObject.invoiceListArray ;\n // vm.dateArray = usageComparisonArray.filter(data =>\n // moment(data.BillDate).format('MMMM') == moment(dateCompare).format('MMMM') && moment(data.BillDate).format('YYYY') == moment(dateCompare).format('YYYY'))\n // if(vm.dateArray.length > 0){\n vm.ticksOverride.push(new Date(moment(a.join('/')).add(1, 'months')));\n // }else{\n // var a = vm.energyUsageArray.TickSeries[i + 1].split(\"/\");\n // a.splice(1, 0, \"01\")\n // vm.ticksOverride.push(new Date(moment(a.join(\"/\")).subtract(1, 'months')));\n // }\n } else {\n var a = vm.energyUsageArray.TickSeries[i].split('/');\n a.splice(1, 0, '01');\n vm.ticksOverride.push(new Date(a.join('/')));\n }\n }\n vm.energyUsageArray.TickSeries = vm.ticksOverride;\n // for (var i = 0; i < vm.ticksOverride.length; i++) {\n // // vm.tempArray = vm.meterObject.invoiceListArray.filter(data => data.Month == moment(vm.ticksOverride[i]).format(\"MM\") && data.Year == moment(vm.ticksOverride[i]).format(\"YYYY\"))\n // // vm.exportEnergyUsage.TickSeries[i] = new Date(vm.tempArray.BillingEndDate);\n // angular.forEach(vm.meterObject.invoiceListArray, (data) => {\n // if (data.Month == moment(vm.ticksOverride[i]).format(\"MM\") && data.Year == moment(vm.ticksOverride[i]).format(\"YYYY\")) {\n // vm.exportEnergyUsage.TickSeries[i] = new Date(data.BillingEndDate);\n // }\n // })\n // }\n }\n if (vm.energyUsageArray.TickSeries.length >= 13 && vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\n var _a = vm.energyUsageArray.TickSeries.length - 13;\n vm.energyUsageArray.TickSeries.splice(0, _a);\n vm.energyUsageArray.Series1.splice(0, _a);\n vm.energyUsageArray.Series2.splice(0, _a);\n vm.energyUsageArray.Series3.splice(0, _a);\n vm.meterObject.eligiblecompareToPrev = true;\n }\n if (vm.meterObject.compareToPreviousYear) {\n if (vm.energyUsageArray.TickSeries.length > 12 || vm.meterObject.invoiceListArray.length > 13) {\n vm.energyUsageArray.TickSeries.splice(0, 1);\n vm.energyUsageArray.Series1.splice(0, 1);\n vm.energyUsageArray.Series2.splice(0, 1);\n vm.energyUsageArray.Series3.splice(0, 1);\n }\n getCompareEnergyUsage();\n } else {\n loadUsageDataGraph();\n }\n if (!vm.meterObject.isMinMaxSet) {\n var setDate = new Date(vm.meterObject.invoiceListArray[vm.meterObject.invoiceListArray.length - 1].BillDate) > new Date(vm.energyUsageArray.TickSeries[vm.energyUsageArray.TickSeries.length - 1]) ? new Date(vm.meterObject.invoiceListArray[vm.meterObject.invoiceListArray.length - 1].BillDate) : vm.energyUsageArray.TickSeries[vm.energyUsageArray.TickSeries.length - 1];\n $rootScope.$broadcast('setCalendarDate', setDate);\n }\n } else {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n vm.meterObject.isBlankState = true;\n $('.energyUsageWidget').addClass('empty-state-container');\n }\n }\n } else {\n console.log(error);\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n reject(errorHandlingService.getException(error));\n }\n });\n }\n function getCompareEnergyUsage() {\n var params = {\n srcAcctId: _globalSelectedAccount.accountNum,\n meterSerialNumber: _globalSelectedAccount.meterNumber,\n intervalFrequency: vm.meterObject.intervalFrequency,\n netmetering: vm.meterObject.netMeter ? 'Y' : 'N',\n periodType: vm.meterObject.periodType,\n serviceType: vm.meterObject.serviceType.toUpperCase(),\n startDate: \"\".concat(moment(vm.meterObject.startDate).format('MM'), \"/\").concat(moment(vm.meterObject.endDate).format('DD'), \"/\").concat(moment(vm.meterObject.startDate).year() - 1),\n endDate: \"\".concat(moment(vm.meterObject.endDate).format('MM'), \"/\").concat(moment(vm.meterObject.endDate).format('DD'), \"/\").concat(moment(vm.meterObject.endDate).year() - 1),\n isDownload: vm.downloadData ? vm.downloadData : ''\n };\n vm.exportCompareEnergyUsage = {};\n vm.compareEnergyUsageArray = {};\n return getEnergyUsageService.sitecore.getEnergyUsage(params).then(function (result) {\n if (result) {\n vm.compareEnergyUsageArray = result;\n vm.exportCompareEnergyUsage = result;\n var tempTicks = [];\n var result1 = [];\n var result2 = [];\n var tempResult = [];\n vm.energyUsageArray.yoySeries1 = [];\n vm.energyUsageArray.yoySeries3 = [];\n if (result.MessageText == 'Success') {\n for (var i = 0; i < vm.compareEnergyUsageArray.TickSeries.length; i++) {\n if (vm.compareEnergyUsageArray.TickSeries[i] == '') {\n var a = vm.compareEnergyUsageArray.TickSeries[i - 1].split('/');\n a.splice(1, 0, '01');\n tempTicks.push(new Date(moment(a.join('/')).add(1, 'months')));\n } else {\n var a = vm.compareEnergyUsageArray.TickSeries[i].split('/');\n a.splice(1, 0, '01');\n tempTicks.push(new Date(a.join('/')));\n }\n angular.forEach(vm.meterObject.invoiceListArray, function (data) {\n if (data.Month == moment(tempTicks).format('MM') && data.Year == moment(tempTicks).format('YYYY')) {\n vm.exportCompareEnergyUsage.TickSeries[i] = new Date(data.BillingEndDate);\n }\n });\n angular.forEach(vm.energyUsageArray.TickSeries, function (data, index) {\n if (data.getMonth() == tempTicks[i].getMonth() && data.getFullYear() - 1 == tempTicks[i].getFullYear()) {\n vm.energyUsageArray.yoySeries1[index] = vm.compareEnergyUsageArray.Series1[i];\n if (vm.meterObject.netMeter) {\n vm.energyUsageArray.yoySeries3[index] = vm.compareEnergyUsageArray.Series3[i];\n }\n }\n });\n }\n vm.compareEnergyUsageArray.TickSeries = tempTicks;\n angular.forEach(vm.energyUsageArray.TickSeries, function (data, index) {\n var temp = {};\n temp.Series1 = vm.energyUsageArray.Series1[index];\n temp.yoySeries1 = vm.energyUsageArray.yoySeries1[index];\n if (vm.meterObject.netMeter) {\n temp.Series3 = vm.energyUsageArray.Series3[index];\n temp.yoySeries3 = vm.energyUsageArray.yoySeries3[index];\n }\n temp.month = moment(data).format('MM');\n temp.ticks = data;\n result1.push(temp);\n });\n angular.forEach(vm.compareEnergyUsageArray.TickSeries, function (data, index) {\n var temp = {};\n temp.yoySeries1 = vm.compareEnergyUsageArray.Series1[index];\n if (vm.meterObject.netMeter) {\n temp.yoySeries3 = vm.compareEnergyUsageArray.Series3[index];\n }\n temp.month = moment(data).format('MM');\n temp.ticks = data;\n result2.push(temp);\n });\n if (result2.length > result1.length) {\n var getUnique = function getUnique(arr, comp) {\n var unique = arr.map(function (e) {\n return e[comp];\n }).map(function (e, i, final) {\n return final.indexOf(e) === i && i;\n }).filter(function (e) {\n return arr[e];\n }).map(function (e) {\n return arr[e];\n });\n return unique;\n };\n vm.ConsolidatedEnergyUsageList = result2;\n vm.ConsolidatedEnergyUsageList.forEach(function (o) {\n var tempUsageComparison = result1.filter(function (item) {\n return moment(item.ticks).format('MMM') == moment(o.ticks).format('MMM');\n });\n if (tempUsageComparison.length > 0) {\n tempUsageComparison.forEach(function (e) {\n if (moment(o.ticks).format('YYYY') == moment(e.ticks).format('YYYY') - 1) {\n o.Series1 = e.Series1;\n if (vm.meterObject.netMeter) {\n o.Series3 = e.Series3;\n }\n }\n });\n } else {\n tempResult.push(o);\n }\n });\n if (tempResult && tempResult.length > 0) {\n angular.forEach(result1, function (data, index) {\n if (parseInt(data.month) + 1 == parseInt(tempResult[0].month)) {\n vm.itemIndex = index;\n }\n });\n result1.splice.apply(result1, [vm.itemIndex + 1, 0].concat(tempResult));\n }\n var result3 = result1.concat(vm.ConsolidatedEnergyUsageList);\n vm.resultantArray = getUnique(result3, 'month');\n } else {\n vm.resultantArray = result1;\n }\n loadUsageDataGraph();\n } else {\n if (vm.energyUsageArray.MessageText == 'Success') {\n angular.forEach(vm.energyUsageArray.TickSeries, function (data, index) {\n var temp = {};\n temp.Series1 = vm.energyUsageArray.Series1[index];\n temp.yoySeries1 = vm.energyUsageArray.yoySeries1[index];\n if (vm.meterObject.netMeter) {\n temp.Series3 = vm.energyUsageArray.Series3[index];\n temp.yoySeries3 = vm.energyUsageArray.yoySeries3[index];\n }\n temp.month = moment(data).format('MM');\n temp.ticks = data;\n result1.push(temp);\n });\n vm.resultantArray = result1;\n loadUsageDataGraph();\n }\n }\n } else {\n console.log(error);\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n reject(errorHandlingService.getException(error));\n }\n });\n }\n function getWeatherInfo() {\n var params = {\n contractAccount: _globalSelectedAccount.accountNum,\n meterNumber: _globalSelectedAccount.meterNumber,\n premiseNumber: _globalSelectedAccount.premiseID,\n zipCode: _globalSelectedAccount.zipCode,\n monthlyFlag: vm.meterObject.periodType == 'Year' ? 'X' : '',\n fromDate: moment(vm.meterObject.startDate).format('YYYY-MM-DDTHH:mm:ss'),\n toDate: moment(\"\".concat(moment(vm.meterObject.endDate).month() + 1, \"/31/\").concat(moment(vm.meterObject.endDate).year())).format('YYYY-MM-DDTHH:mm:ss')\n };\n return getWeatherInfoService.sitecore.getWeatherInfo(params).then(function (result) {\n if (result) {\n vm.weatherInfoArray = result.d.results[0].ZDIG_Request_to_Response.results;\n } else {\n console.log(error);\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n }\n loadGraph();\n });\n }\n function getCompareUsageComparison() {\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\n if (vm.meterObject.installationNumber) {\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\n } else {\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\n }\n if (vm.meterObject.division === assetService.divisions.ELEC) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\n vm.dataToGet.meterType = vm.meterObject.meterType;\n vm.dataToGet.fromDate = moment(moment(vm.meterObject.startDate).subtract(12, 'months')).format('YYYY-MM-DDTHH:mm:ss');\n vm.dataToGet.toDate = moment(moment(vm.meterObject.endDate).subtract(12, 'months')).format('YYYY-MM-DDTHH:mm:ss');\n return getUsageComparisionService.sitecore.getUsageComparision(vm.dataToGet).then(function (result) {\n if (result) {\n vm.ConsolidatedUsageList = [];\n var data = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n vm.compareUsageComparisonList = ccEnergyUsageDto.transformUsageList(data);\n vm.averageCompareCost = parseInt(result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].AverageUsageAmount);\n vm.averageCompareUsage = parseInt(result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].AverageMonthlyUsage);\n vm.compareUsageComparisonList.forEach(function (o) {\n o.averageCost = vm.averageCost;\n o.averageUsage = vm.averageUsage;\n });\n if (vm.compareUsageComparisonList.length > 12) {\n vm.compareUsageComparisonList.sort(function (a, b) {\n return Date.parse(a.BillingEndDate) - Date.parse(b.BillingEndDate);\n });\n vm.compareUsageComparisonList.splice(0, vm.compareUsageComparisonList.length - 12);\n }\n if (vm.compareUsageComparisonList.length > vm.usageComparisonList.length) {\n vm.ConsolidatedUsageList = vm.compareUsageComparisonList;\n vm.ConsolidatedUsageList.forEach(function (o) {\n var tempUsageComparison = vm.usageComparisonList.filter(function (item) {\n return moment(item.BillDate).format('MMM') == moment(o.BillDate).format('MMM');\n });\n tempUsageComparison.forEach(function (e) {\n if (moment(o.BillDate).format('YYYY') == moment(e.BillDate).format('YYYY') - 1) {\n o.compareUsage = e.Usage, o.compareCost = e.Bill_Amt;\n }\n });\n });\n } else {\n vm.ConsolidatedUsageList = vm.usageComparisonList;\n vm.ConsolidatedUsageList.forEach(function (o) {\n var tempUsageComparison = vm.compareUsageComparisonList.filter(function (item) {\n return moment(item.BillDate).format('MMM') == moment(o.BillDate).format('MMM');\n });\n tempUsageComparison.forEach(function (e) {\n if (moment(o.BillDate).format('YYYY') - 1 == moment(e.BillDate).format('YYYY')) {\n o.compareUsage = e.Usage, o.compareCost = e.Bill_Amt;\n }\n });\n });\n }\n if (vm.ConsolidatedUsageList.length >= 13) {\n vm.ConsolidatedUsageList.shift();\n vm.ticksOverride.shift();\n }\n loadInvoiceDataGraph();\n } else {\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n }\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function usageComparison() {\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\n if (vm.meterObject.installationNumber) {\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\n } else {\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\n }\n if (vm.meterObject.serviceType === energyService.serviceType.Electric) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\n vm.dataToGet.meterType = vm.meterObject.meterType;\n vm.dataToGet.fromDate = moment(vm.meterObject.startDate).format('YYYY-MM-DDTHH:mm:ss');\n vm.dataToGet.toDate = moment(new Date(vm.meterObject.endDate)).format('YYYY-MM-DDTHH:mm:ss');\n vm.usageComparisonList = [];\n vm.meterObject.isBlankState = false;\n return getUsageComparisionService.sitecore.getUsageComparision(vm.dataToGet).then(function (result) {\n if (result) {\n var data = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n vm.usageComparisonList = ccEnergyUsageDto.transformUsageList(data);\n if (vm.usageComparisonList.length > 13) {\n vm.usageComparisonList.sort(function (a, b) {\n return Date.parse(a.BillingEndDate) - Date.parse(b.BillingEndDate);\n });\n var a = vm.usageComparisonList.length - 13;\n vm.usageComparisonList.splice(0, a);\n }\n if (vm.usageComparisonList.length > 0) {\n vm.meterObject.isBlankState = false;\n vm.ticksOverride = [];\n vm.totalCost = 0;\n vm.totalUsage = 0;\n vm.usageComparisonList.forEach(function (o) {\n vm.ticksOverride.push(new Date(moment(o.BillDate).format('MM/DD/YYYY')));\n vm.totalCost = vm.totalCost + parseFloat(o.Bill_Amt);\n vm.totalUsage = vm.totalUsage + parseFloat(o.Usage);\n });\n vm.totalCost = vm.totalCost.toFixed();\n vm.totalUsage = vm.totalUsage.toFixed();\n vm.totalCostDecimal = String(Number((vm.totalCost.toString() + '').split('.')[1] || 0)).padStart(2, '0');\n vm.averageCost = parseInt(result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].AverageUsageAmount);\n vm.averageUsage = parseInt(result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].AverageMonthlyUsage);\n vm.averageConsolidated = vm.meterObject.unitOfMeasure == 'Dollar' ? vm.averageCost : vm.averageUsage;\n vm.avgCostDecimal = String(Number((vm.averageCost.toString() + '').split('.')[1] || 0)).padStart(2, '0');\n vm.averageUsageData = vm.averageUsage.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n vm.averageCostData = vm.averageCost.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n vm.totalCostData = vm.totalCost.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n vm.totalUsageData = vm.totalUsage.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n vm.usageComparisonList.forEach(function (o) {\n o.averageCost = vm.averageCost;\n o.averageUsage = vm.averageUsage;\n });\n if (!vm.meterObject.isMinMaxSet) {\n vm.meterObject.eligiblecompareToPrev = vm.usageComparisonList.length >= 13;\n $rootScope.$broadcast('setCalendarDate', vm.usageComparisonList[vm.usageComparisonList.length - 1].BillDate);\n }\n if (vm.meterObject.compareToPreviousYear) {\n getCompareUsageComparison();\n } else {\n loadInvoiceDataGraph();\n }\n } else {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n vm.meterObject.isBlankState = true;\n $('.energyUsageWidget').addClass('empty-state-container');\n }\n } else {\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n }\n }, function (error) {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n vm.meterObject.isBlankState = true;\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getStartEndDate() {\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\n if (vm.meterObject.installationNumber) {\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\n } else {\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\n }\n if (vm.meterObject.serviceType === energyService.serviceType.Electric) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\n vm.dataToGet.meterType = vm.meterObject.meterType;\n vm.dataToGet.fromDate = vm.meterObject.startDate;\n vm.dataToGet.toDate = vm.meterObject.endDate;\n return getUsageComparisionService.sitecore.getUsageComparision(vm.dataToGet).then(function (result) {\n var _result$d;\n if ((result === null || result === void 0 || (_result$d = result.d) === null || _result$d === void 0 ? void 0 : _result$d.results.length) > 0) {\n var data = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n vm.comparisonUsage = ccEnergyUsageDto.transformUsageList(data);\n loadGraph();\n } else {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n vm.meterObject.isBlankState = true;\n console.log(error);\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n }\n }, function (error) {\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n // account selector ------------------------------\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n vm.loaded = false;\n vm.fromInit = false;\n });\n // account selector ------------------------------\n function init() {\n vm.fromInit = true;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo) {\n vm.meterObject = vm.meterObject.meterNumber ? vm.meterObject : ccMeterSelectorService.getMeterObject();\n if (vm.meterObject.serviceType != '') {\n $rootScope.serviceType = vm.meterObject.serviceType;\n } else {\n $rootScope.serviceType = 'Not Eligible';\n }\n if (_globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = _globalSelectedAccount.userEmail;\n _bpNumber = _globalSelectedAccount.bpNumber;\n if (_globalSelectedAccount.meterNumber === null) {\n vm.lighting = true;\n }\n }\n }\n vm.meterObject.isBlankState = false;\n if ($('.energyUsageWidget').hasClass('empty-state-container')) {\n $('.energyUsageWidget').removeClass('empty-state-container');\n }\n }\n function showBlankState() {\n switch (vm.meterObject.periodType) {\n case 'Year':\n {\n if (vm.usageComparisonList.length == 0) {\n vm.meterObject.isBlankState = true;\n vm.meterObject.disableCalendar = true;\n }\n }\n break;\n }\n } // account search function\n function accountSearch() {\n accountSearchService.sitecore.cacheAccountSearch({\n contractAccountId: _globalSelectedAccount.accountNum\n }).then(function (result) {\n var dataTemp = [];\n if (result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.length > 0 && result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results.length > 0) {\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(function (itm) {\n itm.PropToInst.results.forEach(function (o) {\n o.ActiveStatus = o.MoveOutDate && Date.parse(o.MoveOutDate) > new Date().getTime() ? '(Active)' : '(Closed)';\n dataTemp.push(o);\n });\n });\n var defaultItem = dataTemp.filter(function (itm) {\n return itm.Division === '01' && itm.MeterType === 'AMI';\n });\n if (defaultItem.length == 0) {\n defaultItem = dataTemp.filter(function (itm) {\n return itm.Division === '01';\n });\n }\n if (defaultItem.length == 0) {\n defaultItem = dataTemp.filter(function (itm) {\n return itm.Division === '02';\n });\n }\n var values = defaultItem;\n var lookup = values.reduce(function (a, e) {\n a[e.MeterNumber] = ++a[e.MeterNumber] || 0;\n return a;\n }, {});\n var tempresult = values.filter(function (e) {\n return lookup[e.MeterNumber];\n });\n if (tempresult.length > 0) {\n var arrayresult = tempresult.reduce(function (obj, item) {\n obj[item.MeterNumber] ? obj[item.MeterNumber].ActiveDate > item.ActiveDate ? obj[item.MeterNumber].ActiveDate = item.ActiveDate : obj[item.MeterNumber].ActiveDate : obj[item.MeterNumber] = _objectSpread({}, item);\n obj[item.MeterNumber] ? obj[item.MeterNumber].MoveOutDate > item.MoveOutDate ? obj[item.MeterNumber].MoveOutDate : obj[item.MeterNumber].MoveOutDate = item.MoveOutDate : obj[item.MeterNumber] = _objectSpread({}, item);\n obj[item.MeterNumber] ? obj[item.MeterNumber].ActiveStatus == item.ActiveStatus ? obj[item.MeterNumber].ActiveStatus : obj[item.MeterNumber].ActiveStatus = '(Active)' : obj[item.MeterNumber] = _objectSpread({}, item);\n return obj;\n }, {});\n vm.arraySearchList = Object.values(arrayresult);\n } else {\n vm.arraySearchList = defaultItem;\n }\n vm.accountsearchList = vm.arraySearchList.filter(function (meter) {\n return parseInt((new Date() - new Date(meter.MoveOutDate)) / (1000 * 60 * 60 * 24), 10) < 730 || vm.accountsearchList[0].MoveOutDate && Date.parse(vm.arraySearchList[0].MoveOutDate) > new Date().getTime();\n });\n vm.meterObject.meterNumber = vm.accountsearchList[0].MeterNumber;\n vm.meterObject.meterType = vm.accountsearchList[0].MeterType;\n vm.meterObject.serviceType = vm.accountsearchList[0].Division === '01' ? energyService.serviceType.Electric : energyService.serviceType.Gas;\n vm.meterObject.unitOfMeasure = vm.meterObject.serviceType === energyService.serviceType.Gas ? energyService.unitOfMeasure.CCF : energyService.unitOfMeasure.kWh;\n vm.meterObject.netMeter = false; //defaultItem[0].IsSmartGridMeterInd;\n vm.meterObject.activeStatus = vm.accountsearchList[0].MoveOutDate && Date.parse(vm.arraySearchList[0].MoveOutDate) > new Date().getTime() ? '(Active)' : '(Closed)';\n if (vm.meterObject.isPrepaid) {\n loadPrepaidGrpah();\n } else {\n getMeterDetails();\n }\n } else {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n }\n });\n }\n function loadPrepaidGrpah() {\n vm.meterObject.periodType = 'Week';\n vm.meterObject.intervalFrequency = 'dailyEnergy';\n var date = new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc());\n vm.meterObject.startDate = new Date(date.setDate(date.getDate() - date.getDay() - 1 + (date.getDay() - 1 === 0 ? 1 : 1)));\n vm.meterObject.endDate = new Date(date.setDate(date.getDate() - date.getDay() + 6));\n loadGraph();\n }\n function getMeterDetails() {\n var params = {\n contractAccount: _globalSelectedAccount.accountNum\n };\n return getMeterNumberService.sitecore.getMeterNumber(params).then(function (result) {\n if (result) {\n vm.meterDetails = result.d.Multiple_CA_Nav.results[0].CAToMeter_Nav.results;\n vm.checkMeter = vm.meterDetails.filter(function (item) {\n if (item.MeterNumber.includes(vm.meterObject.meterNumber)) return item;\n });\n vm.meterObject.isNetMeter = vm.checkMeter[0].NetMeterFlg == 'X' ? true : false;\n if (vm.meterObject.isNetMeter) {\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\n }\n getStartEndDate();\n } else {\n console.log(error);\n if (vm.isDashboard) {\n componentStateHandler.failedStateDashboard(vm);\n } else {\n componentStateHandler.failedState(vm);\n }\n reject(errorHandlingService.getException(error));\n }\n });\n }\n function load() {\n vm.meterObject = ccMeterSelectorService.getMeterObject();\n loadGraph();\n }\n function loadGraph() {\n if (vm.meterObject.periodType == 'Year' && !vm.meterObject.isNetMeter) {\n vm.loadingSpinner = true;\n $timeout(function () {\n usageComparison();\n }, 1000);\n } else {\n getEnergyUsage();\n }\n }\n function loadInvoiceDataGraph() {\n vm.loaded = false;\n var graphArray = [];\n if (vm.meterObject.compareToPreviousYear) {\n graphArray = ccEnergyUsageDto.transformCompareInvoiceGraph(vm.usageComparisonList, vm.ConsolidatedUsageList, vm.meterObject, graphColors);\n } else {\n graphArray = ccEnergyUsageDto.transformInvoiceGraph(vm.usageComparisonList, vm.weatherInfoArray, vm.meterObject, vm.invoiceListArray, graphColors);\n }\n drawGraph(graphArray);\n vm.loaded = true;\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n // });\n }\n init();\n function loadUsageDataGraph() {\n vm.loaded = false;\n var graphArray = [];\n vm.energyUsageArray = vm.energyUsageArray.Series1 ? vm.energyUsageArray : energyService.energyDataFail;\n if (vm.meterObject.compareToPreviousYear) {\n vm.compareEnergyUsageArray = vm.compareEnergyUsageArray.Series1 ? vm.compareEnergyUsageArray : energyService.energyDataFail;\n graphArray = ccEnergyUsageDto.transformCompareEnergyUsage(vm.resultantArray, vm.compareEnergyUsageArray, vm.meterObject, graphColors);\n } else {\n graphArray = ccEnergyUsageDto.transformEnergyUsage(vm.energyUsageArray, vm.weatherInfoArray, vm.meterObject, graphColors);\n }\n drawGraph(graphArray);\n vm.loaded = true;\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n }\n function drawGraph(graphData) {\n google.charts.load(energyService.string.current, {\n packages: [energyService.string.corechart, 'controls']\n });\n google.charts.setOnLoadCallback(drawAxisTickColors);\n var chartSeries = {\n 0: {\n visibleInLegend: false,\n tooltip: true\n },\n 1: {\n type: energyService.string.line,\n visibleInLegend: false,\n lineDashStyle: [6, 4],\n color: graphColors.averageLine,\n tooltip: false,\n enableInteractivity: false\n }\n };\n if (vm.meterObject.compareToPreviousYear && vm.meterObject.netMeter) {\n chartSeries = {\n 0: {\n visibleInLegend: false,\n tooltip: false\n },\n 1: {\n color: 'transparent',\n enableInteractivity: false,\n visibleInLegend: false\n },\n 2: {\n visibleInLegend: false,\n tooltip: false\n },\n 3: {\n color: 'transparent',\n enableInteractivity: false,\n visibleInLegend: false\n },\n 4: {\n visibleInLegend: false,\n tooltip: false\n },\n 5: {\n color: 'transparent',\n enableInteractivity: false,\n visibleInLegend: false\n },\n 6: {\n visibleInLegend: false,\n tooltip: true\n },\n 7: {\n type: energyService.string.line,\n visibleInLegend: false,\n lineDashStyle: [6, 4],\n color: graphColors.averageLine,\n tooltip: false,\n enableInteractivity: false\n }\n };\n } else if (vm.meterObject.compareToPreviousYear || vm.meterObject.netMeter) {\n chartSeries = {\n 0: {\n visibleInLegend: false,\n tooltip: false\n },\n 1: {\n color: 'transparent',\n enableInteractivity: false,\n visibleInLegend: false\n },\n 2: {\n visibleInLegend: false,\n tooltip: true\n },\n 3: {\n type: energyService.string.line,\n visibleInLegend: false,\n lineDashStyle: [6, 4],\n color: graphColors.averageLine,\n tooltip: false,\n enableInteractivity: false\n }\n };\n }\n function drawAxisTickColors() {\n vm.loadingSpinner = false;\n vm.meterObject.loadingSpinner = false;\n componentStateHandler.showComponent(vm);\n var data = google.visualization.arrayToDataTable(graphData);\n var options = {\n height: 480,\n chartArea: {\n width: '90%',\n height: '70%',\n left: '75'\n },\n displayAnnotations: true,\n annotations: {\n alwaysOutside: true,\n style: energyService.string.point,\n textStyle: {\n fontSize: 14,\n color: graphColors.temperatureText\n }\n },\n bar: {\n groupWidth: vm.meterObject.compareToPreviousYear && vm.meterObject.netMeter ? '60' : vm.meterObject.compareToPreviousYear || vm.meterObject.netMeter ? '48' : vm.is_mobile && (vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' || vm.meterObject.intervalFrequency == 'quarterHourlyEnergyUse') ? '9' : '18'\n },\n tooltip: {\n ignoreBounds: false,\n isHtml: true,\n textStyle: {\n color: '#747474',\n fontSize: 16\n },\n trigger: vm.meterObject.compareToPreviousYear ? 'none' : ''\n },\n series: chartSeries,\n hAxis: {\n format: vm.meterObject.periodType === 'Year' && vm.meterObject.compareToPreviousYear ? 'MMM' : vm.meterObject.periodType === 'Year' && !vm.meterObject.compareToPreviousYear ? \"MMM \\n''yy\" : vm.meterObject.periodType === 'billingCycle' || vm.meterObject.periodType === 'Week' ? 'MMM \\ndd' : vm.meterObject.intervalFrequency == 'hourlyEnergyUse' ? 'h \\na' : 'h: mm \\na',\n gridlines: {\n color: '#ffffff'\n },\n textPosition: energyService.string.out,\n viewWindowMode: energyService.string.maximized,\n //showTextEvery: 1,\n slantedText: false,\n slantedTextAngle: 0,\n textStyle: {\n fontSize: 16,\n color: '#747474',\n bold: false,\n italic: false,\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif'\n }\n //ticks: vm.ticksOverride,\n },\n vAxis: {\n title: vm.meterObject.unitOfMeasure === energyService.unitOfMeasure.Dollar ? energyService.string.CostOfUnitsConsumed : vm.meterObject.unitOfMeasure,\n format: vm.meterObject.unitOfMeasure === energyService.unitOfMeasure.Dollar ? '$##' : '',\n gridlines: {\n color: graphColors.gridLines\n },\n paddingRight: '75',\n marginRight: '75',\n textStyle: {\n fontSize: 14,\n color: '#747474',\n bold: false,\n italic: false,\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif'\n },\n viewWindow: {\n min: 0\n },\n titleTextStyle: {\n fontSize: 16,\n color: '#747474',\n bold: false,\n italic: false,\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif'\n }\n }\n };\n var graphColumnCount = vm.meterObject.netMeter ? 7 : 4;\n if (vm.meterObject.compareToPreviousYear) {\n graphColumnCount = vm.meterObject.netMeter ? 12 : 6;\n }\n var columnViewArray = [];\n i = 0;\n for (i = 0; i < graphColumnCount; i++) {\n columnViewArray.push(i);\n }\n columnViewArray.push({\n type: energyService.string.string,\n label: '',\n calc: function calc(d, r) {\n return vm.averageConsolidated;\n }\n });\n var viewWithKey = new google.visualization.DataView(data);\n viewWithKey.setColumns(columnViewArray);\n var columnDataArray = [];\n i = 0;\n for (i = 0; i < graphColumnCount; i++) {\n columnDataArray.push(i);\n }\n columnDataArray.push({\n type: energyService.string.number,\n calc: function calc(dt, row) {\n return vm.averageConsolidated;\n }\n });\n var dv = new google.visualization.DataView(data);\n dv.setColumns(columnDataArray);\n if ((vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' || vm.meterObject.intervalFrequency == 'quarterHourlyEnergyUse') && !vm.is_mobile) {\n vm.start = moment(vm.meterObject.startDate).format('MM/DD/YYYY') + ' 12:00:00 AM';\n vm.end = vm.meterObject.intervalFrequency == 'hourlyEnergyUse' ? moment(vm.meterObject.startDate).format('MM/DD/YYYY') + ' 10:00:00 PM' : vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' ? moment(vm.meterObject.startDate).format('MM/DD/YYYY') + ' 05:30:00 PM' : moment(vm.meterObject.startDate).format('MM/DD/YYYY') + ' 07:30:00 AM';\n var chart = new google.visualization.ChartWrapper({\n chartType: 'ColumnChart',\n containerId: 'daily_container_count_lineChart',\n options: options\n });\n var control = new google.visualization.ControlWrapper({\n controlType: 'ChartRangeFilter',\n containerId: 'control_div',\n options: {\n filterColumnIndex: 0,\n snapToData: false,\n ui: {\n chartOptions: {\n chartArea: {\n width: '90%',\n height: 15,\n backgroundColor: '#4C4C4C'\n },\n series: {\n 0: {\n color: 'transparent'\n },\n 1: {\n color: 'transparent'\n }\n },\n haxis: {\n baselineColor: 'none'\n },\n height: 15\n }\n }\n },\n state: {\n range: {\n start: new Date(vm.start),\n end: new Date(vm.end)\n }\n }\n });\n google.visualization.events.addListener(control, 'statechange', function () {\n var state = control.getState();\n var view = new google.visualization.DataView(dv);\n view.setRows(view.getFilteredRows([{\n column: 0,\n minValue: state.range.start,\n maxValue: state.range.end\n }]));\n if (new Date(vm.start).getTime() !== state.range.start.getTime() && new Date(vm.end).getTime() !== state.range.end.getTime()) {\n var view = new google.visualization.DataView(dv);\n vm.start = state.range.start;\n vm.end = state.range.end;\n view.setRows(view.getFilteredRows([{\n column: 0,\n minValue: state.range.start,\n maxValue: state.range.end\n }]));\n } else {\n if (new Date(vm.start).getTime() !== state.range.start.getTime() && new Date(vm.end).getTime() === state.range.end.getTime()) {\n state.range.end = vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' ? new Date(state.range.end.setHours(state.range.start.getHours() + 13)) : new Date(state.range.end.setHours(state.range.start.getHours() + 7));\n } else if (new Date(vm.start).getTime() === state.range.start.getTime() && new Date(vm.end).getTime() !== state.range.end.getTime()) {\n state.range.start = vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' ? new Date(state.range.start.setHours(state.range.end.getHours() - 13)) : new Date(state.range.start.setHours(state.range.end.getHours() - 7));\n } else {\n state.range.start = new Date(vm.start);\n state.range.end = new Date(vm.end);\n }\n var view = new google.visualization.DataView(dv);\n view.setRows(view.getFilteredRows([{\n column: 0,\n minValue: state.range.start,\n maxValue: state.range.end\n }]));\n dashboard.draw(dv);\n }\n });\n var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));\n dashboard.bind(control, chart);\n dashboard.draw(dv);\n $(window).resize(function () {\n dashboard.draw(dv);\n });\n } else {\n if (vm.meterObject.periodType != 'billingCycle' && vm.meterObject.periodType != 'Day') {\n options.hAxis.ticks = vm.ticksOverride;\n }\n options.hAxis.showTextEvery = vm.meterObject.periodType == 'Day' || vm.meterObject.periodType == 'billingCycle' ? 2 : 1;\n if (vm.meterObject.netMeter) {\n options.focusTarget = 'category';\n }\n var container = document.getElementById(energyService.string.graphDiv);\n var _chart = new google.visualization.ColumnChart(container);\n _chart.draw(dv, options);\n $(window).resize(function () {\n if ($(window).width() > 767) {\n _chart.draw(dv, options);\n }\n });\n }\n }\n }\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('ccEnergyUsageController', ccEnergyUsageController);\nccEnergyUsageController.$inject = ['$log', 'ccMeterSelectorService', 'ccEnergyUsageDto', 'accountSearchService', 'genericHelperService', 'getInvoiceListService', 'getInvoiceDetailsService', 'commonService', 'assetService', 'sessionStorageService', '$scope', '$window', '$rootScope', 'energyService', 'getUsageComparisionService', 'getMeterNumberService', 'commongaTaggingService', '$timeout', 'getHistoricUsageService'];\nfunction ccEnergyUsageController($log, ccMeterSelectorService, ccEnergyUsageDto, accountSearchService, genericHelperService, getInvoiceListService, getInvoiceDetailsService, commonService, assetService, sessionStorageService, $scope, $window, $rootScope, energyService, getUsageComparisionService, getMeterNumberService, commongaTaggingService, $timeout, getHistoricUsageService) {\n var vm = this;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n vm.meterText = '';\n vm.guid = '';\n vm.period = energyService.periodTypeOption.Year;\n vm.depthChange = 'year';\n vm.setValue = moment(\"\".concat(moment().month() + 1, \"/01/\").concat(moment().year()), 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n vm.maxDate = new Date();\n vm.minDate = new Date('01/01/2020');\n vm.viewUsageDetails = false;\n vm.viewGraphOptions = false;\n vm.isCalendar = false;\n vm.meterObject = {};\n vm.accountSearchItems = [];\n vm.accountSearchArray = [];\n vm.invoiceListArray = [];\n vm.invoiceDetailsArray = [];\n vm.meterDetails = [];\n vm.currentUser = {};\n vm.dataToGet = {};\n vm.showLoader = false;\n vm.lighting = false;\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.viewCalendar = false;\n vm.showMinsView = false;\n vm.isMovedOut = false;\n vm.isBlankState = false;\n vm.disableCalendar = false;\n vm.isDownloadclicked = false;\n vm.showTable = false;\n vm.isFailState = false;\n vm.noInvoice = false;\n vm.selectPeriod = selectPeriod;\n vm.selectUnitOfMeasure = selectUnitOfMeasure;\n vm.selectMeter = selectMeter;\n vm.selectStartDate = selectStartDate;\n vm.selectEndDate = selectEndDate;\n vm.selectExport = selectExport;\n vm.selectPrint = selectPrint;\n vm.toggleCompareToPreviousYear = toggleCompareToPreviousYear;\n vm.toggleViewUsageDetails = toggleViewUsageDetails;\n vm.toggleBillCycle = toggleBillCycle;\n vm.toggleGraphOptions = toggleGraphOptions;\n vm.toggleShowMinutesView = toggleShowMinutesView;\n vm.toggleNetMeter = toggleNetMeter;\n vm.downloadMyData = downloadMyData;\n vm.showCalendar = showCalendar;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.usageLoading = false;\n vm.usageComparison = usageComparison;\n vm.showAllToggle = showAllToggle;\n vm.init = init;\n vm.isElecticMeter = true;\n var _kwValue = assetService.strings.VALUE;\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function showCalendar() {\n vm.viewCalendar = !vm.viewCalendar;\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n vm.meterObject.serviceType == 'Electric' ? arrayElements.push('subheadline:Electric Meter') : arrayElements.push('subheadline:Gas Meter');\n commongaTaggingService.attributePush(arrayElements);\n }\n function additionalAttributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n $scope.$on('setDate', function (e, d) {\n vm.isCalendar = true;\n vm.viewCalendar = false;\n vm.setValue = d;\n vm.meterObject.showMinutesView = false;\n vm.meterObject.startDate = vm.period == 'Week' ? new Date(d.setDate(d.getDate() - d.getDay() - 1 + (d.getDay() - 1 === 0 ? -6 : 1))) : d;\n attributePush(\"workFlow:\".concat($('#hdn-date').attr('businessFunction')), \"headline:\".concat($('#hdn-date').attr('headLine')), \"buttonText:\".concat($('#hdn-date').attr('buttonText')));\n setDateValue(d, vm.period);\n });\n function selectExport() {\n // export data;\n $rootScope.$broadcast('exportData', vm.meterObject);\n }\n function selectPrint() {\n $window.print();\n }\n function downloadMyData() {\n // download into xml\n vm.showLoader = true;\n if (!vm.meterObject.isDownloadclicked) {\n vm.meterObject.isDownloadclicked = true;\n $rootScope.$broadcast('downloadData', 'download');\n }\n }\n $scope.$on('resetLoadingSpinner', function (index, value) {\n vm.showLoader = value;\n });\n function setIntervalFrequency() {\n // update this matrix when we now all interval types\n var periodType = vm.meterObject.periodType;\n if (vm.period === 'Year' && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n periodType = energyService.periodType.Year; // possible change\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy; // possible change\n } else if (vm.period === energyService.periodTypeOption.Months && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n periodType = energyService.periodType.BillingCycle;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy;\n } else if (vm.period === energyService.periodTypeOption.Week && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n periodType = energyService.periodType.Week;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy;\n // vm.meterObject.startDate = new Date(tempDate.setDate(tempDate.getDate() - tempDate.getDay() - 1 + ((tempDate.getDay() - 1) === 0 ? -6 : 1)))\n } else if (vm.period === energyService.periodTypeOption.Days && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n periodType = energyService.periodType.Day;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.hourlyEnergyUse;\n } else if (vm.period === energyService.periodTypeOption.Hours && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n vm.meterObject.endDate = vm.meterObject.startDate;\n periodType = energyService.periodType.Day;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.hourlyEnergyUse;\n } else if (vm.period === energyService.periodTypeOption.Min && vm.meterObject.serviceType === energyService.serviceType.Electric) {\n vm.meterObject.endDate = vm.meterObject.startDate;\n periodType = energyService.periodType.Day;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.quarterHourlyEnergyUse;\n } else if (vm.period === energyService.periodTypeOption.Year && vm.meterObject.serviceType === energyService.serviceType.Gas) {\n periodType = energyService.periodType.Year; // possible change\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy; // possible change\n } else if (vm.period === energyService.periodTypeOption.Months && vm.meterObject.serviceType === energyService.serviceType.Gas) {\n periodType = energyService.periodType.BillingCycle; // possible change\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy; // possible change\n } else {\n periodType = energyService.periodType.Week;\n vm.meterObject.intervalFrequency = energyService.intervalFrequency.dailyEnergy;\n }\n if (vm.meterObject.isNetMeter && vm.period === 'Year') {\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\n }\n //vm.meterObject.loadingSpinner = false;\n tempObject = vm.meterObject;\n tempObject.periodType = periodType;\n ccMeterSelectorService.setMeterObject(tempObject);\n }\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function toggleViewUsageDetails() {\n pushDL('energy_usage', 'view-usage-table', 'usage-details' + '-|-' + \"\".concat(vm.meterObject.serviceType, \"-meter\").toLowerCase());\n vm.loadingSpinner = true;\n $rootScope.download = true;\n getInvoiceList();\n }\n function selectStartDate() {\n setIntervalFrequency();\n }\n function selectEndDate() {\n setIntervalFrequency();\n }\n function toggleBillCycle() {\n vm.meterObject.billCycle = !vm.meterObject.billCycle;\n if (vm.meterObject.billCycle) {\n vm.meterObject.startDate = vm.meterObject.billStartDate;\n vm.meterObject.endDate = vm.meterObject.billEndDate;\n } else {\n vm.meterObject.endDate = new Date();\n vm.meterObject.endDate.setDate(1);\n vm.meterObject.endDate.setMonth(vm.meterObject.endDate.getMonth());\n vm.meterObject.startDate = new Date();\n vm.meterObject.startDate.setDate(1);\n vm.meterObject.startDate.setMonth(vm.meterObject.startDate.getMonth() - 1);\n }\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n function toggleGraphOptions(setFilter) {\n vm.viewGraphOptions = !vm.viewGraphOptions;\n if (setFilter) {\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n }\n function selectMeter(meterSelected, fromLoad) {\n vm.meterObject.loadingSpinner = true;\n vm.meterObject.meterNumber = meterSelected.value.meterNumber;\n vm.meterObject.meterType = meterSelected.value.meterType;\n vm.meterObject.netMeter = false;\n vm.meterObject.serviceType = meterSelected.value.serviceType;\n vm.meterObject.unitOfMeasure = meterSelected.value.serviceType === energyService.serviceType.Gas ? energyService.unitOfMeasure.CCF : energyService.unitOfMeasure.kWh;\n vm.meterObject.periodType = energyService.periodType.Year;\n vm.meterObject.MoveOutDate = meterSelected.value.MoveOutDate;\n vm.isMovedOut = vm.meterObject.MoveOutDate < new Date();\n vm.period = energyService.periodTypeOption.Year;\n vm.meterText = meterSelected.text;\n vm.showTable = false;\n vm.isShowAll = undefined;\n vm.getMinDate = meterSelected.value.activeDate;\n vm.viewUsageDetails = new Date(vm.getMinDate).getTime() != new Date().getTime();\n vm.meterObject.division = meterSelected.value.serviceType === energyService.serviceType.Gas ? '02' : '01';\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\n vm.meterObject.endDate = moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().format('DD'), \"/\").concat(moment().year())).format('YYYY-MM-DDTHH:mm:ss');\n vm.meterType = vm.meterObject.serviceType == 'Electric' ? 'Electric Meter' : 'Gas Meter';\n vm.isElecticMeter = vm.meterObject.serviceType == 'Electric' ? true : false;\n if (!fromLoad) {\n additionalAttributePush(\"workFlow:\".concat($('#hdn-meter').attr('businessFunction')), \"headline:\".concat($('#hdn-meter').attr('headLine')), \"subheadline:\".concat($('#hdn-meter').attr('subheadLine')), \"buttonText:\".concat(vm.meterType));\n }\n getMeterDetails();\n }\n function selectPeriod(period) {\n ResetBlankStateValues();\n vm.meterObject.netMeter = false;\n vm.meterObject.showMinutesView = false;\n vm.viewCalendar = false;\n vm.isCalendar = false;\n vm.labelCalendar = period == 'Day' ? 'Day Selection' : 'Week Selection';\n vm.period = period;\n vm.meterObject.periodType = period;\n vm.meterObject.compareToPreviousYear = false;\n vm.meterObject.unitOfMeasure = vm.meterObject.serviceType === energyService.serviceType.Gas ? 'CCF' : 'kWh';\n vm.invoiceArray = _.orderBy(vm.usageComparisonList, ['BillDate'], ['desc', 'asc']);\n if (vm.invoiceArray.length > 0 && (period == 'Year' || period == 'Months') || new Date(vm.getMinDate) != new Date() && (period == 'Day' || period == 'Week')) {\n if (vm.isMovedOut) {\n var date = period == 'Year' || period == 'Months' ? vm.defaultEndBillingDate ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY')) : new Date(vm.usageComparisonList[0].BillingEndDate) : vm.meterObject.MoveOutDate;\n if (period == 'Day' || period == 'Week') vm.setValue = vm.meterObject.MoveOutDate;\n } else {\n var date = period == 'Day' || period == 'Week' ? new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc()) : period == 'Year' ? vm.defaultEndBillingDate ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY')) : new Date(vm.usageComparisonList[0].BillingEndDate) : period == 'Months' ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY')) : new Date();\n vm.setValue = period == 'Day' || period == 'Week' ? new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc()) : period == 'Year' ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY')) : period == 'Months' ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY')) : new Date();\n }\n vm.depthChange = period == 'Year' || period == 'Months' ? 'year' : 'Month';\n if (period == 'Day' || period == 'Week') setMinMax(vm.period, date);\n setDateValue(date, vm.period);\n } else {\n showBlankState();\n }\n }\n $scope.$on('setCalendarDate', function (e, date) {\n vm.defaultEndBillingDate = date;\n if (vm.isMovedOut) {\n vm.setValue = vm.period == 'Year' || vm.period == 'Months' ? date : vm.meterObject.MoveOutDate;\n } else {\n vm.setValue = vm.period == 'Year' || vm.period == 'Months' ? date : new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc());\n }\n setMinMax(vm.period, date);\n vm.meterObject.isMinMaxSet = true;\n });\n function showBlankState() {\n switch (vm.meterObject.periodType) {\n case 'Year':\n if (vm.usageComparisonList.length == 0) {\n vm.meterObject.isBlankState = true;\n vm.meterObject.disableCalendar = true;\n }\n break;\n case 'Months':\n if (vm.usageComparisonList.length == 0) {\n vm.meterObject.isBlankState = true;\n vm.meterObject.disableCalendar = true;\n }\n break;\n case 'Week':\n if (new Date(vm.getMinDate) == new Date()) {\n vm.meterObject.isBlankState = true;\n vm.meterObject.disableCalendar = true;\n }\n break;\n case 'Day':\n if (new Date(vm.getMinDate) == new Date()) {\n vm.meterObject.isBlankState = true;\n vm.meterObject.disableCalendar = true;\n }\n break;\n default:\n break;\n }\n }\n function ResetBlankStateValues() {\n vm.meterObject.isBlankState = false;\n vm.meterObject.disableCalendar = false;\n }\n function setDateValue(date, period) {\n ResetBlankStateValues();\n if (period == 'Year') {\n var getEndDate = new Date(date); //vm.usageComparisonList.filter(data => moment(data.BillDate).format('MMMM') == moment(date).format('MMMM') && moment(data.BillDate).format('YYYY') == moment(date).format('YYYY'));\n\n vm.meterObject.startDate = moment(moment(getEndDate, 'MM/DD/YYYY').subtract(13, 'months')).format('YYYY-MM-DDTHH:mm:ss'); //moment(`${(new Date(getEndDate[0].BillingStartDate).getMonth() == 0 ? 1 : new Date(getEndDate[0].BillingStartDate).getMonth())}/01/${date.getFullYear() - 1}`, 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n vm.meterObject.endDate = moment(getEndDate).format('YYYY-MM-DDTHH:mm:ss'); //(moment(getEndDate[0].BillDate).format('MM') == getEndDate[0].Month) ? moment(getEndDate[0].BillDate).format('YYYY-MM-DDTHH:mm:ss') : moment(`${(new Date(getEndDate[0].BillDate).getMonth() + 1)}/01/${new Date(getEndDate[0].BillDate).getFullYear()}`, 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n\n if (vm.meterObject.endDate == 'Invalid date') {\n vm.meterObject.endDate = moment(new Date()).format('YYYY-MM-DDTHH:mm:ss');\n }\n if (vm.meterObject.MoveOutDate < new Date() && moment(date).subtract(12, 'months') < moment().subtract(12, 'months')) {\n if (vm.getMinDate > moment().subtract(24, 'months')) {\n date = vm.getMinDate;\n vm.meterObject.startDate = moment(\"\".concat(date.getMonth() + 1, \"/\").concat(date.getDate(), \"/\").concat(date.getFullYear()), 'MM/D/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n } else {\n vm.meterObject.startDate = moment(\"\".concat(date.getMonth() + 1, \"/01/\").concat(date.getFullYear() - 1), 'MM/D/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n }\n } else if (vm.getMinDate > moment().subtract(24, 'months')) {\n date = vm.getMinDate;\n vm.meterObject.startDate = moment(\"\".concat(date.getMonth() + 1, \"/01/\").concat(date.getFullYear()), 'MM/D/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n } else {\n vm.meterObject.startDate = vm.meterObject.isNetMeter ? moment(\"\".concat(moment(date).format('MM'), \"/01/\").concat(new Date(date).getFullYear() - 1), 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss') : moment(date).subtract(14, 'months').format('YYYY-MM-DDTHH:mm:ss');\n }\n } else if (period == 'Week') {\n var startDate = new Date(date.setDate(date.getDate() - date.getDay() - 1 + (date.getDay() - 1 === 0 ? 1 : 1)));\n var startDateSuffix = english_ordinal_suffix(startDate);\n var endDate = new Date(date.setDate(date.getDate() - date.getDay() + 6));\n var endDateSuffix = english_ordinal_suffix(endDate);\n var textValue = \"\".concat(startDate.toLocaleString('en-us', {\n month: 'short'\n }), \" \").concat(startDateSuffix, \" - \").concat(endDate.toLocaleString('en-us', {\n month: 'short'\n }), \" \").concat(endDateSuffix, \", \").concat(date.getFullYear());\n document.getElementById('inputCalendar').value = textValue;\n vm.meterObject.startDate = new Date(date.setDate(date.getDate() - date.getDay() - 1 + (date.getDay() - 1 === 0 ? -6 : 1)));\n vm.meterObject.endDate = new Date(date.setDate(date.getDate() - date.getDay() + 6));\n } else if (period == 'Months') {\n var dateForMonths = [];\n if (vm.isCalendar) {\n var dateForMonths = vm.usageComparisonList.filter(function (data) {\n return moment(data.BillDate).format('MMMM') == date.toLocaleString('en-us', {\n month: 'long'\n }) && moment(data.BillDate).format('YYYY') == date.toLocaleString('en-us', {\n year: 'numeric'\n });\n });\n } else {\n var dateForMonths = vm.usageComparisonList.filter(function (data) {\n return moment(data.BillDate).format('MMMM') == moment(\"\".concat(moment(date).month() + 1, \"/01/\").concat(moment(date).year())).format('MMMM') && moment(data.BillDate).format('YYYY') == date.toLocaleString('en-us', {\n year: 'numeric'\n });\n });\n }\n if (dateForMonths.length > 0) {\n vm.meterObject.startDate = new Date(moment(dateForMonths[0].BillingStartDate).utc());\n vm.meterObject.endDate = new Date(moment(dateForMonths[0].BillingEndDate).utc());\n } else {\n vm.meterObject.isBlankState = true;\n }\n } else {\n var crrentDateSuffix = english_ordinal_suffix(date);\n var currentYear = date.getFullYear();\n var currentMonth = date.toLocaleString('en-us', {\n month: 'long'\n });\n document.getElementById('inputCalendar').value = \"\".concat(currentMonth, \" \").concat(crrentDateSuffix, \", \").concat(currentYear);\n vm.meterObject.startDate = date;\n vm.meterObject.endDate = date;\n }\n setIntervalFrequency();\n }\n function setMinMax(period, date) {\n vm.period = period;\n vm.date = date;\n vm.invoiceArray = _.orderBy(vm.usageComparisonList, ['BillDate'], ['desc', 'asc']);\n if (period == 'Week' || period == 'Day') {\n vm.minDate = new Date(moment(vm.getMinDate).add(24, 'months')) > new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc()) ? vm.getMinDate : new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year() - 2), 'MM/DD/YYYY').subtract(1, 'days').utc());\n // vm.invoiceArray.length > 0 ? new Date(moment(vm.invoiceArray[(vm.invoiceArray.length) - 1].BillingStartDate).utc()) : vm.getMinDate;\n vm.maxDate = vm.isMovedOut ? vm.meterObject.MoveOutDate : new Date(moment(\"\".concat(moment().month() + 1, \"/\").concat(moment().date(), \"/\").concat(moment().year()), 'MM/DD/YYYY').subtract(1, 'days').utc());\n } else if (period == 'Year') {\n vm.maxDate = new Date(moment(date));\n vm.minDate = new Date(moment(vm.getMinDate).add(24, 'months')) > new Date() ? vm.getMinDate : new Date(moment(new Date(), 'MM/DD/YYYY').subtract(24, 'months'));\n } else {\n vm.maxDate = new Date(moment(vm.invoiceArray[0].BillDate));\n vm.minDate = new Date(moment(vm.invoiceArray[0].BillDate, 'MM/DD/YYYY').subtract(24, 'months'));\n }\n }\n function english_ordinal_suffix(dt) {\n var formattedDate = dt.getDate() + (dt.getDate() % 10 == 1 && dt.getDate() != 11 ? 'st' : dt.getDate() % 10 == 2 && dt.getDate() != 12 ? 'nd' : dt.getDate() % 10 == 3 && dt.getDate() != 13 ? 'rd' : 'th');\n return formattedDate;\n }\n function selectUnitOfMeasure(unit) {\n vm.meterObject.compareToPreviousYear = false;\n if (unit === energyService.unitOfMeasure.Dollar) {\n vm.meterObject.periodType = energyService.periodType.Year;\n vm.period = energyService.periodTypeOption.Year;\n vm.meterObject.unitOfMeasure = unit;\n selectPeriod(vm.period);\n } else {\n vm.meterObject.unitOfMeasure = unit;\n setIntervalFrequency();\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n }\n function toggleCompareToPreviousYear() {\n vm.meterObject.compareToPreviousYear = !vm.meterObject.compareToPreviousYear;\n var tempArg = Array.prototype.slice.call(arguments);\n tempArg[0] = \"workFlow:\".concat(tempArg[0]);\n tempArg[1] = \"headline:\".concat(tempArg[1]);\n tempArg[2] = \"addedSpec:\".concat(tempArg[2]);\n tempArg[3] = \"buttonText:\".concat(vm.meterObject.compareToPreviousYear ? 'On' : 'off');\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\n vm.meterObject.periodType = energyService.periodType.Year;\n vm.period = energyService.periodTypeOption.Year;\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n function toggleShowMinutesView() {\n vm.meterObject.showMinutesView = !vm.meterObject.showMinutesView;\n if (vm.meterObject.showMinutesView) {\n vm.meterObject.intervalFrequency = vm.checkMeter[0].MeterInterval == '30' ? 'halfHourlyEnergyUse' : vm.checkMeter[0].MeterInterval == '15' ? 'quarterHourlyEnergyUse' : 'hourlyEnergyUse';\n } else {\n vm.meterObject.intervalFrequency = 'hourlyEnergyUse';\n }\n var tempArg = Array.prototype.slice.call(arguments);\n tempArg[0] = \"workFlow:\".concat(tempArg[0]);\n tempArg[1] = \"headline:\".concat(tempArg[1]);\n tempArg[2] = \"addedSpec:\".concat(vm.checkMeter[0].MeterInterval == '30' ? tempArg[3] : tempArg[2]);\n tempArg[3] = \"buttonText:\".concat(vm.meterObject.showMinutesView ? 'On' : 'off');\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n function toggleNetMeter() {\n vm.meterObject.netMeter = !vm.meterObject.netMeter;\n if (vm.meterObject.isNetMeter) {\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\n }\n var tempArg = Array.prototype.slice.call(arguments);\n tempArg[0] = \"workFlow:\".concat(tempArg[0]);\n tempArg[1] = \"headline:\".concat(tempArg[1]);\n tempArg[2] = \"addedSpec:\".concat(tempArg[2]);\n tempArg[3] = \"buttonText:\".concat(vm.meterObject.netMeter ? 'On' : 'off');\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\n ccMeterSelectorService.setMeterObject(vm.meterObject);\n }\n function getAccountList() {\n var params = {\n contractAccountId: ccMeterSelectorService.getContractAccountId()\n };\n // return accountSearchService.sitecore.cacheAccountSearch(params).then((result) => {\n var result = $rootScope.accountdetails;\n if (result) {\n var dataTemp = [];\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(function (itm) {\n itm.PropToInst.results.forEach(function (o) {\n return dataTemp.push(o);\n });\n });\n vm.accountSearchData = _.map(dataTemp, function (o) {\n return {\n meterNumber: o.MeterNumber,\n meterType: o.MeterType,\n netMeter: o.IsSmartGridMeterInd,\n activeDate: new Date(o.ActiveDate),\n activeStatus: o.MoveOutDate && Date.parse(o.MoveOutDate) > new Date().getTime() ? '(Active)' : '(Closed)',\n MoveOutDate: new Date(o.MoveOutDate),\n serviceType: o.Division == '02' ? energyService.serviceType.Gas : energyService.serviceType.Electric\n };\n });\n var values = vm.accountSearchData;\n var lookup = values.reduce(function (a, e) {\n a[e.meterNumber] = ++a[e.meterNumber] || 0;\n return a;\n }, {});\n var tempresult = values.filter(function (e) {\n return lookup[e.meterNumber];\n });\n if (tempresult.length > 0) {\n var arrayresult = tempresult.reduce(function (obj, item) {\n obj[item.meterNumber] ? obj[item.meterNumber].activeDate > item.activeDate ? obj[item.meterNumber].activeDate = item.activeDate : obj[item.meterNumber].activeDate : obj[item.meterNumber] = _objectSpread({}, item);\n obj[item.meterNumber] ? obj[item.meterNumber].MoveOutDate > item.MoveOutDate ? obj[item.meterNumber].MoveOutDate : obj[item.meterNumber].MoveOutDate = item.MoveOutDate : obj[item.meterNumber] = _objectSpread({}, item);\n obj[item.meterNumber] ? obj[item.meterNumber].activeStatus == item.activeStatus ? obj[item.meterNumber].activeStatus : obj[item.meterNumber].activeStatus = '(Active)' : obj[item.meterNumber] = _objectSpread({}, item);\n return obj;\n }, {});\n vm.arraySearchList = Object.values(arrayresult);\n var getOtherData = vm.accountSearchData.filter(function (e) {\n return !lookup[e.meterNumber];\n });\n getOtherData.forEach(function (meter) {\n vm.arraySearchList.push(meter);\n });\n } else {\n vm.arraySearchList = vm.accountSearchData;\n }\n vm.accountSearchArray = [];\n vm.arraySearchList.forEach(function (o) {\n if (o.meterNumber) {\n vm.accountSearchArray.push({\n value: {\n meterNumber: o.meterNumber,\n meterType: o.meterType,\n netMeter: o.netMeter,\n serviceType: o.serviceType,\n activeDate: o.activeDate,\n MoveOutDate: o.MoveOutDate,\n status: o.activeStatus,\n imageUrl: o.serviceType === energyService.serviceType.Gas ? vm.gasIcon : o.serviceType === energyService.serviceType.Electric ? vm.electricIcon : ''\n },\n text: \"\".concat(o.serviceType, \" Meter - \").concat(o.meterNumber, \" \").concat(o.activeStatus)\n });\n }\n });\n vm.accountSearchItems = genericHelperService.createDropdownList(vm.accountSearchArray);\n if (vm.accountSearchItems.length > 1) {\n vm.accountSearchItems.sort(function (a, b) {\n return a.value.serviceType === b.value.serviceType ? a.value.status === '(Active)' ? -1 : 1 : a.value.serviceType === energyService.serviceType.Gas ? 1 : -1;\n });\n }\n vm.accountSearchList = vm.accountSearchItems.filter(function (itm) {\n return parseInt((new Date() - new Date(itm.value.MoveOutDate)) / (1000 * 60 * 60 * 24), 10) < 730 || itm.value.MoveOutDate && Date.parse(itm.value.MoveOutDate) > new Date().getTime();\n });\n var defaultItem = vm.accountSearchList.filter(function (itm) {\n return itm.value.serviceType === energyService.serviceType.Electric && itm.value.meterType === 'AMI';\n });\n if (defaultItem.length == 0) {\n defaultItem = vm.accountSearchList.filter(function (itm) {\n return itm.value.serviceType === energyService.serviceType.Electric;\n });\n }\n if (defaultItem.length == 0) {\n defaultItem = vm.accountSearchList.filter(function (itm) {\n return itm.value.serviceType === energyService.serviceType.Gas;\n });\n }\n selectMeter(defaultItem[0], true);\n } else {\n console.log(error);\n }\n // });\n }\n function historicUsage() {\n vm.request = {\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\n meterSerialNumber: vm.meterObject.meterNumber\n };\n return getHistoricUsageService.sitecore.getHistoricUsage(vm.request).then(function (result) {\n var data = result.d.EnergyReqResNav.results;\n vm.usageComparisonList = _.map(data, function (o) {\n return {\n BillDate: moment(o.BillingEndDate).format('MM/DD/YYYY'),\n BillingEndDate: moment(o.BillingEndDate).format('MM/DD/YYYY'),\n BillingStartDate: moment(o.BillingStartDate).format('MM/DD/YYYY')\n };\n });\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\n vm.usageEndDate = data[0].BillingEndDate;\n //vm.meterObject.loadingSpinner = false;\n selectPeriod('Year');\n }, function (error) {\n vm.isFailState = true;\n vm.meterObject.loadingSpinner = false;\n });\n }\n function usageComparison() {\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\n if (vm.meterObject.installationNumber) {\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\n } else {\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\n }\n if (vm.meterObject.division === assetService.divisions.ELEC) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\n vm.dataToGet.meterType = vm.meterObject.meterType;\n vm.dataToGet.fromDate = moment(\"\".concat(moment().month() + 1, \"/01/\").concat(moment().year() - 2), 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\n vm.dataToGet.toDate = moment(vm.defaultEndBillingDate).format('YYYY-MM-DDTHH:mm:ss');\n return getUsageComparisionService.sitecore.getUsageComparision(vm.dataToGet).then(function (result) {\n var data = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n vm.usageComparisonList = ccEnergyUsageDto.transformUsageList(data);\n if (vm.usageComparisonList.length > 0) {\n vm.usageDetailsList = _.map(vm.usageComparisonList, function (details) {\n return _defineProperty(_defineProperty({\n BillingDate: new Date(details.BillingEndDate).getTime(),\n BillingDays: details.BillingDays,\n BillDate: details.BillDate,\n ReadType: details.ReadType === '03' ? 'Estimated' : details.ReadType === '01' ? 'Actual' : '',\n Usage: parseFloat(details.Usage).toFixed(2)\n }, \"Usage\", parseFloat(details.Usage).toFixed(2)), \"AvgUsg\", parseFloat(details.AvgUsg).toFixed(2));\n });\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\n }\n //vm.meterObject.loadingSpinner = false;\n selectPeriod('Months');\n }, function (error) {\n vm.isFailState = true;\n vm.meterObject.loadingSpinner = false;\n });\n }\n function showAllToggle() {\n vm.isShowAll = false;\n if (vm.detailsArraytable.length < 15) {\n getInvoiceList();\n }\n }\n function getInvoiceList() {\n var newInvoiceDate = !vm.isShowAll && vm.isShowAll != undefined ? vm.detailsArraytable[vm.detailsArraytable.length - 1].billDate : null;\n var params = {\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\n businessPartner: vm.meterObject.businessPartnerId,\n invoiceCount: !vm.isShowAll && vm.isShowAll != undefined ? '11' : '14',\n isDashboard: !vm.isShowAll && vm.isShowAll != undefined ? false : true,\n fromDate: !vm.isShowAll && vm.isShowAll != undefined ? \"/Date(\".concat(new Date(moment(moment.utc(newInvoiceDate, 'MM-DD-YYYY').subtract(12, 'months'))).getTime(), \")/\") : null,\n toDate: !vm.isShowAll && vm.isShowAll != undefined ? \"/Date(\".concat(moment.utc(newInvoiceDate).valueOf(), \")/\") : null\n };\n return getInvoiceListService.sitecore.getInvoiceList(params).then(function (result) {\n var _result$d;\n if (result && result !== null && result !== void 0 && (_result$d = result.d) !== null && _result$d !== void 0 && _result$d.Inp_Req) {\n var data = result.d.Inp_Req.results[0].Account_Invoice.results;\n if (data.length > 0) {\n vm.invoiceListArray = ccEnergyUsageDto.transformInvoiceList(data);\n vm.invoiceArray = _.orderBy(vm.invoiceListArray, ['billDate'], ['desc', 'asc']);\n if (!vm.isShowAll && vm.isShowAll != undefined) {\n vm.invoiceArray = vm.invoiceArray.slice(1, vm.invoiceArray.length);\n }\n vm.ticksOverride = [];\n data.forEach(function (o) {\n vm.ticksOverride.push(new Date(o.BillEndDate));\n });\n var promiseQueue = [];\n vm.invoiceDetailsArray = [];\n Array.prototype.forEach.call(vm.invoiceArray, function (invoice) {\n promiseQueue.push(getInvoiceDetails(invoice.invoiceId));\n });\n commonService.executePromises(promiseQueue).then(function () {\n vm.newInvoiceArray = [];\n if (!vm.isShowAll && vm.isShowAll != undefined) {\n vm.newInvoiceArray = _.orderBy(vm.invoiceDetailsArray, ['invDate'], ['desc', 'asc']);\n vm.detailsArraytable = vm.detailsArraytable.concat(vm.newInvoiceArray);\n vm.updatedArrayTable = vm.detailsArraytable;\n } else {\n vm.detailsArraytable = _.orderBy(vm.invoiceDetailsArray, ['invDate'], ['desc', 'asc']);\n vm.isShowAll = vm.detailsArraytable.length > 13;\n vm.updatedArrayTable = _toConsumableArray(vm.detailsArraytable);\n if (vm.detailsArraytable.length > 13) {\n vm.updatedArrayTable.splice(vm.updatedArrayTable.length - 1, 1);\n } else {\n vm.updatedArrayTable = vm.detailsArraytable;\n }\n }\n vm.showTable = true;\n vm.loadingSpinner = false;\n });\n } else {\n vm.noInvoice = true;\n $rootScope.download = false;\n vm.loadingSpinner = false;\n }\n } else {\n console.log(error);\n vm.meterObject.loadingSpinner = false;\n vm.isFailState = true;\n $rootScope.download = false;\n vm.loadingSpinner = false;\n }\n });\n }\n function getInvoiceDetails(invoiceId) {\n var params = {\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\n invoiceId: invoiceId\n };\n return getInvoiceDetailsService.sitecore.getInvoiceDetails(params).then(function (result) {\n if (result) {\n if (result.d.results[0].InvId != '' || result.d.results[0].InvDate != null) {\n vm.invoiceDetailsArray.push(ccEnergyUsageDto.transformInvoiceDetails(result.d.results)[0]);\n }\n } else {\n vm.isFailState = true;\n vm.meterObject.loadingSpinner = false;\n console.log(error);\n }\n });\n }\n function getMeterDetails() {\n var params = {\n contractAccount: ccMeterSelectorService.getContractAccountId()\n };\n return getMeterNumberService.sitecore.getMeterNumber(params).then(function (result) {\n if (result) {\n var _result$d2;\n vm.meterDetails = result === null || result === void 0 || (_result$d2 = result.d) === null || _result$d2 === void 0 || (_result$d2 = _result$d2.Multiple_CA_Nav) === null || _result$d2 === void 0 ? void 0 : _result$d2.results[0].CAToMeter_Nav.results;\n if (vm.meterDetails.length < 1) {\n vm.isBlankState = true;\n vm.meterObject.loadingSpinner = false;\n }\n vm.checkMeter = vm.meterDetails.filter(function (item) {\n if (item.MeterNumber.includes(vm.meterObject.meterNumber)) return item;\n });\n vm.showMinsView = !!(vm.checkMeter[0].MeterInterval == '30' || vm.checkMeter[0].MeterInterval == '15');\n vm.meterObject.isNetMeter = vm.netMeter = vm.checkMeter[0].NetMeterFlg == 'X';\n vm.MeterInterval = vm.checkMeter[0].MeterInterval;\n historicUsage();\n } else {\n vm.isFailState = true;\n vm.meterObject.loadingSpinner = false;\n console.log(error);\n }\n });\n }\n function load() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n ccMeterSelectorService.setContractAccountId(globalSelectedAccount.accountNum);\n }\n if (_globalSelectedAccount.meterNumber === null) {\n vm.lighting = true;\n } else {\n vm.lighting = false;\n }\n getRole();\n vm.meterObject.businessPartnerId = globalSelectedAccount.bpNumber ? globalSelectedAccount.bpNumber : '';\n vm.meterObject.isMinMaxSet = false;\n getAccountList();\n $(window).click(function (e) {\n if (e.target.classList.length == 0 && vm.viewCalendar || e.target.classList.length > 0 && !e.target.classList[0].includes('sui-') && !e.target.classList[0].includes('week-day') && !e.target.classList[0].includes('caret') && !e.target.classList[0].includes('out-of-range-days') && vm.viewCalendar) {\n $('.week-day .caret').trigger('click');\n }\n });\n }\n\n //toggleViewUsageDetails();\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n load();\n });\n function init(gasIcon, electricIcon, guid) {\n vm.gasIcon = gasIcon;\n vm.electricIcon = electricIcon;\n vm.guid = guid;\n vm.meterObject = ccMeterSelectorService.getMeterObject();\n vm.meterObject.loadingSpinner = true;\n if (assetService.apiConfig.useLocalHost) {\n load();\n }\n }\n}\napp.factory('ccEnergyUsageDto', function (FPDateHelperService) {\n function transformInvoiceList(data) {\n return _.map(data, function (o) {\n return {\n invoiceId: o.InvId,\n billDate: o.InvDate,\n billingDays: moment(o.BillEndDate).diff(moment(o.BillStartDate), 'days'),\n billStartDate: o.BillStartDate,\n billEndDate: o.BillEndDate\n };\n });\n }\n function transformUsageList(data) {\n return _.map(data, function (o) {\n return {\n BillingDate: \"/Date(\".concat(new Date(o.BillingEndDate).getTime(), \")/\"),\n BillingDays: o.BillingDays,\n BillingEndDate: o.BillingEndDate,\n BillingStartDate: o.BillingStartDate,\n Bill_Amt: o.Bill_Amt,\n Usage: o.Usage,\n Month: o.Month,\n Year: o.Year,\n BillDate: new Date(o.BillingEndDate).getTime() < new Date(o.BillingDateStr).getTime() ? getValidDate(o.BillingDateStr, o.Month, o.Year) : getValidDate(o.BillingEndDate, o.Month, o.Year)\n };\n });\n }\n function getValidDate(date, month, year) {\n var xx = new Date(moment(\"\".concat(month, \"/\").concat(moment(date).format('DD'), \"/\").concat(year), 'MM/DD/YYYY'));\n if (xx == \"Invalid Date\") {\n xx = moment(\"\".concat(moment(date).month() + 1, \"/\").concat(moment(date).date(), \"/\").concat(moment(date).year()), 'MM/DD/YYYY').subtract(1, 'days');\n return getValidDate(xx, month, year);\n } else {\n return xx;\n }\n }\n function transformInvoiceDetails(data) {\n return _.map(data, function (o) {\n return {\n invoiceId: o.InvId,\n billDate: moment(o.InvDate).utc().format('MM/DD/YYYY'),\n invDate: o.InvDate,\n serviceType: o.SrvType,\n otherCharges: o.OthCharges,\n taxes: o.Taxes,\n billedDays: o.BilledDays,\n billStartDate: o.BillStartDate,\n billEndDate: o.BillEndDate,\n totalKwh: parseInt(o.TotalKwhqt),\n totalKwhMetered: parseInt(o.TotKwhqtMetered),\n totalCcf: parseInt(o.TotCcfqt),\n dailyKwhCost: parseInt(o.DailyKwhCost),\n dailyCcfCost: parseInt(o.DailyCcfCost),\n averageDailyKwh: parseFloat(o.AvgDailyKwh).toFixed(2),\n averageDailyCcf: parseFloat(o.AvgDailyCcf).toFixed(2),\n readType: o.ReadTyp === '03' ? 'Actual' : 'Estimated',\n meterType: o.MeterType,\n paymentAmount: o.PaymentAmount\n };\n });\n }\n function transformEnergyUsage(data, weatherData, graphFilter, colors) {\n var out = [];\n if (graphFilter.netMeter) {\n out.push([graphFilter.periodType, {\n role: 'tooltip',\n p: {\n html: true\n }\n }, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }]);\n } else {\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'style'\n }, {\n role: 'tooltip',\n p: {\n html: true\n }\n }]);\n }\n if (data.Series1.length) {\n var formatDate = '';\n i = 0;\n for (i = 0; i < data.Series1.length; i++) {\n var temperature = '0';\n if (weatherData[i]) {\n temperature = graphFilter.intervalFrequency == 'billingCycleEnergyUse' ? parseInt(weatherData[i].AverageTemprature) : parseInt(weatherData[i].MeanTemp);\n // var yearSelected = moment(weatherData[i].WeatherDate).format(\"YYYY\")\n }\n if (graphFilter.intervalFrequency === 'quarterHourlyEnergyUse' || graphFilter.intervalFrequency === 'hourlyEnergyUse' || graphFilter.intervalFrequency == 'halfHourlyEnergyUse' || graphFilter.intervalFrequency === 'averageEnergyByDayOfWeek' || data.TickSeries[i] === '-') {\n formatDate = graphFilter.intervalFrequency === 'hourlyEnergyUse' ? new Date(\"\".concat(moment(graphFilter.startDate).format('MM/DD/YYYY'), \" \").concat([data.TickSeries[i].slice(0, 2), ':00', data.TickSeries[i].slice(2)].join(''))) : new Date(\"\".concat(moment(graphFilter.startDate).format('MM/DD/YYYY'), \" \").concat(data.TickSeries[i]));\n } else if (graphFilter.intervalFrequency == 'billingCycleEnergyUse') {\n if (data.TickSeries[i] == '') {\n var a = data.TickSeries[i - 1].split('/');\n a.splice(1, 0, '01');\n formatDate = new Date(moment(a.join('/')).add(1, 'months'));\n } else {\n formatDate = data.TickSeries[i];\n }\n var startEndDate = graphFilter.invoiceListArray.filter(function (e) {\n if (moment(formatDate).format('MMMM YYYY') == moment(e.BillDate).format('MMMM YYYY')) return e;\n });\n var billedDays = {\n billStartDate: startEndDate.length > 0 ? startEndDate[0].BillingStartDate : new Date(),\n billEndDate: startEndDate.length > 0 ? startEndDate[0].BillingEndDate : new Date()\n };\n } else {\n var tempDate = new Date(data.TickSeries[i]);\n // var yearSelected = moment(weatherData[i].WeatherDate).format(\"YYYY\")\n var yearSelected = graphFilter.endDate.getFullYear();\n if (data.TickSeries[i] == '') {\n var testDate = new Date(new Date(data.TickSeries[i - 1]).setDate(new Date(data.TickSeries[i - 1]).getDate() + 1));\n }\n formatDate = data.TickSeries[i] == '' ? new Date(moment(\"\".concat(testDate.getMonth() + 1, \"/\").concat(testDate.getDate(), \"/\").concat(yearSelected), 'MM/DD/YYYY')) : data.TickSeries[i];\n }\n var dataSeriesOne = graphFilter.intervalFrequency == 'billingCycleEnergyUse' ? parseInt(data.Series1[i]) : parseFloat(data.Series1[i]);\n var dataSeriesThree = graphFilter.intervalFrequency == 'billingCycleEnergyUse' ? parseInt(data.Series3[i]) : parseFloat(data.Series3[i]);\n var tickDate = graphFilter.periodType === 'Year' && graphFilter.compareToPreviousYear ? moment(formatDate).format('MMM') : graphFilter.periodType === 'Year' && !graphFilter.compareToPreviousYear ? moment(formatDate).format(\"MMM [\\n] 'YY\") : graphFilter.periodType === 'billingCycle' || graphFilter.periodType === 'Week' ? moment(formatDate).format('MMM [\\n]DD') : graphFilter.intervalFrequency == 'hourlyEnergyUse' ? moment(formatDate).format('h [\\n]A') : formatDate;\n var intervalData = {};\n if (graphFilter.netMeter) {\n intervalData = [tickDate, createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(temperature), parseFloat(dataSeriesThree), null, graphFilter.intervalFrequency, null, null), dataSeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar), 0.00, dataSeriesThree, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.netMeter) // consumed, cost, null - some data was not available.\n ];\n } else {\n intervalData = [tickDate, dataSeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar),\n // consumed, cost, null - some data/dollar value was not available yet.\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(temperature), null, graphFilter.unitOfMeasure, graphFilter.periodType, billedDays, graphFilter.endDate)];\n }\n out.push(intervalData);\n }\n }\n return out;\n }\n function createTooltip(date, net, consumed, generated, meterType, periodType, billedDates, endDate) {\n var dateSelected = '';\n if (periodType == 'Year') {\n var billEndDate = new Date(moment(billedDates.billEndDate).utc());\n var billStartDate = new Date(moment(billedDates.billStartDate).utc());\n var _dateSelected = \"\".concat(moment(billedDates.billStartDate).format('MMM'), \". \").concat(english_ordinal_suffix(billStartDate), \" - \").concat(moment(billedDates.billEndDate).format('MMM'), \". \").concat(english_ordinal_suffix(billEndDate), \" \").concat(moment(billedDates.billEndDate).utc().format('YYYY'));\n var tooltip = meterType == 'Dollar' ? \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected, \"
Avg Temperature: \".concat(consumed, \"\\xB0
Cost: $\".concat(net, \"
' : meterType == 'kWh' ? \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected, \"
Avg Temperature: \".concat(consumed, \"\\xB0
kWh: \".concat(net, \"
' : \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected, \"
Avg Temperature: \".concat(consumed, \"\\xB0
CCF: \".concat(net, \"
';\n } else if (periodType == 'billingCycle' || periodType == 'Week') {\n var _dateSelected2 = \"\".concat(moment(date).format('MMMM'), \" \").concat(english_ordinal_suffix(date), \", \").concat(moment(date).format('YYYY'));\n var tooltip = meterType == 'kWh' ? \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected2, \"
Avg Temperature: \".concat(consumed, \"\\xB0
kWh:\".concat(net, \"
' : \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected2, \"
Avg Temperature: \".concat(consumed, \"\\xB0
CCF:\".concat(net, \"
';\n } else if (meterType == 'kWh' && periodType == 'Day') {\n var _dateSelected3 = endDate.toLocaleString('en-US', {\n weekday: 'long'\n });\n var showDate = moment(date).format('h:mm A');\n var tooltip = \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected3, \"
\".concat(showDate, \"
kWh:\".concat(net, \"
';\n }\n if (periodType == 'billingCycleEnergyUse') {\n var _dateSelected4 = moment(date).format('MMMM YYYY');\n var tooltip = \"\".concat('' + '\") + '' + \"\") + '' + \"\") + '' + \"\") + '
').concat(_dateSelected4, \"
Avg Temperature: \".concat(consumed, \"\\xB0
Consumed: \".concat(net, \" kWh
Generated: \".concat(generated, \" kWh
';\n }\n return tooltip;\n }\n function english_ordinal_suffix(dt) {\n // var formattedDate = moment(dt).format(\"MMMM\")+ \" \" +(dt.getDate()+(dt.getDate() % 10 == 1 && dt.getDate() != 11 ? 'st' : (dt.getDate() % 10 == 2 && dt.getDate() != 12 ? 'nd' : (dt.getDate() % 10 == 3 && dt.getDate() != 13 ? 'rd' : 'th')))) + \" \" +dt.getFullYear();\n var formattedDate = dt.getDate() + (dt.getDate() % 10 == 1 && dt.getDate() != 11 ? 'st' : dt.getDate() % 10 == 2 && dt.getDate() != 12 ? 'nd' : dt.getDate() % 10 == 3 && dt.getDate() != 13 ? 'rd' : 'th');\n return formattedDate;\n }\n function transformCompareEnergyUsage(data1, data2, graphFilter, colors) {\n var out = [];\n if (graphFilter.netMeter) {\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }]);\n } else {\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }]);\n }\n if (data1.length) {\n i = 0;\n for (i = 0; i < data1.length; i++) {\n var formatDate = '';\n if (data1[i].ticks == '') {\n var a = data1[i - 1].ticks.split('/');\n a.splice(1, 0, '01');\n formatDate = new Date(moment(a.join('/')).add(1, 'months'));\n } else {\n formatDate = data1[i].ticks;\n }\n var data1SeriesOne = parseFloat(data1[i].Series1);\n var data2SeriesOne = parseFloat(data1[i].yoySeries1);\n var tickDate = moment(formatDate).format('MMM');\n var intervalData = {};\n if (graphFilter.netMeter) {\n var data2SeriesThree = parseFloat(data1[i].yoySeries3);\n var data1SeriesThree = parseFloat(data1[i].Series3);\n intervalData = [tickDate, data1SeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar), 0.00, data1SeriesThree, \"fill-color: \".concat(colors.netMeter), 0.00, data2SeriesOne, \"stroke-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar, \"; stroke-width: 2; fill-color: #ffffff\"), 0.00, data2SeriesThree, \"stroke-color: \".concat(colors.netMeter, \"; stroke-width: 2; fill-color: #ffffff\")];\n } else {\n intervalData = [tickDate, data1SeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar), 0.00, data2SeriesOne, \"stroke-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar, \"; stroke-width: 2; fill-color: #ffffff\")];\n }\n out.push(intervalData);\n }\n }\n return out;\n }\n function transformInvoiceGraph(data, weatherData, graphFilter, invoiceListArray, colors) {\n var out = [];\n if (graphFilter.netMeter) {\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'annotation'\n }, {\n role: 'style'\n }, graphFilter.unitOfMeasure, {\n role: 'style'\n }, {\n role: 'tooltip',\n p: {\n html: true\n }\n }]);\n } else {\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'style'\n }, {\n role: 'tooltip',\n p: {\n html: true\n }\n }]);\n }\n if (data.length) {\n data.forEach(function (o, i) {\n var temperature = '0';\n var tempWeatherData = weatherData.filter(function (e) {\n if (moment(e.EndDate).format('MMMM YYYY') == moment(o.BillDate).format('MMMM YYYY')) return e;\n });\n if (tempWeatherData[0]) {\n temperature = parseInt(tempWeatherData[0].AverageTemprature);\n }\n var billedDays = {\n billStartDate: o.BillingStartDate,\n billEndDate: o.BillingEndDate\n };\n var formatDate = new Date(moment(o.BillDate).format('MM/DD/YYYY'));\n var dataSeriesOne = graphFilter.unitOfMeasure != 'Dollar' ? parseFloat(o.Usage) : parseFloat(o.Bill_Amt);\n var intervalData = {};\n if (graphFilter.netMeter) {\n intervalData = [formatDate, dataSeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar), \"stroke-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar, \"; stroke-width: 2; fill-color: #ffffff\"),\n // we need dollar value here.\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(0.00), null)];\n } else {\n intervalData = [moment(formatDate).format(\"MMM [\\n] 'YY\"), dataSeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar),\n // we need dollar value here.\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseInt(temperature), null, graphFilter.unitOfMeasure, graphFilter.periodType, billedDays)];\n }\n out.push(intervalData);\n });\n }\n return out;\n }\n function transformCompareInvoiceGraph(data1, data2, graphFilter, colors) {\n var out = [];\n out.push([graphFilter.periodType, graphFilter.unitOfMeasure, {\n role: 'style'\n }, graphFilter.unitOfMeasure, graphFilter.unitOfMeasure, {\n role: 'style'\n }]);\n if (data2.length) {\n i = 0;\n for (i = 0; i < data2.length; i++) {\n var formatDate = new Date(moment(data2[i].BillDate).format('MM/DD/YYYY'));\n var data1SeriesOne = graphFilter.unitOfMeasure != 'Dollar' ? parseFloat(data2[i].Usage) ? parseFloat(data2[i].Usage) : 0.00 : parseFloat(data2[i].Bill_Amt);\n var data2SeriesOne = graphFilter.unitOfMeasure != 'Dollar' ? data2[i].compareUsage == undefined ? 0.00 : parseFloat(data2[i].compareUsage) : data2[i].compareCost == undefined ? 0.00 : parseFloat(data2[i].compareCost);\n var intervalData = {};\n intervalData = [moment(formatDate).format('MMM'), data1SeriesOne, \"fill-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar), 0.00, data2SeriesOne, \"stroke-color: \".concat(graphFilter.serviceType === 'Gas' ? colors.gasBar : colors.electricBar, \"; stroke-width: 2; fill-color: #ffffff\")];\n out.push(intervalData);\n }\n }\n return out;\n }\n return {\n transformEnergyUsage: transformEnergyUsage,\n transformCompareEnergyUsage: transformCompareEnergyUsage,\n transformInvoiceList: transformInvoiceList,\n transformInvoiceDetails: transformInvoiceDetails,\n transformInvoiceGraph: transformInvoiceGraph,\n transformCompareInvoiceGraph: transformCompareInvoiceGraph,\n transformUsageList: transformUsageList\n };\n});\napp.controller('InstallmentPlansScreen', InstallmentPlansScreen);\nInstallmentPlansScreen.$inject = ['$scope', '$state', 'assetService', 'cookieService', 'sessionStorageService'];\nfunction InstallmentPlansScreen($scope, $state, assetService, cookieService, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Function Declarations-----------------------*/\n vm.init = init;\n\n /* --------------Gloabl Vars-----------------------*/\n function load() {\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_PLANS);\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n var isValidation = cookieService.getCookie('payment-assistance-validation');\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = \"\".concat(window.location.protocol, \"/\").concat(window.location.hostname, \"/my-account/payment-assistance-programs/\");\n }\n }\n}\napp.controller('InstallmentPlans', InstallmentPlans);\nInstallmentPlans.$inject = ['assetService', '$state', '$scope', '$rootScope', 'sessionStorageService', 'assetService', 'broadcastService'];\nfunction InstallmentPlans(assetService, $state, $scope, $rootScope, sessionStorageService, assetService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Function Declarations-----------------------*/\n vm.init = init;\n vm.onCancel = onCancel;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.steps = [assetService.installmentPlansStepsName.INSTALLMENT_TYPE, assetService.installmentPlansStepsName.REVIEW_AND_SUBMIT];\n vm.actualStep = 0;\n vm.cyclePath = [{\n path: assetService.installmentPlansRouteState.INSTALLMENT_TYPE,\n change: true,\n pathAlt: ''\n }, {\n path: assetService.installmentPlansRouteState.REVIEW_AND_SUBMIT,\n change: true,\n pathAlt: '',\n mainBtn: 'ENROLL'\n }];\n vm.actualPath = 0;\n vm.mainBtnActivate = true;\n vm.buttonLoad = true;\n vm.IPFailure = false;\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n var securityDepositflag = sessionStorageService.get(assetService.storageKeys.paymentAssistance.securityDepositflag);\n if (securityDepositflag === 'X') {\n broadcastService.failedStateNotificationTriggered(true);\n } else {\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_TYPE);\n }\n }\n function onCancel(path) {\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n }\n $scope.$on(assetService.events.ipenrollmentfailed, function () {\n vm.IPFailure = $rootScope.IPEnrollmentFailed;\n });\n $scope.$on(assetService.events.trackNextComponent, function () {\n return $rootScope.$broadcast(assetService.events.manualNextComponent);\n });\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\napp.controller('CCAutoPayAddAccountController', CCAutoPayAddAccountController);\nCCAutoPayAddAccountController.$inject = ['$log', '$rootScope', '$scope', 'assetService', 'sessionStorageService', 'ccAutoPayAssetService', 'enrollInBillingAndPaymentProgramsService', '$stateParams', 'broadcastService', 'genericHelperService', '$window', 'manageBankAccountsForPrepaidService', '$state', 'getLoggedInUserDetailsService', 'getProductRecommendationsCAREService', 'careFeedbackService', 'modalService', '$timeout'];\nfunction CCAutoPayAddAccountController($log, $rootScope, $scope, assetService, sessionStorageService, ccAutoPayAssetService, enrollInBillingAndPaymentProgramsService, $stateParams, broadcastService, genericHelperService, $window, manageBankAccountsForPrepaidService, $state, getLoggedInUserDetailsService, getProductRecommendationsCAREService, careFeedbackService, modalService, $timeout) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _accountIdGenerated = null;\n var _bankAccountsOriginal = null;\n var _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\n var _bankDescription = ccAutoPayAssetService.strings.bankDescription;\n var _businessPartnerId = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _selectedAddressData = null;\n var _enrollmentFailed = false;\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n vm.statusIsProcessing = false;\n vm.serviceErrorCode = '';\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n vm.showCPIMessage = false;\n vm.CPIMessage = '';\n /**\r\n * Gloabl Vars\r\n */\n vm.accountSelected = null;\n vm.bankAccount = null;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n vm.dropdowns = {\n bankAccounts: null\n };\n vm.form = {\n addBankAccountForm: {\n formInstance: null,\n nickname: null,\n rountingNumber: null,\n accountNumber: null,\n accNumberConfirm: null,\n isProcessing: false\n }\n };\n vm.currentUser = {};\n vm.orgBP = '';\n vm.bankAccountPresent = false;\n vm.buttonDisable = true;\n vm.guid = '';\n var SAPdueBalance;\n var SAPdueDate;\n $rootScope.validate = false;\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n vm.cancelBtn = cancelBtn;\n vm.enroll = enroll;\n vm.toggleAutoPayAgreement = toggleAutoPayAgreement;\n vm.nicknameCheck = nicknameCheck;\n vm.nameError = nameError;\n vm.accountCheck = accountCheck;\n vm.accountError = accountError;\n vm.confirmAccCheck = confirmAccCheck;\n vm.confirmAccError = confirmAccError;\n vm.accMaxLimit = undefined;\n vm.nicknameLimit = undefined;\n /**\r\n * Event listeners\r\n */\n\n /**\r\n * Function Definitions\r\n */\n $scope.getLimits = function (accMaxLimit, nicknameLimit) {\n vm.accMaxLimit = accMaxLimit;\n vm.nicknameLimit = nicknameLimit;\n };\n function nicknameCheck() {\n var nameLength = vm.form.addBankAccountForm.nickname ? vm.form.addBankAccountForm.nickname.length : 0;\n if (nameLength >= vm.nicknameLimit) {\n console.log(vm.nicknameLimit);\n vm.showNameError = true;\n }\n }\n function nameError() {\n var nameLength = vm.form.addBankAccountForm.nickname ? vm.form.addBankAccountForm.nickname.length : 0;\n if (nameLength > vm.nicknameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function accountCheck() {\n console.log(vm.accountNumber);\n var accLength = vm.form.addBankAccountForm.accountNumber ? vm.form.addBankAccountForm.accountNumber.length : 0;\n if (accLength >= vm.accMaxLimit) {\n console.log(vm.accMaxLimit);\n vm.showAccError = true;\n }\n }\n function accountError() {\n var accLength = vm.form.addBankAccountForm.accountNumber ? vm.form.addBankAccountForm.accountNumber.length : 0;\n if (accLength > vm.accMaxLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function confirmAccCheck() {\n var accCLength = vm.form.addBankAccountForm.accNumberConfirm ? vm.form.addBankAccountForm.accNumberConfirm.length : 0;\n if (accCLength >= vm.accMaxLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function confirmAccError() {\n var accCLength = vm.form.addBankAccountForm.accNumberConfirm ? vm.form.addBankAccountForm.accNumberConfirm.length : 0;\n if (accCLength > vm.accMaxLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function addNewBankAccount(data) {\n $window.scrollTo(0, 0);\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data).then(function (result) {\n var manageBankAcc_NAV = result.d.ManageBankAcc_NAV;\n if (manageBankAcc_NAV.Type === 'S') {\n _accountIdGenerated = manageBankAcc_NAV.BankId;\n broadcastService.loadingSpinner(true);\n } else if (manageBankAcc_NAV.MessageNum === '732' || manageBankAcc_NAV.MessageNum === '739' || manageBankAcc_NAV.MessageNum === '734' || manageBankAcc_NAV.MessageNum === '278' || manageBankAcc_NAV.MessageNum === '429' || manageBankAcc_NAV.MessageNum === '270') {\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\n vm.ACIValidationFailed = true;\n broadcastService.loadingSpinner(false);\n if (vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('MessageText')[0].innerHTML;\n pushDL('auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'auto-pay-|-add-bank-account');\n }, 2000);\n }\n }\n }, function (error) {\n console.log(error);\n });\n }\n function toggleAutoPayAgreement() {\n $rootScope.validate = true;\n if (vm.autoPayAgreement) {\n vm.buttonDisable = false;\n } else {\n vm.buttonDisable = true;\n }\n }\n function cancelBtn() {\n if (vm.form.addBankAccountForm.formInstance.$dirty || vm.autoPayAgreement) {\n modalService.cancelModal();\n } else {\n broadcastService.cancelAutoPay();\n }\n }\n function enroll() {\n $rootScope.validate = true;\n if (!vm.form.addBankAccountForm.formInstance.$invalid) {\n broadcastService.loadingSpinner(true);\n // vm.serviceErrorCode = serviceErrorCode;\n addNewBankAccount({\n businessPartnerId: vm.orgBP ? vm.orgBP : _businessPartnerId,\n bankDescription: vm.form.addBankAccountForm.nickname,\n accountNumber: vm.form.addBankAccountForm.accountNumber,\n routingNumber: vm.form.addBankAccountForm.rountingNumber,\n accountType: vm.selectAccountType,\n action: ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid.ADD,\n requestedBy: vm.currentUser.emailId\n }).then(function () {\n if (_accountIdGenerated) {\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n requestedBy: vm.currentUser.emailId,\n extensionSet: [{\n RefObject: _DIRDEB,\n RefFieldName: 'CPI_MESSAGE',\n RefFieldValue: \"Amount \".concat(SAPdueBalance, \" Date \").concat(SAPdueDate)\n }, {\n RefObject: _DIRDEB,\n RefFieldName: 'TERMS',\n RefFieldValue: vm.autoPayAgreement ? 'X' : ''\n }],\n bankId: _accountIdGenerated\n }).then(function (result) {\n $window.scrollTo(0, 0);\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === ccAutoPayAssetService.strings.S) {\n // State success\n sessionStorageService.set(assetService.storageKeys.enrollmentFailed, {\n enrollmentFailed: _enrollmentFailed\n });\n if (_enrollmentFailed !== true) {\n var requestCare = {\n accountNumber: _selectedAddressData.accountSelected.accountNum,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: assetService.billingAndPaymentProgramsCodes.AUTPAY\n };\n productRecommendationsCARE(requestCare);\n }\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\n vm.form.addBankAccountForm.isProcessing = false;\n } else {\n _enrollmentFailed = true;\n sessionStorageService.set(assetService.storageKeys.enrollmentFailed, {\n enrollmentFailed: _enrollmentFailed,\n errorcode: result.d.ReqToResNav.results[0].ProgramToMessage.results[0].MessageNum\n });\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\n vm.form.addBankAccountForm.isProcessing = false;\n }\n }, function (error) {\n vm.form.addBankAccountForm.isProcessing = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n // Search the progName in the getProductsRecomendations response\n // if it is found, call to DELETE_PROGRAM from sitecore\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n vm.guid = angular.element('#guid').val();\n broadcastService.loadingSpinner(true);\n var autoPayDetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\n SAPdueBalance = autoPayDetails.BalanceDue;\n SAPdueDate = autoPayDetails.DueDateStr;\n vm.statusIsProcessing = false;\n _selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var isPrepaid = sessionStorageService.get(assetService.storageKeys.isPrepaid);\n if (autoPayDetails.StatusCode === '02' || autoPayDetails.StatusCode === '03') {\n vm.showCPIMessage = true;\n vm.CPIMessage = autoPayDetails.CpiMessage;\n }\n if (isPrepaid) {\n if (window.location.pathname === '/my-account/billing-and-payment-programs/auto-pay') {\n window.location.href = 'my-account/Dashboard';\n }\n }\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.organizationBP);\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n _businessPartnerId = relatedBP || _selectedAddressData.accountSelected.primaryBp;\n $window.scrollTo(0, 0);\n broadcastService.loadingSpinner(false);\n setTimeout(function () {\n vm.form.addBankAccountForm.formInstance.$setPristine();\n }, 1000);\n pushVPV('/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/new-enrollment/screen');\n pushDL('auto_pay', 'intent', 'kpi');\n }\n\n /**\r\n * Initialization\r\n */\n\n function init(accountTypeArray) {\n $rootScope.validate = false;\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n load();\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCCancelModalController', CCCancelModalController);\n\n// eslint-disable-next-line no-use-before-define\nCCCancelModalController.$inject = ['$scope', '$rootScope', '$state', 'assetService', 'ccAutoPayAssetService', 'sessionStorageService', 'broadcastService', '$modalInstance'];\nfunction CCCancelModalController($scope, $rootScope, $state, assetService, ccAutoPayAssetService, sessionStorageService, broadcastService, $modalInstance) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n vm.guid = '';\n vm.dppPlan = '';\n vm.planDesc = '';\n\n /**\r\n * Function Definitions\r\n */\n vm.redirect = redirect;\n vm.closeModal = closeModal;\n function redirect(path) {\n vm.guid = angular.element('#guid').val();\n if (path === '/my-account/payment-assistance-programs') {\n vm.dppPlan = $rootScope.SelectedPlanDP;\n vm.planDesc = $rootScope.SelectedPlanDesc;\n if (Number(vm.dppPlan) === 0) {\n pushDL('payment-assistance-options', 'cancel-|-arrears', 'are-you-sure-you-want-to-cancel');\n } else {\n pushDL('payment-assistance-options', \"cancel-|-down-payment-\".concat(vm.planDesc.replace('%', '')), 'are-you-sure-you-want-to-cancel');\n }\n } else if (path === '/my-account/billing-and-payment-programs') {\n if ($rootScope.dirdebenrolled) {\n pushDL('cancel-workflow', 'yes-cancel' + '-|-' + '/manage-auto-pay', 'are-you-sure-you-want-to-cancel');\n } else {\n pushDL('cancel-workflow', 'yes-cancel' + '-|-' + '/auto-pay', 'are-you-sure-you-want-to-cancel');\n }\n }\n window.location.href = path;\n }\n function closeModal() {\n vm.guid = angular.element('#guid').val();\n if ($rootScope.dirdebenrolled) {\n pushDL('cancel-workflow', 'never-mind' + '-|-' + '/manage-auto-pay', 'are-you-sure-you-want-to-cancel');\n } else {\n pushDL('cancel-workflow', 'never-mind' + '-|-' + '/auto-pay', 'are-you-sure-you-want-to-cancel');\n }\n $modalInstance.close();\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n pushVPV('/vpv/de/modal/cancel-workflow/load/are-you-sure-you-want-to-cancel');\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCAutoPayLanding', CCAutoPayLanding);\n\n// eslint-disable-next-line no-use-before-define\nCCAutoPayLanding.$inject = ['$scope', '$state', 'assetService', 'ccAutoPayAssetService', 'sessionStorageService', 'broadcastService', '$rootScope', '$window'];\nfunction CCAutoPayLanding($scope, $state, assetService, ccAutoPayAssetService, sessionStorageService, broadcastService, $rootScope, $window) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n vm.cpiMessage = '';\n vm.dueDate = null;\n vm.BalanceDue = null;\n vm.guid = '';\n\n /**\r\n * Broadcast Watchers\r\n */\n\n /**\r\n * Function Definitions\r\n */\n vm.nextPage = nextPage;\n vm.cancelBtn = cancelBtn;\n vm.init = init;\n function nextPage() {\n if (vm.bankAccountsOriginal.length > 0) {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayPaymentMethodController);\n } else {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayAddAccountController);\n }\n }\n function cancelBtn() {\n broadcastService.cancelAutoPay();\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n broadcastService.loadingSpinner(true);\n $window.scrollTo(0, 0);\n vm.guid = angular.element('#guid').val();\n pushVPV('/vpv/de/page/autopay/load/auto-pay/auto-pay-will-not-draft-before-current-balance-due/na/new-enrollment');\n pushDL('auto_pay_error', 'not-set' + '-|-' + $rootScope.dataLayerFormat('auto pay will not draft before current balance is due') + '-|-' + \"\".concat(assetService.sitecoreEndpoints.AutoPayEnrollmentEligibilityCheck), 'auto-pay-|-auto-pay');\n vm.bankAccountsOriginal = $rootScope.autoPaySAPData;\n var cpidetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\n vm.cpiMessage = cpidetails.CpiMessage;\n broadcastService.loadingSpinner(false);\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n load();\n }\n}\napp.controller('CCAutoPayPaymentMethodController', CCAutoPayPaymentMethodController);\nCCAutoPayPaymentMethodController.$inject = ['$log', '$rootScope', '$scope', 'assetService', 'getPrepaidDetailsService', 'sessionStorageService', 'genericHelperService', 'ccAutoPayAssetService', 'CareDeleteProductService', 'broadcastService', '$state', '$window', '$stateParams', 'enrollInBillingAndPaymentProgramsService', 'getProductRecommendationsCAREService', 'commongaTaggingService', 'careFeedbackService', 'modalService'];\nfunction CCAutoPayPaymentMethodController($log, $rootScope, $scope, assetService, getPrepaidDetailsService, sessionStorageService, genericHelperService, ccAutoPayAssetService, CareDeleteProductService, broadcastService, $state, $window, $stateParams, enrollInBillingAndPaymentProgramsService, getProductRecommendationsCAREService, commongaTaggingService, careFeedbackService, modalService) {\n /**\r\n * Scope Vars\r\n */\n\n var vm = this;\n var _bankAccountsOriginal = null;\n var _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\n var _bankDescription = ccAutoPayAssetService.strings.bankDescription;\n var _businessPartnerId = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _kwValue = assetService.strings.VALUE;\n var _selectedAddressData = null;\n var _selectedEmail = null;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var _enrollmentFailed = false;\n var NUM_OF_ASTERISK = 5;\n /**\r\n * Global Vars\r\n */\n vm.accountSelected = null;\n vm.bankAccount = null;\n vm.dropdowns = {\n bankAccounts: null\n };\n vm.primaryButtonEnable = false;\n vm.selectAccountType = null;\n vm.accountType = [];\n $rootScope.isCareComp = false;\n vm.orgBP = '';\n vm.showCPIMessage = false;\n vm.CPIMessage = '';\n vm.autoPayAgreement = false;\n vm.prepaidData = null;\n vm.newBankAdded = false;\n vm.newBankAccountId = null;\n vm.bankChanged = false;\n vm.guid = '';\n vm.previousBank = '';\n var SAPdueBalance;\n var SAPdueDate;\n /**\r\n * Function Definitions\r\n */\n vm.init = init;\n vm.cancelBtn = cancelBtn;\n vm.enroll = enroll;\n vm.selectAccount = selectAccount;\n vm.hideAccount = hideAccount;\n vm.goToAddBankAccount = goToAddBankAccount;\n vm.toggleAutoPayAgreement = toggleAutoPayAgreement;\n vm.reload = reload;\n /**\r\n * Function Declarations\r\n */\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, function () {\n vm.newBankAdded = true;\n getBankAccountsSAP();\n });\n function getBankAccountsSAP() {\n $window.scrollTo(0, 0);\n broadcastService.loadingSpinner(true);\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(vm.prepaidData).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n vm.newBankAccountId = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated);\n reload();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function reload() {\n load();\n }\n function hideAccount(value) {\n var convertedValue = value;\n var stringLength = convertedValue.length;\n var visibleDigits = 4;\n if (stringLength > visibleDigits) {\n convertedValue = convertedValue.slice(-visibleDigits);\n }\n convertedValue = \"*****\".concat(convertedValue);\n return convertedValue;\n }\n function toggleAutoPayAgreement() {\n vm.primaryButtonEnable = vm.autoPayAgreement;\n }\n function cancelBtn() {\n if (vm.bankChanged || vm.newBankAccountId || vm.autoPayAgreement) {\n modalService.cancelModal();\n } else {\n broadcastService.cancelAutoPay();\n }\n }\n function enroll(event) {\n vm.primaryButtonEnable = false;\n broadcastService.loadingSpinner(true);\n $window.scrollTo(0, 0);\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n bankId: vm.bankAccount,\n // routingNo: vm.accountSelected.rountingNumber,\n // bankAccountNo: vm.accountSelected.accountNumber,\n // bankName: vm.accountSelected.nickname,\n requestedBy: _selectedEmail.primaryEmail,\n extensionSet: [{\n \"RefObject\": _DIRDEB,\n \"RefFieldName\": \"CPI_MESSAGE\",\n \"RefFieldValue\": \"Amount \".concat(SAPdueBalance, \" Date \").concat(SAPdueDate)\n }, {\n \"RefObject\": _DIRDEB,\n \"RefFieldName\": \"TERMS\",\n \"RefFieldValue\": vm.autoPayAgreement ? \"X\" : ''\n }]\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === ccAutoPayAssetService.strings.E) {\n _enrollmentFailed = true;\n }\n sessionStorageService.set(assetService.storageKeys.enrollmentFailed, {\n enrollmentFailed: _enrollmentFailed,\n errorcode: result.d.ReqToResNav.results[0].ProgramToMessage.results[0].MessageNum\n });\n if (_enrollmentFailed !== true) {\n var requestCare = {\n accountNumber: _selectedAddressData.accountSelected.accountNum,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: assetService.billingAndPaymentProgramsCodes.AUTPAY\n };\n productRecommendationsCARE(requestCare);\n }\n broadcastService.headerSwitch('Full');\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\n //vm.primaryButtonEnable = true;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function selectAccount(optionSelected) {\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\n goToAddBankAccount();\n findAccountAndSelectIt(vm.previousBank);\n } else {\n vm.bankChanged = true;\n vm.previousBank = optionSelected.value;\n findAccountAndSelectIt(optionSelected.value);\n }\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n // Search the progName in the getProductsRecomendations response\n // if it is found, call to DELETE_PROGRAM from sitecore\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function goToAddBankAccount() {\n modalService.manageAutoPayAddBankAccountModal();\n }\n function findAccountAndSelectIt(bankAccountId) {\n var accountFound = _.find(_bankAccountsOriginal, function (account) {\n return account[_BankAccountId] === bankAccountId;\n });\n if (accountFound) {\n vm.accountSelected = {\n accountId: accountFound.BankAccountId,\n nickname: accountFound.BankDescription,\n rountingNumber: accountFound.BankRoutingNumber,\n accountNumber: accountFound.BankAccountNumber,\n accountType: accountFound.BankAccountType\n };\n vm.accountType.forEach(function (item) {\n if (item.value === accountFound.BankAccountType) {\n vm.accountSelected.accountType = item.text;\n }\n });\n }\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(vm.dropdowns.bankAccounts, ccAutoPayAssetService.strings.value, vm.accountSelected.accountId);\n }\n function setModels() {\n if (!vm.newBankAdded) {\n vm.primaryButtonEnable = false;\n vm.bankAccount = _bankAccountsOriginal[0].BankAccountId;\n vm.previousBank = vm.bankAccount;\n } else {\n _bankAccountsOriginal.forEach(function (element) {\n if (element.BankAccountId === vm.newBankAccountId) {\n vm.bankAccount = element.BankAccountId;\n vm.previousBank = vm.bankAccount;\n }\n });\n }\n setDropdowns();\n findAccountAndSelectIt(vm.bankAccount);\n }\n function addAsterisk(bankAccountNum, numOfAsterisk) {\n // remove all * prefix\n var LAST_DIGITS = 4;\n var result = bankAccountNum.substr(bankAccountNum.length - LAST_DIGITS, LAST_DIGITS);\n return '*'.repeat(numOfAsterisk) + result;\n }\n function setDropdowns() {\n vm.dropdowns.bankAccounts = _bankAccountsOriginal.map(function (bankAccount) {\n return {\n value: bankAccount[_BankAccountId],\n text: bankAccount[_bankDescription] ? \"\".concat(bankAccount[_bankDescription], \" - \").concat(addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)) : \"Account - \".concat(addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK))\n };\n });\n vm.dropdowns.bankAccounts.push({\n text: ccAutoPayAssetService.strings.add_Account,\n value: ccAutoPayAssetService.strings.addAccount\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n broadcastService.loadingSpinner(true);\n $window.scrollTo(0, 0);\n vm.guid = angular.element('#guid').val();\n var autoPayDetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\n _selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n SAPdueBalance = autoPayDetails.BalanceDue;\n SAPdueDate = autoPayDetails.DueDateStr;\n _selectedEmail = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n var isPrepaid = sessionStorageService.get(assetService.storageKeys.isPrepaid);\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.organizationBP);\n if (isPrepaid) {\n if (window.location.pathname === '/my-account/billing-and-payment-programs/auto-pay') {\n window.location.href = 'my-account/Dashboard';\n }\n }\n if (autoPayDetails.StatusCode === '02' || autoPayDetails.StatusCode === '03') {\n vm.showCPIMessage = true;\n vm.CPIMessage = autoPayDetails.CpiMessage;\n }\n var _selectedAddressData2 = _selectedAddressData,\n accountSelected = _selectedAddressData2.accountSelected;\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n _businessPartnerId = relatedBP || accountSelected.primaryBp;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.prepaidData = {\n businessPartnerId: vm.orgBP ? vm.orgBP : _businessPartnerId,\n contractAccountId: accountSelected.accountNum\n };\n if (!vm.newBankAdded) {\n _bankAccountsOriginal = $rootScope.autoPaySAPData;\n }\n setModels();\n broadcastService.loadingSpinner(false);\n if (!vm.newBankAccountId) {\n pushVPV('/vpv/de/page/autopay/load/auto-pay/get-enrolled-in-auto-pay/na/new-enrollment');\n pushDL('auto_pay', 'intent', 'kpi');\n }\n }\n\n /**\r\n * Initialization\r\n */\n function init(accountTypeArray) {\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n }\n load();\n }\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\napp.controller('CCAutoPayShell', CCAutoPayShell);\nCCAutoPayShell.$inject = ['$log', '$scope', '$state', 'assetService', 'ccAutoPayAssetService', 'sessionStorageService', 'autopayenrollmenteligibilitycheckservice', 'getPrepaidDetailsService', '$rootScope', 'getAccountEnrollmentEligibilityStatusService'];\nfunction CCAutoPayShell($log, $scope, $state, assetService, ccAutoPayAssetService, sessionStorageService, autopayenrollmenteligibilitycheckservice, getPrepaidDetailsService, $rootScope, getAccountEnrollmentEligibilityStatusService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n vm.bankAccountsOriginal = null;\n $rootScope.autoPaySAPData = null;\n vm.orgBP = null;\n vm.statusAutopay = '';\n /**\r\n * function Declarations\r\n */\n vm.init = init;\n vm.getPrepaidDetails = getPrepaidDetails;\n vm.eligibilityCheck = eligibilityCheck;\n vm.getAccountEnrollmentEligibilityStatus = getAccountEnrollmentEligibilityStatus;\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.loadingSpinner, function (index, value) {\n vm.loadingSpinner = value;\n });\n $scope.$on(assetService.events.cancelAutoPay, function () {\n window.location.href = vm.urls.billingAndPaymentPrograms;\n });\n function getAccountEnrollmentEligibilityStatus(data) {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(data).then(function (result) {\n vm.statusAutopay = _.filter(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === 'DIRDEB';\n });\n if (vm.statusAutopay[0].EligibilityStatus === ccAutoPayAssetService.strings.Enrolled) {\n window.location.href = '/my-account/billing-and-payment-programs';\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function getPrepaidDetails(businessPartnerId, contractAccountId) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(businessPartnerId, contractAccountId).then(function (result) {\n vm.bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n return vm.bankAccountsOriginal;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function eligibilityCheck(data) {\n return autopayenrollmenteligibilitycheckservice.sitecore.autoPayEnrollmentEligibilityCheck(data).then(function (result) {\n vm.eligibilityDetails = result.d.Accounts.results[0].BalanceInfo;\n vm.cpiMessage = vm.eligibilityDetails.CpiMessage;\n sessionStorageService.set(assetService.storageKeys.accountAutoPayDetails, vm.eligibilityDetails);\n }, function (error) {\n vm.loadingSpinner = false;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n\n /**\r\n * Function Definitions\r\n */\n function load() {\n delete $rootScope.autopayBankData;\n $rootScope.dirdebenrolled = false;\n vm.loadingSpinner = true;\n var _selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.organizationBP);\n var accountSelected = _selectedAddressData.accountSelected;\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n vm.businessPartnerId = relatedBP || accountSelected.primaryBp;\n var data = accountSelected.accountNum;\n var prepaidData = {\n businessPartnerId: vm.orgBP ? vm.orgBP : vm.businessPartnerId,\n contractAccountId: accountSelected.accountNum\n };\n var paramData = {\n contractAccountId: accountSelected.accountNum\n };\n getAccountEnrollmentEligibilityStatus(paramData);\n eligibilityCheck(data).then(function () {\n if (vm.eligibilityDetails.StatusCode === '01') {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\n } else if (vm.eligibilityDetails.StatusCode === '03' || vm.eligibilityDetails.StatusCode === '05' || vm.eligibilityDetails.StatusCode === '04' || vm.eligibilityDetails.StatusCode === '02') {\n getPrepaidDetails(prepaidData).then(function () {\n $rootScope.autoPaySAPData = vm.bankAccountsOriginal;\n if (vm.eligibilityDetails.StatusCode === '02') {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayLanding);\n } else if (vm.bankAccountsOriginal.length > 0) {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayPaymentMethodController);\n } else {\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayAddAccountController);\n }\n });\n }\n vm.loadingSpinner = false;\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n var selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n if (selectedAddressData) {\n load();\n }\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCAutoPaySuccessController', CCAutoPaySuccessController);\nCCAutoPaySuccessController.$inject = ['broadcastService', 'getDirectDebitDetailsService', 'sessionStorageService', 'assetService', 'commongaTaggingService', '$scope', '$timeout', '$rootScope', '$window'];\nfunction CCAutoPaySuccessController(broadcastService, getDirectDebitDetailsService, sessionStorageService, assetService, commongaTaggingService, $scope, $timeout, $rootScope, $window) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _selectedAddressData = null;\n\n /**\r\n * Global Vars\r\n */\n vm.nextBillingMonth = null;\n vm.failure = false;\n vm.highCPI = false;\n vm.highCPIMessage = false;\n vm.acctNickName = '';\n vm.acctNo = '';\n vm.acctAddress = '';\n vm.guid = '';\n vm.showCPIMessage = false;\n vm.successMessage = false;\n\n /**\r\n * Function Definitions\r\n */\n vm.onManage = onManage;\n vm.onDashboard = onDashboard;\n vm.payNow = payNow;\n vm.cancelBtn = cancelBtn;\n\n /**\r\n * Function Declarations\r\n */\n\n function onManage() {\n redirect(vm.urls.manageAutoPay);\n }\n function onDashboard() {\n redirect(vm.urls.dashboard);\n }\n function payNow() {\n pushVPV('/vpv/de/page/auto-pay/load/auto-pay/account-past-due/na/new-enrollment/pay-now');\n pushDL('auto_pay', 'pay-now-|-/autopay/pay-now', 'past-due-balance-must-be-paid-in-full');\n redirect(vm.urls.payNow);\n }\n function cancelBtn() {\n broadcastService.cancelAutoPay();\n }\n function redirect(url) {\n window.location.href = url;\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n $window.scrollTo(0, 0);\n vm.guid = angular.element('#guid').val();\n broadcastService.loadingSpinner(true);\n var _sessionStorageServic = sessionStorageService.get(assetService.storageKeys.selectedAddressData),\n accountSelected = _sessionStorageServic.accountSelected;\n var autoPayDetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\n vm.cpiMessage = autoPayDetails.CpiMessage;\n vm.acctNickName = accountSelected.nickname;\n vm.acctAddress = accountSelected.address;\n vm.acctNo = accountSelected.accountNum;\n if (autoPayDetails.StatusCode === '01') {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/account-past-due/na/new-enrollment');\n pushDL('auto_pay_error', 'not-set' + '-|-' + $rootScope.dataLayerFormat('past due balance must be paid before enrolling in auto pay') + '-|-' + \"\".concat(assetService.sitecoreEndpoints.AutoPayEnrollmentEligibilityCheck), 'auto-pay-|-auto-pay');\n vm.highCPI = true;\n broadcastService.headerSwitch('Full');\n if (autoPayDetails.CpiMessagepriority === '1000') {\n vm.highCPIMessage = true;\n } else {\n vm.highCPIMessage = false;\n }\n } else {\n if (autoPayDetails.StatusCode === '02' || autoPayDetails.StatusCode === '03') {\n vm.dueDate = moment(autoPayDetails.DueDateStr).format('MM/DD/YYYY');\n vm.dueBalance = autoPayDetails.BalanceDue;\n vm.successMessage = true;\n if (autoPayDetails.StatusCode === '02') {\n vm.showCPIMessage = true;\n }\n }\n vm.highCPI = false;\n }\n if (autoPayDetails.StatusCode !== '01') {\n pushVPV('/vpv/de/page/auto-pay/success/auto-pay/you-are-enrolled-in-auto-pay/na/new-enrollment');\n pushDL('auto-pay', 'success', 'kpi');\n var errorObject = sessionStorageService.get(assetService.storageKeys.enrollmentFailed);\n if (errorObject) {\n vm.failure = errorObject.enrollmentFailed;\n }\n }\n broadcastService.headerSwitch('Full');\n broadcastService.loadingSpinner(false);\n }\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('InviteUserController', InviteUserController);\nInviteUserController.$inject = ['$scope', '$sce', 'currentManagerFactory', 'commonService', 'apiConfigService', 'genericHelperService', 'TableHelperService', 'FPInviteUserFactory', 'assetService', 'sessionStorageService'];\nfunction InviteUserController($scope, $sce, currentManagerFactory, commonService, apiConfigService, genericHelperService, tableHelperService, FPInviteUserFactory, assetService, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var _url = null;\n var _urlUser = null;\n var globalSelectedAccount = {};\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.title = 'Invite User';\n vm.tableData = [];\n vm.userTableData = [];\n vm.userTableRoles = ['Manager', 'Viewer', 'Admin'];\n vm.allSelected = {\n id: -1,\n status: null\n };\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n /*\r\n * Function Declarations\r\n */\n /* --------------Function Declarations-----------------------*/\n var init = init;\n var setModels = setModels;\n vm.showHide = showHide;\n vm.sortArrow = '';\n\n /* --------------$on functions-----------------------*/\n $scope.$on('CheckBox-Selected', function (event, index) {\n tableHelperService.checkBoxSelected(vm.userTableData, vm.allSelected, index);\n });\n $scope.$on('setDateValue', function (event, data) {\n vm.userTableData.forEach(function (element) {\n element.endDate = element.endDateModel ? element.endDateModel : element.endDate;\n });\n });\n\n /* --------------Function Definitions-----------------------*/\n var setTableFormat = function setTableFormat() {\n vm.tableData = genericHelperService.notReferencesArrayObjects(vm.Roles.roles);\n };\n var userSetTableFormat = function userSetTableFormat() {\n vm.userTableData = genericHelperService.notReferencesArrayObjects(vm.NewUser.roles);\n vm.userTableRoles = genericHelperService.arrayToDrop(vm.userTableRoles, null, null);\n };\n vm.sortTable = function () {\n vm.sortArrow = tableHelperService.sortingTableData(vm.userTableData, 'account', vm.sortArrow);\n };\n vm.dropChannel = function () {\n vm.userTableData.forEach(function (element) {\n element.role = element.roleModel ? element.roleModel : element.role;\n });\n };\n function load() {\n _url = apiConfigService.developUrls.getDefaultRolesUrl('');\n _urlUser = apiConfigService.developUrls.getDefaultNewUserUrl('');\n var promises = [getRoles(), getNewUser(), getRole()];\n commonService.executePromises(promises).then(function () {\n setTableFormat();\n userSetTableFormat();\n });\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function getRoles() {\n return FPInviteUserFactory.getServiceUser(_url).then(function (result) {\n vm.Roles = result;\n }, function (error) {\n console.log(error);\n });\n }\n function getNewUser() {\n return FPInviteUserFactory.getServiceNewUser(_urlUser).then(function (result) {\n vm.NewUser = result;\n }, function (error) {\n console.log(error);\n });\n }\n }\n function showHide() {\n vm.show = vm.show ? false : true;\n }\n\n /* ---------------Initialization-------------------*/\n init = function init() {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n };\n init();\n}\napp.controller('AddManageBankAccount', AddManageBankAccount);\nAddManageBankAccount.$inject = ['$rootScope', '$scope', 'assetService', 'genericHelperService', 'sessionStorageService', 'getPrepaidDetailsService', 'manageBankAccountsForPrepaidService', '$modalInstance', 'broadcastService', '$interval', '$timeout', 'getBankIdUsageService', 'componentStateHandler', '$window'];\nfunction AddManageBankAccount($rootScope, $scope, assetService, genericHelperService, sessionStorageService, getPrepaidDetailsService, manageBankAccountsForPrepaidService, $modalInstance, broadcastService, $interval, $timeout, getBankIdUsageService, componentStateHandler, $window) {\n /* --------------Gloabl Vars-----------------------*/\n var vm = this;\n $rootScope.apiValidation = false;\n vm.accountConfirmNumber = '';\n vm.accountNickname = '';\n vm.accountNumber = '';\n vm.accountRouting = '';\n vm.accountType = [];\n vm.loadingSpinner = false;\n vm.showNameError = false;\n vm.selectAccountType = null;\n vm.ACIValidationErr = '';\n var _kwValue = assetService.strings.VALUE;\n vm.accNameEmpty = false;\n vm.accRoutingEmpty = false;\n vm.accNumEmpty = false;\n vm.accConfirmNumEmpty = false;\n vm.accTypeEmpty = false;\n vm.bankAccountAddResponse = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.addBankDetails = addBankDetails;\n vm.checkNickname = checkNickname;\n vm.noNameError = noNameError;\n vm.checkAcctNum = checkAcctNum;\n vm.noAccError = noAccError;\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\n vm.noConfirmAccError = noConfirmAccError;\n vm.loader = false;\n\n /* --------------Function Definitions-----------------------*/\n\n function closeModal() {\n $modalInstance.close();\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n var selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n var orgBPpresent = sessionStorageService.get(assetService.storageKeys.orgBPpresent);\n pushVPV('/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/add-bank-account');\n if (orgBPpresent) {\n vm.businessPartnerId = orgBP;\n } else {\n vm.businessPartnerId = relatedBP;\n }\n vm.userEmailId = selectedAddressData.userEmail;\n vm.contractAccNum = selectedAddressData.accountSelected.accountNum;\n vm.getAccLimit = sessionStorageService.get('AccountNumberLimit');\n vm.getNameLimit = sessionStorageService.get('NicknameLimit');\n }\n function checkNickname() {\n var nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\n if (nameLength >= vm.getNameLimit) {\n vm.showNameError = true;\n }\n }\n function noNameError() {\n var nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\n if (nameLength > vm.getNameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function checkAcctNum() {\n var accLength = vm.accountNumber ? vm.accountNumber.length : 0;\n if (accLength >= vm.getAccLimit) {\n vm.showAccError = true;\n }\n }\n function noAccError() {\n var accLength = vm.accountNumber ? vm.accountNumber.length : 0;\n if (accLength > vm.getAccLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function checkConfirmAcctNum() {\n var accCLength = vm.accountConfirmNumber ? vm.accountConfirmNumber.length : 0;\n if (accCLength >= vm.getAccLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function noConfirmAccError() {\n var accCLength = vm.accountConfirmNumber ? vm.accountConfirmNumber.length : 0;\n if (accCLength > vm.getAccLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function addBankDetails() {\n vm.accNameEmpty = vm.accountNickname ? false : true;\n vm.accRoutingEmpty = vm.accountRouting ? false : true;\n vm.accNumEmpty = vm.accountNumber ? false : true;\n vm.accConfirmNumEmpty = vm.accountConfirmNumber ? false : true;\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\n if (!vm.accNameEmpty && !vm.accRoutingEmpty && !vm.accNumEmpty && !vm.accConfirmNumEmpty && !vm.accTypeEmpty) {\n vm.loader = true;\n var newBankData = {\n businessPartnerId: vm.businessPartnerId,\n accountNumber: vm.accountNumber,\n bankDescription: vm.accountNickname,\n routingNumber: vm.accountRouting,\n accountType: vm.selectAccountType,\n requestedBy: vm.userEmailId,\n action: assetService.serviceActions.manageBankAccountsForPrepaid.ADD\n };\n addNewBankAccount(newBankData).then(function () {\n if (vm.bankAccountAddResponse.ReplyCode === 'SUCCESS') {\n vm.bankAddedSuccess = true;\n $modalInstance.close();\n $window.scrollTo(0, 0);\n $rootScope.$broadcast(assetService.events.reloadAfterAddBankAccount);\n } else if (vm.bankAccountAddResponse.MessageNum === '732' || vm.bankAccountAddResponse.MessageNum === '739' || vm.bankAccountAddResponse.MessageNum === '734' || vm.bankAccountAddResponse.MessageNum === '278' || vm.bankAccountAddResponse.MessageNum === '429' || vm.bankAccountAddResponse.MessageNum === '270') {\n vm.showErrorMessage = true;\n vm.loader = false;\n }\n });\n }\n }\n function addNewBankAccount(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data).then(function (result) {\n vm.bankAccountAddResponse = result.d.ManageBankAcc_NAV;\n vm.ACIValidationFailed = false;\n vm.loadingSpinner = false;\n if (result && result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S) {\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationMessageAdd, 'Bank Account Succesfully added.');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationtime, 'fade-in-out');\n pushVPV('/vpv/de/toast/manage-bank-accounts/success/manage-bank-accounts/bank-account-successfully-added');\n }\n }, function (error) {\n vm.bankAccountAddResponse = error;\n vm.ACIValidationFailed = true;\n vm.loadingSpinner = false;\n if (error.MessageNum === '732' || error.MessageNum === '739' || error.MessageNum === '734' || error.MessageNum === '278' || error.MessageNum === '429' || error.MessageNum === '270') {\n vm.ACIValidationErr = error.Message;\n vm.ACIMessageNum = error.MessageNum;\n } else {\n vm.ACIValidationFailed = false;\n $modalInstance.close();\n }\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n pushVPV('/vpv/de/toast/manage-bank-accounts/error/add-bank-accounts/bank-account-cannot-be-added-at-this-time');\n pushDL('manage-bank-account_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(vm.ACIValidationErr) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'add-bank-account');\n });\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n var accountTypeArrayValue = [{\n CHK: 'Personal Checking'\n }, {\n SAV: 'Personal Savings'\n }, {\n BCK: 'Business Checking'\n }, {\n BSV: 'Business Savings'\n }];\n if (accountTypeArrayValue) {\n var accounts = _.map(accountTypeArrayValue, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n load();\n }\n init();\n}\napp.controller('EditBankAccountNickname', EditBankAccountNickname);\nEditBankAccountNickname.$inject = ['$log', 'assetService', 'sessionStorageService', '$modalInstance', 'manageBankAccountsForPrepaidService', '$rootScope', 'commongaTaggingService', 'modalParameters', 'returnCodeMapping', 'responseNotificationsService'];\nfunction EditBankAccountNickname($log, assetService, sessionStorageService, $modalInstance, manageBankAccountsForPrepaidService, $rootScope, commongaTaggingService, modalParameters, returnCodeMapping, responseNotificationsService) {\n /* --------------Global Vars-----------------------*/\n var vm = this;\n vm.bpNumber = modalParameters.bpNumber;\n vm.bankAccountId = modalParameters.bankAccountId;\n vm.accountNumber = modalParameters.accountNumber;\n vm.routingNumber = modalParameters.routingNumber;\n vm.accountNickname = modalParameters.nickname;\n vm.accNameEmpty = false;\n vm.loader = false;\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.editBankNickname = editBankNickname;\n vm.checkNickname = checkNickname;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function checkNickname() {\n var nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\n if (nameLength >= vm.getNameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n vm.accNameEmpty = nameLength == 0 ? true : false;\n }\n function editBankNickname() {\n vm.accNameEmpty = vm.accountNickname ? false : true;\n if (vm.accountNickname) {\n vm.loader = true;\n var newParamData = {\n businessPartnerId: vm.bpNumber,\n bankAccountId: vm.bankAccountId,\n bankDescription: vm.accountNickname,\n action: assetService.serviceActions.manageBankAccountsForPrepaid.EDIT,\n RoutingNumber: vm.routingNumber\n };\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(newParamData).then(function (result) {\n if (result && result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S) {\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationMessage, 'Nickname successfully saved.');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationtime, 'fade-in-out');\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.reloadManagebankAccount);\n pushVPV('/vpv/de/toast-notification/manage-bank-account/success/nickname-successfully-changed');\n } else {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: 'Nickname cannot be saved at this time. Please try again.',\n pageTitle: 'manage bank accounts'\n });\n $modalInstance.close();\n vm.ACIValidationErr = result.d.ManageBankAcc_NAV.Message;\n vm.ACIMessageNum = result.d.ManageBankAcc_NAV.MessageNum;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n pushVPV('/vpv/de/toast/manage-bank-accounts/error/rename-nickname/nickname-cannot-be-saved-at-this-time');\n pushDL('manage-bank-account_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(vm.ACIValidationErr) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'rename-nickname');\n }\n }, function (error) {\n $modalInstance.close();\n vm.ACIValidationErr = error.Message;\n vm.ACIMessageNum = error.MessageNum;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n pushVPV('/vpv/de/toast/manage-bank-accounts/error/rename-nickname/nickname-cannot-be-saved-at-this-time');\n pushDL('manage-bank-account_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(vm.ACIValidationErr) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'rename-nickname');\n });\n }\n }\n function load() {\n vm.getNameLimit = sessionStorageService.get('NicknameLimit');\n pushVPV('/vpv/de/modal/manage-bank-account/load/rename-bank-account-nickname');\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\napp.controller('DeleteBankAccount', DeleteBankAccount);\nDeleteBankAccount.$inject = ['$log', 'assetService', 'sessionStorageService', '$modalInstance', 'manageBankAccountsForPrepaidService', '$rootScope', 'commongaTaggingService', 'modalParameters', 'returnCodeMapping', 'responseNotificationsService'];\nfunction DeleteBankAccount($log, assetService, sessionStorageService, $modalInstance, manageBankAccountsForPrepaidService, $rootScope, commongaTaggingService, modalParameters, returnCodeMapping, responseNotificationsService) {\n /* --------------Global Vars-----------------------*/\n var vm = this;\n vm.bankAccountDetails = {};\n vm.bpNumber = modalParameters.bpNumber;\n vm.bankAccountId = modalParameters.bankAccountId;\n vm.bankAccountDetails.accountNumber = modalParameters.accountNumber;\n vm.bankAccountDetails.nickname = modalParameters.nickname;\n vm.bankAccountDetails.bankInfoAccountDetails = modalParameters.bankInfoAccountDetails;\n vm.bankAccountDetails.showChevron = modalParameters.showChevron;\n vm.loader = false;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function deleteAccount(event) {\n vm.loader = true;\n if (event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n }\n var newParamData = {\n businessPartnerId: vm.bpNumber,\n bankAccountId: vm.bankAccountId,\n action: assetService.serviceActions.manageBankAccountsForPrepaid.DELETE\n };\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(newParamData).then(function (result) {\n if (result && result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S) {\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationMessage, 'Bank account successfully deleted.');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationtime, 'fade-in-out');\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.reloadManagebankAccount);\n pushVPV('/vpv/de/toast/manage-bank-account/success/bank-account-successfully-deleted');\n } else {\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotification, 'error');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationMessage, 'Bank account cannot be deleted at this time. Please try again.');\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.toastNotificationtime, 'fade-in-out');\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.reloadManagebankAccount);\n vm.ACIValidationErr = result.d.ManageBankAcc_NAV.Message;\n vm.ACIMessageNum = result.d.ManageBankAcc_NAV.MessageNum;\n pushVPV('/vpv/de/toast/manage-bank-accounts/error/delete-bank-accounts/bank-account-cannot-be-deleted-at-this-time');\n pushDL('manage-bank-account_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(vm.ACIValidationErr) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'delete-bank-account');\n }\n }, function (error) {\n $modalInstance.close();\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n pushVPV('/vpv/de/modal/manage-bank-account/load/are-you-sure-you-want-to-delete-this-bank-account');\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.deleteAccount = deleteAccount;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('ManageBankAccountController', ManageBankAccountController);\nManageBankAccountController.$inject = ['$location', '$scope', '$rootScope', 'assetService', 'getLoggedInUserDetailsService', 'modalService', 'sessionStorageService', 'getPrepaidDetailsService', 'getBankIdUsageService', 'getDeepLinkedPrimaryBPService', 'ccGetUserAccountsService', 'componentStateHandler', 'accountSearchService', 'commongaTaggingService'];\nfunction ManageBankAccountController($location, $scope, $rootScope, assetService, getLoggedInUserDetailsService, modalService, sessionStorageService, getPrepaidDetailsService, getBankIdUsageService, getDeepLinkedPrimaryBPService, ccGetUserAccountsService, componentStateHandler, accountSearchService, commongaTaggingService) {\n /**\r\n * Scope Vars\r\n */\n var globalSelectedAccount;\n var data;\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.fromDeleteAccount = false;\n vm.fromAddBankAccount = false;\n vm.showToast = false;\n vm.showChevronDetails = false;\n vm.loadingSpinner = true;\n vm.propertyCount = 0;\n vm.customerName = '';\n vm.data = [];\n vm.activeDetails = [];\n vm.accountType = [];\n vm.accountTypeDetails = [];\n vm.bankInfoAccountDetails = [];\n vm.toastData = {\n messageOption: '',\n // vm.sessionData.messageOption;\n option: '',\n // vm.sessionData.option;\n show: ''\n };\n var _fadeInOut = assetService.strings.FADEINOUT;\n vm.message1 = 'Property';\n vm.message2 = 'Properties';\n vm.primaryBp = '';\n vm.orgBPpresent = false;\n vm.isShowMoreVisible = false;\n vm.remainingAccs = [];\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n vm.bankMobileData = {};\n vm.orgBP = null;\n /*\r\n * Function Declarations\r\n */\n /* --------------Function Declarations-----------------------*/\n vm.init = init;\n vm.deleteBankAccount = deleteBankAccount;\n vm.editBankNickname = editBankNickname;\n vm.activateDetails = activateDetails;\n vm.bankInfoDetails = bankInfoDetails;\n vm.closeToast = closeToast;\n vm.addManageBankAccount = addManageBankAccount;\n vm.viewAll = viewAll;\n vm.showVPVChevron = showVPVChevron;\n\n /* --------------$on functions-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n var setModels = function setModels() {};\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function editBankNickname(index) {\n modalService.editNickName({\n bpNumber: vm.primaryBp,\n bankAccountId: vm.data[index].bankAccountId,\n accountNumber: vm.data[index].accountNumber,\n routingNumber: vm.data[index].routingNumber,\n nickname: vm.data[index].nickname\n });\n }\n function deleteBankAccount(index) {\n var bankDetails = vm.data[index];\n sessionStorageService.set(assetService.storageKeys.manageBankAccount.bankAccountDetails, bankDetails);\n bankInfoDetails(vm.data[index]);\n bankInfoDetails(vm.data[index]);\n modalService.deleteBankAccount({\n bpNumber: vm.primaryBp,\n bankAccountId: vm.data[index].bankAccountId,\n accountNumber: vm.data[index].accountNumber,\n nickname: vm.data[index].nickname,\n bankInfoAccountDetails: vm.bankInfoAccountDetails,\n showChevron: vm.data[index].showChevron\n });\n }\n function addManageBankAccount() {\n modalService.addManageBankAccount();\n }\n function activateDetails() {\n vm.loadingSpinner = true;\n if (vm.temp) {\n if (vm.temp.length < 11) {\n pushVPV('/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/saved-bank-accounts/under-ten-accounts');\n } else {\n pushVPV('/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/saved-bank-accounts/over-ten-accounts');\n }\n bankAccountIds = [];\n vm.temp.forEach(function (item) {\n var bankDetails = {\n BankAccountID: item.bankAccountId,\n BankIDToCA_NAV: {\n results: [{\n CAToPayments_NAV: {\n results: [{}]\n }\n }]\n },\n BankIDToMsg_NAV: {}\n };\n bankAccountIds.push(bankDetails);\n });\n }\n getBankIdUsageService.sitecore.getBankIdUsage({\n businessPartnerId: globalSelectedAccount.primaryBp,\n bankIdDetails: bankAccountIds\n }).then(function (result) {\n if (result && result.d.BPToBankID_NAV.results) {\n result.d.BPToBankID_NAV.results.forEach(function (item) {\n if (item.BankIDToCA_NAV.results.length > 0) {\n if (vm.temp) {\n vm.temp.forEach(function (data) {\n if (item.BankAccountID === data.bankAccountId && item.BankIDToCA_NAV.results.length > 0) {\n data.showChevron = true;\n }\n });\n }\n item.active = false;\n vm.accountTypeDetails.push(item);\n }\n });\n }\n componentStateHandler.showComponent(vm);\n }, function (error) {\n vm.loadingSpinner = false;\n console.log(error);\n });\n }\n function showVPVChevron() {\n pushDL('manage-bank-account', 'expansion', 'manage-bank-account');\n }\n function bankInfoDetails(bankItem) {\n vm.data.forEach(function (item) {\n item.active = item != bankItem ? false : bankItem.active;\n });\n if (vm.accountTypeDetails) {\n if (!bankItem.active) {\n vm.accountTypeDetails.forEach(function (data) {\n if (data.BankAccountID === bankItem.bankAccountId && data.BankAccountID.length === bankItem.bankAccountId.length) {\n vm.bankInfoAccountDetails = data.BankIDToCA_NAV.results;\n vm.propertyCount = 0;\n vm.bankInfoAccountDetails.forEach(function (item) {\n if (item.Experience === 'LANL') {\n item.showLandlord = true;\n item.showResidential = false;\n vm.propertyCount += 1;\n item.landlordMessage = vm.propertyCount == 1 ? vm.message1 : vm.message2;\n } else {\n item.showResidential = true;\n item.showLandlord = false;\n }\n });\n }\n });\n }\n bankItem.active = !bankItem.active;\n }\n vm.bankMobileData[bankItem.bankAccountId] = vm.bankInfoAccountDetails;\n }\n function load() {\n if (assetService.apiConfig.useLocalHost) {\n data = {\n businessPartnerId: $location.search().businessPartnerId,\n // Get Primary Bp\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpId: $location.search().cdpId // Get Primary Bp\n };\n } else {\n data = {\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId\n };\n }\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.customerName = sessionStorageService.get(assetService.storageKeys.manageBankAccount.customername);\n if (globalAccountInfo && globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n } else {\n globalSelectedAccount = {};\n }\n getOrgBPFromAccountSearch(getDeepLinkedPrimaryBP);\n }\n function viewAll() {\n vm.isShowMoreVisible = true;\n showAll(true);\n }\n function showAll(type) {\n vm.isShowMoreVisible = vm.temp.length > 10 && !type ? false : true;\n vm.remainingAccounts = vm.temp.length > 10 ? vm.temp.length - 10 : 0;\n var tempLength = vm.temp.length;\n vm.remainingAccs = vm.temp.slice(vm.data.length, tempLength);\n if (vm.afterTen > 0) {\n vm.showTen = vm.remainingAccs.slice(0, vm.remainingAccs.length);\n } else {\n vm.showTen = vm.remainingAccs.slice(0, 10);\n }\n if (vm.isShowMoreVisible == true && type == true) {\n vm.data = vm.data.concat(vm.showTen);\n vm.afterTen = vm.temp.length - vm.data.length;\n if (vm.afterTen > 0) {\n vm.isShowMoreVisible = false;\n }\n vm.afterTen = 0;\n }\n }\n function getDeepLinkedPrimaryBP() {\n getDeepLinkedPrimaryBPService.sitecore.getDeepLinkedPrimaryBP().then(function (result) {\n if (result && result.trim()) {\n vm.primaryBp = result;\n globalSelectedAccount = _objectSpread(_objectSpread({}, globalSelectedAccount), {}, {\n primaryBp: result\n });\n accountSearch(result);\n } else if (vm.orgBPpresent) {\n primaryBp = vm.primaryBp = vm.orgBP;\n globalSelectedAccount = _objectSpread(_objectSpread({}, globalSelectedAccount), {}, {\n primaryBp: primaryBp\n });\n getPrepaidDetails(globalSelectedAccount);\n } else {\n getPrimaryBPFromUserAccounts().then(function (primaryBp) {\n vm.primaryBp = primaryBp;\n globalSelectedAccount = _objectSpread(_objectSpread({}, globalSelectedAccount), {}, {\n primaryBp: primaryBp\n });\n getPrepaidDetails(globalSelectedAccount);\n }, function () {\n return getPrepaidDetails(globalSelectedAccount);\n });\n }\n });\n }\n function getPrimaryBPFromUserAccounts() {\n return ccGetUserAccountsService.getUserAccounts(data).then(function (results) {\n return results.bpData.primaryBp;\n });\n }\n function getOrgBPFromAccountSearch() {\n return accountSearchService.sitecore.accountSearch({\n contractAccountId: globalSelectedAccount.accountNum,\n dataSource: assetService.strings.ISU\n }).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\n vm.orgName = results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\n if (vm.orgName) {\n vm.orgBPpresent = true;\n vm.orgBP = results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\n }\n sessionStorageService.set(assetService.storageKeys.orgBP, vm.orgBP);\n sessionStorageService.set(assetService.storageKeys.orgBPpresent, vm.orgBPpresent);\n }\n if (getDeepLinkedPrimaryBP) {\n getDeepLinkedPrimaryBP();\n }\n }, function (error) {\n if (getDeepLinkedPrimaryBP) {\n getDeepLinkedPrimaryBP();\n }\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountSearch() {\n return accountSearchService.sitecore.accountSearch({\n businessPartnerId: primaryBp,\n dataSource: assetService.strings.ISU\n }).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\n vm.customerName = \"\".concat(bpData.BpFirstName, \" \").concat(bpData.BpLastName);\n getPrepaidDetails({\n businessPartnerId: primaryBp\n });\n }\n });\n }\n function getPrepaidDetails(value) {\n vm.loadingSpinner = true;\n getPrepaidDetailsService.sitecore.getPrepaidDetails({\n businessPartnerId: value.primaryBp,\n contractAccountId: value.accountNum\n }).then(function (result) {\n vm.data = [];\n vm.temp = [];\n if (result.d.PrepaidToBP.results[0].BPToBankDetail.results.length > 0) {\n var plans = _.map(result.d.PrepaidToBP.results[0].BPToBankDetail.results, function (item) {\n return {\n bankAccountId: item.BankAccountId,\n accountNumber: item.BankAccountNumber,\n routingNumber: item.BankRoutingNumber,\n nickname: item.BankDescription,\n accountType: item.BankAccountType,\n active: false,\n showChevron: false\n };\n });\n vm.temp = plans;\n vm.data = vm.temp.slice(0, 10);\n //vm.data = plans;\n if (vm.accountType && vm.temp) {\n activateDetails();\n vm.accountType.forEach(function (item) {\n vm.temp.forEach(function (dataItem) {\n if (item.value === dataItem.accountType) {\n dataItem.accountType = item.text;\n }\n });\n });\n }\n showAll(false);\n }\n componentStateHandler.showComponent(vm);\n }, function (error) {\n vm.data = [];\n vm.isShowMoreVisible = true;\n vm.loadingSpinner = false;\n pushVPV('/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/empty-state');\n });\n }\n function closeToast() {\n vm.toastData.show = 'fade-out';\n vm.showToast = false;\n }\n $scope.$on(assetService.events.reloadManagebankAccount, function () {\n vm.loadingSpinner = true;\n vm.fromDeleteAccount = true;\n vm.fromAddBankAccount = false;\n init(vm.bankAccountType, vm.accountNumLimit, vm.nickNameLimit);\n if (vm.toastData.option == 'success' || vm.toastData.option == 'error') {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.toastData.show = 'fade-out';\n vm.showToast = false;\n }, 6000);\n }\n });\n $scope.$on(assetService.events.reloadAfterAddBankAccount, function () {\n vm.loadingSpinner = true;\n vm.fromAddBankAccount = true;\n vm.fromDeleteAccount = false;\n init(vm.bankAccountType, vm.accountNumLimit, vm.nickNameLimit);\n if (vm.toastData.option == 'success' || vm.toastData.option == 'error') {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.toastData.show = 'fade-out';\n vm.showToast = false;\n }, 6000);\n }\n });\n\n /* ---------------Initialization-------------------*/\n function init(accountTypeArray, accountNumberLimit, accountNicknameLimit) {\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n }\n vm.bankAccountType = accountTypeArray;\n vm.accountNumLimit = accountNumberLimit;\n sessionStorageService.set('AccountNumberLimit', vm.accountNumLimit);\n vm.nickNameLimit = accountNicknameLimit;\n sessionStorageService.set('NicknameLimit', vm.nickNameLimit);\n if (vm.fromDeleteAccount) {\n vm.showToast = true;\n vm.toastData.option = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotification);\n vm.toastData.messageOption = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotificationMessage);\n vm.toastData.show = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotificationtime);\n }\n if (vm.fromAddBankAccount) {\n vm.showToast = true;\n vm.toastData.option = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotification);\n vm.toastData.messageOption = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotificationMessageAdd);\n vm.toastData.show = sessionStorageService.get(assetService.storageKeys.manageBankAccount.toastNotificationtime);\n }\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n if (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n } else {\n componentStateHandler.failedState(vm);\n }\n }, function (error) {\n console.log(error);\n });\n } else {\n load();\n }\n }\n}\n/* eslint-disable max-len */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('manageAutoPayMain', manageAutoPayMain);\nmanageAutoPayMain.$inject = ['$state', '$scope', 'assetService', 'sessionStorageService', 'ccAutoPayAssetService', '$rootScope'];\nfunction manageAutoPayMain($state, $scope, assetService, sessionStorageService, ccAutoPayAssetService, $rootScope) {\n /**\r\n * Scope Vars\r\n */\n var _selectedAddressData = null;\n var _startedFromWatcher = false;\n var _startedFromScope = false;\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n vm.cpiInfo = {};\n\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n if (_selectedAddressData.accountSelected.role === assetService.roles.admin) {\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenroll);\n } else if (_selectedAddressData.accountSelected.role === assetService.roles.owner) {\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPay);\n } else {\n window.location.href = $scope.urls.billingAndPaymentsLandingPage;\n }\n }\n\n /**\r\n * Emit and Broadcast events\r\n */\n\n /**\r\n * Initialization\r\n */\n function init() {\n delete $rootScope.autopayBankData;\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n if (_selectedAddressData && !_startedFromWatcher) {\n _startedFromScope = true;\n load();\n }\n }\n $scope.$on(ccAutoPayAssetService.events.globalSwitcherAccount, function () {\n if (!_startedFromScope) {\n _startedFromWatcher = true;\n load();\n }\n });\n}\napp.controller('manageAutoPayUnenrollSuccess', manageAutoPayUnenrollSuccess);\nmanageAutoPayUnenrollSuccess.$inject = ['commongaTaggingService', 'sessionStorageService', 'broadcastService', 'assetService', '$rootScope', '$window'];\nfunction manageAutoPayUnenrollSuccess(commongaTaggingService, sessionStorageService, broadcastService, assetService, $rootScope, $window) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n vm.cpiInfo = {};\n\n /**\r\n * Global Vars\r\n */\n\n /**\r\n * Function Declarations\r\n */\n /**\r\n * Function Definitions\r\n */\n\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n $window.scrollTo(0, 0);\n vm.cpiInfo = $rootScope.cpiInfo;\n broadcastService.headerSwitch('Full');\n pushVPV('/vpv/de/page/auto-pay/success/auto-pay/you’ve-unenrolled-from-auto-pay/na/manage');\n }\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable max-len */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('manageAutoPayUnenroll', manageAutoPayUnenroll);\nmanageAutoPayUnenroll.$inject = ['$log', '$state', 'assetService', 'sessionStorageService', 'ccAutoPayAssetService', 'enrollInBillingAndPaymentProgramsService', 'sessionStorageService', 'getAccountEnrollmentEligibilityStatusService', 'broadcastService', 'commongaTaggingService', '$rootScope'];\nfunction manageAutoPayUnenroll($log, $state, assetService, sessionStorageService, ccAutoPayAssetService, enrollInBillingAndPaymentProgramsService, sessionStorageService, getAccountEnrollmentEligibilityStatusService, broadcastService, commongaTaggingService, $rootScope) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _accountSelected = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _selectedAddressData = null;\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _selectedEmail = null;\n vm.viewShow = true;\n $rootScope.BnPpageError = false;\n /**\r\n * Global Vars\r\n */\n\n /**\r\n * Function Declarations\r\n */\n vm.previous = previous;\n vm.deEnroll = deEnroll;\n vm.nextBillingMonth = null;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function deEnroll(event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n var data = {\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n action: assetService.serviceActions.deEnrollFromProgram.DE_ENROLL,\n requestedBy: _selectedEmail.primaryEmail\n };\n if (_accountSelected) {\n data = {\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n action: assetService.serviceActions.deEnrollFromProgram.DE_ENROLL,\n routingNo: _accountSelected.rountingNumber,\n bankAccountNo: _accountSelected.accountNumber,\n bankName: _accountSelected.nickname,\n requestedBy: _selectedEmail.primaryEmail\n };\n }\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(data).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\n broadcastService.headerSwitch('Full');\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenrollSuccess);\n } else {\n // Toast alert goes here.\n }\n }, function (error) {\n $rootScope.BnPpageError = true;\n vm.viewShow = false;\n });\n }\n\n /**\r\n * Function Definitions\r\n */\n function previous() {\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPay);\n }\n function load() {\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n _selectedEmail = sessionStorageService.get(ccAutoPayAssetService.storageKeys.globalAccounts.info);\n getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\n contractAccountId: _selectedAddressData.accountSelected.accountNum\n }).then(function (result) {\n var enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\n var enrolled = ccAutoPayAssetService.strings.Enrolled;\n\n // It's enrolled into AutoPay SAP\n var enrollSAPData = _.find(enrolledPrograms, function (program) {\n return program.ProgName === ccAutoPayAssetService.strings.DIRDEB && program.EligibilityStatus === enrolled;\n });\n if (enrollSAPData) {\n _accountSelected = {\n accountId: enrollSAPData.BankAccountId,\n accountNumber: enrollSAPData.BankAccountNumber,\n nickname: enrollSAPData.BankAccountName,\n rountingNumber: enrollSAPData.RoutingNumber\n };\n vm.nextBillingMonth = enrollSAPData.EnrolledDate ? moment(enrollSAPData.EnrolledDate).format('MM/DD/YYYY') : 'XX/XX/XXXX';\n sessionStorageService.set('nextBillingMonth', vm.nextBillingMonth);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function init() {\n load();\n }\n init();\n}\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('manageAutoPay', manageAutoPay);\nmanageAutoPay.$inject = ['$log', '$scope', '$state', 'ccAutoPayAssetService', 'genericHelperService', 'sessionStorageService', 'getPrepaidDetailsService', 'getAccountEnrollmentEligibilityStatusService', 'modalService', 'enrollInBillingAndPaymentProgramsService', '$rootScope', 'broadcastService', 'assetService', 'accountSearchService', 'commonService', 'autopayenrollmenteligibilitycheckservice', '$window'];\nfunction manageAutoPay($log, $scope, $state, ccAutoPayAssetService, genericHelperService, sessionStorageService, getPrepaidDetailsService, getAccountEnrollmentEligibilityStatusService, modalService, enrollInBillingAndPaymentProgramsService, $rootScope, broadcastService, assetService, accountSearchService, commonService, autopayenrollmenteligibilitycheckservice, $window) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\n var _bankDescription = ccAutoPayAssetService.strings.bankDescription;\n var _bankAccountsOriginal = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _newBankAccountIdGenerated = null;\n var _selectedAddressData = null;\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _UPDATE = ccAutoPayAssetService.strings.UPDATE;\n var NUM_OF_ASTERISK = 5;\n var _selectedEmail = null;\n /**\r\n * Global Vars\r\n */\n $rootScope.dirdebenrolled = false;\n vm.showModal = showModal;\n vm.loadingSpinner = true;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.defaultBankAccount = null;\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n var SAPdueBalance;\n var SAPdueDate;\n vm.accountSelected = {\n accountId: null,\n accountNumber: null,\n nickname: null,\n rountingNumber: null,\n accountType: null\n };\n vm.delegateUserAccountDetails = {\n accountId: null,\n accountNumber: null,\n nickname: null,\n rountingNumber: null,\n accountType: null\n };\n vm.accountWasNotSelected = true;\n vm.enrolledInKubra = false;\n vm.dropdowns = {\n bankAccounts: null\n };\n vm.form = {\n manageAutoPayForm: null,\n bankAccount: null,\n paymentDate: null,\n daysBeforePaymentDate: null,\n maximumPaymentAmount: null,\n maximumPaymentAmountCheckbox: false\n };\n vm.loaded = false;\n vm.isBPACancel = false;\n vm.orgBPpresent = false;\n vm.autoPayAgreementCheck = false;\n vm.cpiMessage = '';\n vm.lowCpiMessage = false;\n vm.highCpiMessage = false;\n vm.pastDue = false;\n vm.dueInFuture = false;\n vm.showAgreement = false;\n vm.error = false;\n vm.initCalled = false;\n vm.previousBank = '';\n vm.errorTrue = false;\n /**\r\n * Emit and Broadcast events\r\n */\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, function () {\n _newBankAccountIdGenerated = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated);\n vm.initCalled = false;\n reload();\n });\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, function () {\n _newBankAccountIdGenerated = null;\n reload();\n });\n $scope.$on(ccAutoPayAssetService.events.modalUnenrollClosed, function () {\n vm.error = true;\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n vm.addBankAccount = addBankAccount;\n vm.cancel = cancel;\n vm.save = save;\n vm.selectAccount = selectAccount;\n vm.unenrollFromAutoPay = unenrollFromAutoPay;\n vm.hideAccount = hideAccount;\n vm.getOrgBPFromAccountSearch = getOrgBPFromAccountSearch;\n vm.toggleAgreement = toggleAgreement;\n vm.backToPrograms = backToPrograms;\n\n /**\r\n * Function Definitions\r\n */\n function hideAccount(value) {\n var convertedValue = value;\n if (convertedValue && !isNaN(convertedValue)) {\n var stringLength = convertedValue.length;\n var visibleDigits = 4;\n if (stringLength > visibleDigits) {\n convertedValue = convertedValue.slice(-visibleDigits);\n }\n convertedValue = \"*****\".concat(convertedValue);\n }\n return convertedValue;\n }\n function addBankAccount() {\n modalService.manageAutoPayAddBankAccountModal();\n }\n function findAccountAndSelectIt(bankID) {\n var accountFound = _.find(_bankAccountsOriginal, function (account) {\n return account[_BankAccountId] === bankID;\n });\n if (accountFound) {\n var accountDetails = {\n accountId: accountFound.BankAccountId,\n nickname: accountFound.BankDescription,\n rountingNumber: accountFound.BankRoutingNumber,\n accountNumber: accountFound.BankAccountNumber,\n accountType: accountFound.BankAccountType\n };\n vm.accountType.forEach(function (item) {\n if (item.value === accountFound.BankAccountType) {\n accountDetails.accountType = item.text;\n }\n });\n if (vm.roleBase && vm.roleBase.adminRole) {\n vm.delegateUserAccountDetails = accountDetails;\n } else {\n vm.accountSelected = accountDetails;\n }\n vm.showAgreement = true;\n }\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(vm.dropdowns.bankAccounts, ccAutoPayAssetService.strings.value, vm.accountSelected.accountId);\n return accountFound;\n }\n function getOrgBPFromAccountSearch() {\n return accountSearchService.sitecore.accountSearch({\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n dataSource: assetService.strings.ISU\n }).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\n vm.orgName = results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\n if (vm.orgName) {\n vm.orgBPpresent = true;\n vm.orgBP = results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\n return true;\n }\n }\n return false;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getBankAccountsSAP(requestFields) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails({\n businessPartnerId: requestFields.businessPartnerId,\n contractAccountId: requestFields.contractAccountId\n }).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n return _bankAccountsOriginal;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function showModal() {\n modalService.updateDelegateUserBankAccount();\n }\n function reload() {\n vm.loaded = false;\n vm.loadingSpinner = true;\n load();\n }\n\n // function below cancels autopay management and send back to B&P Programs LP\n function cancel(redirectUrl) {\n if (vm.showAgreement) modalService.cancelModal(); // agreement appears when user interacts\n else window.location.href = redirectUrl;\n }\n function backToPrograms(redirectUrl) {\n window.location.href = redirectUrl;\n }\n function save() {\n vm.loadingSpinner = true;\n broadcastService.headerSwitch('Full');\n vm.pastDue = false;\n // Update details for SAP\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n action: _UPDATE,\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n bankId: vm.accountSelected.accountId,\n requestedBy: _selectedEmail.primaryEmail,\n extensionSet: [{\n \"RefObject\": _DIRDEB,\n \"RefFieldName\": \"CPI_MESSAGE\",\n \"RefFieldValue\": \"Amount \".concat(SAPdueBalance, \" Date \").concat(SAPdueDate)\n }, {\n \"RefObject\": _DIRDEB,\n \"RefFieldName\": \"TERMS\",\n \"RefFieldValue\": vm.autoPayAgreementCheck ? \"X\" : ''\n }]\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\n pushVPV('/vpv/de/page/auto-pay/success/manage-auto-pay/auto-pay-payment-method-updated/na/manage');\n $window.scrollTo(0, 0);\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPaySuccess);\n }\n }, function (error) {\n vm.error = true;\n vm.loadingSpinner = false;\n });\n }\n function selectAccount(optionSelected) {\n vm.form.manageAutoPayForm.$setDirty();\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\n addBankAccount();\n findAccountAndSelectIt(vm.previousBank);\n } else {\n vm.previousBank = vm.form.bankAccount;\n findAccountAndSelectIt(vm.form.bankAccount);\n $rootScope.mainBtnActivate = false;\n }\n }\n function toggleAgreement() {\n vm.accountWasNotSelected = !vm.autoPayAgreementCheck;\n }\n function unenrollFromAutoPay() {\n modalService.unenrollAutoPay(vm.accountSelected);\n // broadcastService.headerSwitch('Simple');\n // $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenroll);\n }\n function setModels() {\n if (_newBankAccountIdGenerated) {\n vm.form.bankAccount = _newBankAccountIdGenerated;\n vm.previousBank = vm.form.bankAccount;\n findAccountAndSelectIt(vm.form.bankAccount);\n } else {\n vm.form.bankAccount = vm.accountSelected.accountId;\n vm.previousBank = vm.form.bankAccount;\n }\n }\n function addAsterisk(bankAccountNum, numOfAsterisk) {\n // remove all * prefix\n var LAST_DIGITS = 4;\n var result = bankAccountNum.substr(bankAccountNum.length - LAST_DIGITS, LAST_DIGITS);\n return '*'.repeat(numOfAsterisk) + result;\n }\n function setDropdowns() {\n if (_bankAccountsOriginal && _bankAccountsOriginal.length > 0) {\n vm.dropdowns.bankAccounts = _bankAccountsOriginal.map(function (bankAccount) {\n return {\n value: bankAccount[_BankAccountId],\n text: bankAccount[_bankDescription] ? \"\".concat(bankAccount[_bankDescription], \" - \").concat(addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)) : \"Account - \".concat(addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK))\n };\n });\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(vm.dropdowns.bankAccounts, ccAutoPayAssetService.strings.value, _newBankAccountIdGenerated || vm.accountSelected.accountId);\n vm.dropdowns.bankAccounts.push({\n text: 'Add Bank Account',\n value: ccAutoPayAssetService.strings.addAccount\n });\n vm.showDrops = true;\n } else {\n vm.showDrops = false;\n }\n }\n function getCpiMessage(data) {\n return autopayenrollmenteligibilitycheckservice.sitecore.autoPayEnrollmentEligibilityCheck(data).then(function (result) {\n return {\n cpiMessage: result.d.Accounts.results[0].BalanceInfo.CpiMessage,\n cpiMessagePriority: result.d.Accounts.results[0].BalanceInfo.CpiMessagepriority,\n statusCode: result.d.Accounts.results[0].BalanceInfo.StatusCode,\n dueBalance: result.d.Accounts.results[0].BalanceInfo.BalanceDue,\n dueDate: result.d.Accounts.results[0].BalanceInfo.DueDateStr\n };\n }, function (error) {\n vm.loadingSpinner = false;\n vm.errorTrue = true;\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n vm.isBPACancel = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment) == 'billingAndPaymentAcivity';\n broadcastService.headerSwitch('Simple');\n _selectedEmail = sessionStorageService.get(ccAutoPayAssetService.storageKeys.globalAccounts.info);\n getOrgBPFromAccountSearch().then(function (response) {\n commonService.executePromises([getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\n contractAccountId: _selectedAddressData.accountSelected.accountNum\n }), getBankAccountsSAP({\n businessPartnerId: vm.orgBPpresent === true ? vm.orgBP : _selectedAddressData.primaryBp,\n contractAccountId: _selectedAddressData.accountSelected.accountNum\n }).then(function (result) {\n setModels();\n setDropdowns();\n }), getCpiMessage(_selectedAddressData.accountSelected.accountNum)]).then(function (results) {\n var _results = _slicedToArray(results, 3),\n result = _results[0],\n bankAccResponse = _results[1],\n _results$ = _results[2],\n cpiMessage = _results$.cpiMessage,\n cpiMessagePriority = _results$.cpiMessagePriority,\n statusCode = _results$.statusCode,\n dueBalance = _results$.dueBalance,\n dueDate = _results$.dueDate;\n var enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\n var enrolled = ccAutoPayAssetService.strings.Enrolled;\n\n // cpi\n SAPdueBalance = dueBalance;\n SAPdueDate = dueDate;\n vm.cpiMessage = cpiMessage;\n vm.lowCpiMessage = cpiMessagePriority === '2000';\n vm.highCpiMessage = cpiMessagePriority === '1000';\n vm.pastDue = statusCode === '01';\n vm.dueInFuture = statusCode === '02' || statusCode === '03';\n if (vm.pastDue) {\n broadcastService.headerSwitch('Full');\n pushVPV('/vpv/de/page/auto-pay/load/manage-auto-pay/account-past-due/na/manage');\n } else if (!_newBankAccountIdGenerated) {\n pushVPV('/vpv/de/page/manage-auto-pay/load/auto-pay/change-payment-method/na/manage');\n }\n $scope.$parent.vm.cpiInfo = {\n statusCode: statusCode,\n cpiMessagePriority: cpiMessagePriority,\n dueBalance: dueBalance,\n dueDate: moment(dueDate).format('MM/DD/YYYY'),\n sapdueDate: moment(dueDate).format('MM-DD-YYYY'),\n cpiMessage: cpiMessage\n };\n $rootScope.cpiInfo = $scope.$parent.vm.cpiInfo;\n\n // It's enrolled into AutoPay SAP\n var enrollSAPData = _.find(enrolledPrograms, function (program) {\n return program.ProgName === ccAutoPayAssetService.strings.DIRDEB;\n });\n if (enrollSAPData.EligibilityStatus === 'Eligible') {\n window.location.href = '/my-account/billing-and-payment-programs';\n } else {\n enrollSAPData = enrollSAPData.EligibilityStatus === enrolled ? enrollSAPData : null;\n if (!_newBankAccountIdGenerated && enrollSAPData) {\n vm.accountSelected = {\n accountId: enrollSAPData.BankAccountId,\n accountNumber: enrollSAPData.BankAccountNumber,\n nickname: enrollSAPData.BankAccountName,\n rountingNumber: enrollSAPData.RoutingNumber,\n accountType: enrollSAPData.BankAccountType\n };\n vm.accountType.forEach(function (item) {\n if (item.value === enrollSAPData.BankAccountType) {\n vm.accountSelected.accountType = item.text;\n }\n });\n vm.accountWasNotSelected = true;\n $rootScope.dirdebenrolled = true;\n setModels();\n setDropdowns();\n }\n vm.loadingSpinner = false;\n vm.loaded = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n }\n\n /**\r\n * Initialization\r\n */\n function init(accountTypeArray) {\n vm.loadingSpinner = true;\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n if (window.location.pathname === '/my-account/billing-and-payment-programs/auto-pay/manage-auto-pay' && vm.roleBase.viewerRole) {\n window.location.href = '/my-account/billing-and-payment-programs';\n }\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n vm.initCalled = true;\n }\n if (vm.initCalled) {\n load();\n } else {\n vm.loaded = true;\n vm.loadingSpinner = false;\n }\n }\n init();\n}\napp.controller('ccServiceOrderDetailController', ccServiceOrderDetailController);\nccServiceOrderDetailController.$inject = ['assetService', 'commonService', 'genericHelperService', 'getServiceOrderDetailsService', 'sessionStorageService', 'updateServiceOrderService', '$scope', '$rootScope', '$state', '$window', 'manageOrderService', 'commongaTaggingService', '$timeout', 'errorHandlingService', 'accountSearchService', '$log'];\nfunction ccServiceOrderDetailController(assetService, commonService, genericHelperService, getServiceOrderDetailsService, sessionStorageService, updateServiceOrderService, $scope, $rootScope, $state, $window, manageOrderService, commongaTaggingService, $timeout, errorHandlingService, accountSearchService, $log) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var success = assetService.replyCodes.SUCCESS;\n vm.isResponseSuccess = true;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n status: null,\n order_number: null,\n phoneNumber: null,\n meterNumber: null,\n email: null,\n scheduled_time: null,\n completed_time: null,\n scheduled_date: null,\n phoneNumberToEdit: null\n };\n vm.loadingSpinner = true;\n vm.loaded = false;\n vm.getServiceOrderDetails = {};\n vm.sessionStorage = {};\n vm.updateServiceOrder = {\n reply: null\n };\n vm.modalLoadingSpinner = false;\n vm.toastData = {\n option: '',\n show: false,\n messageOption: ''\n };\n vm.enableUpdateButton = false;\n /* Function Definitions */\n vm.phoneNumberChange = phoneNumberChange;\n vm.telFormat = telFormat;\n vm.saveData = saveData;\n vm.openModal = openModal;\n vm.goBack = goBack;\n vm.init = init;\n vm.contactUs = contactUs;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.populateGATagging = populateGATagging;\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n addedSpec: ''\n };\n vm.closeToast = closeToast;\n\n /* Function Declarations */\n\n function goBack() {\n $rootScope.fromGoBackLink = true;\n $state.go(manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_LIST);\n }\n function telFormat(phone) {\n return genericHelperService.telFormat(phone);\n }\n function convertTime(time) {\n if (time) {\n return moment(time, 'HHmmss').format('HH:mm A');\n }\n return '';\n }\n function attributePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n if ($(\".contactUsBtn:visible\").length == 1) {\n arrayElements[2] = \"subheadline:\" + vm.data.description;\n }\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function saveData(workflow, headline, buttonText, toastWorkflow, toastAddedSpec, toastButtonText) {\n vm.modalLoadingSpinner = true;\n attributePush(\"workFlow:\".concat(workflow), \"headline:\".concat(headline), \"buttonText:\".concat(buttonText));\n var dataToPost = {\n action: assetService.serviceActions.updateServiceOrder.UPDATE_SO,\n orderNumber: vm.data.order_number,\n requestedPhone: removeFormat(vm.data.phoneNumberToEdit),\n remarks: {\n results: [{\n Remark: ''\n }]\n }\n };\n updateServiceOrder(dataToPost).then(function () {\n var timeOutValue = 6000;\n if (vm.updateServiceOrder.reply === success) {\n vm.loaded = false;\n vm.data.phoneNumber = vm.data.phoneNumberToEdit;\n angular.element('.modal').modal('hide');\n vm.toastData.option = 'success';\n vm.toastData.messageOption = 'Success! Phone number Updated.';\n vm.modalLoadingSpinner = true;\n vm.toastData.show = true;\n $timeout(function () {\n vm.toastData.show = false;\n }, timeOutValue);\n attributePush(\"workFlow:\".concat(toastWorkflow), \"addedSpec:\".concat(toastAddedSpec), \"buttonText:\".concat(toastButtonText), \"headline:\".concat(vm.toastData.option), \"subheadline:\".concat(vm.toastData.messageOption));\n virtualPagePush('manage-service-requests', 'edit-contact-phone-number', 'update', 'success');\n virtualPagePush('toast-notification', 'service-orders', vm.toastData.messageOption, 'impression', vm.toastData.option);\n } else {\n angular.element('.modal').modal('hide');\n vm.toastData.option = 'error';\n vm.toastData.messageOption = 'Error! Sorry an error occurred';\n vm.modalLoadingSpinner = true;\n vm.toastData.show = true;\n attributePush(\"workFlow:\".concat(toastWorkflow), \"addedSpec:\".concat(toastAddedSpec), \"buttonText:\".concat(toastButtonText), \"headline:\".concat(vm.toastData.option), \"subheadline:\".concat(vm.toastData.messageOption));\n virtualPagePush('manage-service-requests', 'edit-contact-phone-number', 'update', 'error');\n virtualPagePush('toast-notification', 'service-orders', vm.toastData.messageOption, 'impression', vm.toastData.option);\n }\n });\n }\n function updateServiceOrder(data) {\n vm.updateServiceOrder.reply = null;\n return updateServiceOrderService.sitecore.updateServiceOrder(data).then(function (result) {\n vm.updateServiceOrder.reply = result.d.ReplyCode;\n }, function (error) {\n angular.element('.modal').modal('hide');\n errorHandlingService.getException(error);\n });\n }\n function phoneNumberChange() {\n vm.enableUpdateButton = false;\n var phoneNumberLength = 10;\n var enteredPhoneNumber = removeFormat(angular.element(document.querySelector('#phone_number')).val());\n var oldPhoneNumber = removeFormat(vm.data.phoneNumber);\n if (enteredPhoneNumber.length >= phoneNumberLength && enteredPhoneNumber !== oldPhoneNumber) {\n vm.enableUpdateButton = true;\n }\n }\n function removeFormat(phoneValue) {\n var formattedVal = phoneValue.replace('(', '').replace(' ', '').replace(')', '').replace('-', '').replace('_', '');\n return formattedVal;\n }\n function setModels() {\n vm.data.order_number = vm.getServiceOrderDetails.OrderNumber;\n vm.data.phoneNumber = telFormat(vm.getServiceOrderDetails.PrimaryContNumber);\n vm.data.phoneNumberToEdit = telFormat(vm.getServiceOrderDetails.PrimaryContNumber);\n vm.data.meterNumber = vm.getServiceOrderDetails.EquipmentNumber || '';\n vm.data.email = vm.getServiceOrderDetails.EmailId || '';\n vm.data.completionDate = vm.getServiceOrderDetails.CompletionDate || '';\n vm.data.description = vm.getServiceOrderDetails.OrderTypeDescription || '';\n vm.data.status = getStatus(vm.getServiceOrderDetails.Status) || vm.getServiceOrderDetails.Status;\n vm.data.scheduled_date = moment(vm.getServiceOrderDetails.ScheduleDate).utc().format('MM/DD/YYYY');\n vm.data.scheduled_time = convertTime(vm.getServiceOrderDetails.ScheduleTime);\n vm.data.completed_time = convertTime(vm.getServiceOrderDetails.CompletionTime);\n if (vm.data.email === '' || vm.data.phoneNumber === '') {\n getEmailAndPhoneNumber();\n } else {\n GATTagging();\n }\n }\n function getEmailAndPhoneNumber() {\n var globalSelectedAccount;\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n return accountSearchService.sitecore.accountSearch({\n businessPartnerId: globalSelectedAccount.primaryBp\n }).then(function (result) {\n if (result.d.ReqToMesNav.results[0].Type !== 'E') {\n var accountSearchResponse = result.d.ReqToHResNav.results[0].HResToBp.results[0];\n if (vm.data.email === '') {\n var primaryEmail = accountSearchResponse.BpToEm.results.filter(function (elem) {\n return elem.Primary;\n });\n vm.data.email = primaryEmail[0].EmailAddress;\n }\n if (vm.data.phoneNumber === '') {\n var primaryPhone = accountSearchResponse.BpToPh.results.filter(function (elem) {\n return elem.Primary;\n });\n vm.data.phoneNumber = primaryPhone[0].PhoneNumber;\n }\n GATTagging();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function GATTagging() {\n vm.loaded = true;\n var addedSpec = 'page-load';\n var editDescrition = 'edit';\n if (vm.data.status === 'Completed' || vm.data.status === 'Cancelled') {\n addedSpec = 'read-only';\n editDescrition = '';\n } else if (vm.data.status === 'Incomplete') {\n addedSpec = 'error';\n editDescrition = '';\n }\n virtualPagePush('manage-service-requests', 'manage-service-requests', vm.data.description, vm.data.status, editDescrition, addedSpec, 'not-set');\n }\n function contactUs() {\n attributePush(\"workFlow:\".concat(vm.taggingElements.workflow), \"headline:\".concat(vm.taggingElements.headline), \"subheadline:\".concat(vm.taggingElements.subHeadline), \"buttonText:\".concat(vm.taggingElements.buttonText), \"addedSpec:\".concat(vm.taggingElements.addedSpec));\n }\n function getStatus(type) {\n var serviceOrderStatus = sessionStorageService.get(assetService.storageKeys.manageServiceOrder.statusList);\n return _.get(serviceOrderStatus, type);\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n goBack();\n });\n function load() {\n $window.scrollTo(0, 0);\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n vm.loadingSpinner = true;\n vm.data.order_number = $rootScope.orderNumberFromManageService;\n var dataPost = {\n orderNumber: vm.data.order_number\n };\n var promises = [getServiceOrderDetails(dataPost)];\n commonService.executePromises(promises).then(function () {\n setModels();\n vm.loadingSpinner = false;\n });\n function getServiceOrderDetails(data) {\n return getServiceOrderDetailsService.sitecore.getServiceOrderDetailsService(data).then(function (result) {\n vm.getServiceOrderDetails = result.d.results[0].serviceorderdetailtores_nav;\n vm.isResponseSuccess = vm.getServiceOrderDetails.Message.ReplyCode === success;\n }, function (error) {\n if (error) {\n vm.loadingSpinner = false;\n vm.isResponseSuccess = false;\n errorHandlingService.getException(error);\n }\n });\n }\n }\n function openModal() {\n vm.modalLoadingSpinner = false;\n vm.enableUpdateButton = false;\n vm.data.phoneNumberToEdit = vm.data.phoneNumber;\n }\n function populateGATagging(workflow, headline, subHeadline, addedSpec) {\n vm.taggingElements.workflow = workflow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subHeadline;\n vm.taggingElements.buttonText = workflow;\n vm.taggingElements.addedSpec = addedSpec;\n }\n function init() {\n load();\n }\n function closeToast() {\n vm.toastData.show = '';\n }\n $scope.closeModal = function () {\n angular.element('.modal').modal('hide');\n };\n init();\n}\napp.controller('ccServiceOrderListController', ccServiceOrderListController);\nccServiceOrderListController.$inject = ['$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'getServiceOrderService', 'commonService', 'commongaTaggingService', 'manageOrderService', 'errorHandlingService'];\nfunction ccServiceOrderListController($state, $scope, $rootScope, assetService, sessionStorageService, getServiceOrderService, commonService, commongaTaggingService, manageOrderService, errorHandlingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n\n /* --------------Function Definitions-----------------------*/\n vm.init = init;\n vm.numberOfServiceOrders = '';\n vm.data = [];\n vm.dataShown = [];\n vm.sortAsc = false;\n vm.sortStatusAsc = false;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.sortByColumn = sortByColumn;\n vm.showStatusSort = false;\n vm.showDateSort = true;\n vm.showMore = showMore;\n vm.editClicked = editClicked;\n vm.listIndex = manageOrderService.strings.LIST_INDEX;\n vm.isShowMore = true;\n vm.loadingSpinner = true;\n vm.isResponseSuccess = true;\n var success = assetService.replyCodes.SUCCESS;\n var zero = 0;\n var currentContractAccountNumber;\n /* ---------------Initialization-------------------*/\n\n function attributePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n\n $(document).on('click touchstart tap', function (event) {\n var $target = $(event.target);\n if (!$target.closest('.info-tooltip').length && $('.tooltip').is(':visible')) {\n $('[data-toggle=\"tooltip\"], .tooltip').tooltip('hide');\n }\n });\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n function load() {\n vm.loaded = false;\n var noOfYearsPrevious = 5;\n var data = {\n businessPartner: globalSelectedAccount.primaryBp,\n startDate: moment().subtract(noOfYearsPrevious, 'years').format('YYYY-MM-DDTHH:mm:ss'),\n endDate: '2099-01-01T00:00:00'\n };\n currentContractAccountNumber = globalSelectedAccount.accountNum;\n var promises = [getServiceOrder(data)];\n if (!vm.loaded) {\n commonService.executePromises(promises).then(function () {\n vm.loaded = true;\n });\n }\n function getServiceOrder(dataToPost) {\n return getServiceOrderService.sitecore.getServiceOrderService(dataToPost).then(function (result) {\n var dataArray = result.d.SOHeaderToItem_NAV.results.map(function (rootItem) {\n return rootItem.SOItemToSO_NAV.results.map(function (item) {\n return {\n date: moment(item.ScheduleDate).utc().format('MM/DD/YYYY'),\n orderNumber: item.OrderNumber,\n orderType: item.OrderType,\n description: item.OrderTypeDescription,\n status: getStatus(item.Status) || item.Status,\n contractAccount: rootItem.ContractAccount\n };\n });\n });\n var dataValue = [];\n dataArray.forEach(function (element) {\n // check for selected contract account\n element.forEach(function (elem) {\n if (elem.contractAccount === currentContractAccountNumber) {\n dataValue.push(elem);\n }\n });\n });\n vm.numberOfServiceOrders = dataValue.length;\n vm.isResponseSuccess = vm.numberOfServiceOrders > zero && result.d.ReplyCode === success;\n vm.data = dataValue;\n getData();\n }, function (error) {\n vm.isResponseSuccess = false;\n errorHandlingService.getException(error);\n });\n }\n }\n function sortByColumn(value) {\n vm.showStatusSort = false;\n vm.showDateSort = false;\n if (value === 'date') {\n vm.sortAsc = !vm.sortAsc;\n vm.showDateSort = true;\n } else {\n vm.sortStatusAsc = !vm.sortStatusAsc;\n vm.showStatusSort = true;\n }\n sorting(value);\n }\n function sorting(sortType) {\n if (sortType === 'date') {\n vm.dataShown = vm.dataShown.sort(function (prev, next) {\n if (vm.sortAsc) {\n return new Date(prev.date) - new Date(next.date);\n }\n return new Date(next.date) - new Date(prev.date);\n });\n } else {\n vm.dataShown = vm.dataShown.sort(function (prev, next) {\n if (vm.sortStatusAsc) {\n return prev.status.toLowerCase().localeCompare(next.status.toLowerCase());\n }\n return next.status.toLowerCase().localeCompare(prev.status.toLowerCase());\n });\n }\n }\n function editClicked(orderNumber, status, workflow, headline, buttontext, addedSpec) {\n attributePush(\"workFlow:\".concat(workflow), \"addedSpec:\".concat(addedSpec), \"buttonText:\".concat(buttontext), \"headline:\".concat(headline), \"addedEvent:\".concat(status));\n virtualPagePush('manage-service-requests', 'manage-service-requests', addedSpec, status, 'view');\n $rootScope.orderNumberFromManageService = orderNumber;\n $state.go(manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_DETAIL);\n }\n function getStatus(type) {\n var serviceOrderStatus = sessionStorageService.get(assetService.storageKeys.manageServiceOrder.statusList);\n return _.get(serviceOrderStatus, type);\n }\n function showMore() {\n vm.listIndex += manageOrderService.strings.LIST_INDEX;\n getData();\n }\n function getData() {\n vm.dataShown = vm.data.filter(function (object, index) {\n return index < vm.listIndex;\n });\n vm.isShowMore = vm.listIndex < vm.data.length;\n sorting('date');\n }\n function init() {\n if ($rootScope.fromGoBackLink) {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n $rootScope.fromGoBackLink = false;\n load();\n }\n }\n init();\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('ccServiceOrderMainController', ccServiceOrderMainController);\nccServiceOrderMainController.$inject = ['$state', 'manageOrderService', 'sessionStorageService', 'assetService'];\nfunction ccServiceOrderMainController($state, manageOrderService, sessionStorageService, assetService) {\n /* Scope Vars */\n var vm = this;\n vm.init = init;\n vm.loadingSpinner = true;\n\n /* Function declarations */\n\n /* Function definitions */\n\n function load() {\n $state.go(manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_LIST);\n }\n\n /* ---------------Initialization-------------------*/\n function init(status) {\n var serviceOrderStatusList = Object.assign.apply(Object, [{}].concat(_toConsumableArray(status)));\n sessionStorageService.set(assetService.storageKeys.manageServiceOrder.statusList, serviceOrderStatusList);\n load();\n }\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('manageProductServicesController', manageProductServicesController);\nmanageProductServicesController.$inject = ['$rootScope', '$window', '$log', '$location', '$scope', '$state', '$filter', '$sce', 'assetService', 'commonService', 'getEnrollmentsService', 'getProductDetailsService', 'modalService', 'sessionStorageService', 'ccProductAndServicesAssetService', 'getLoggedInUserDetailsService', 'ccGetUserAccountsService', 'commongaTaggingService', 'getCardDetailsService', 'updateCardDetailsService', 'getDeepLinkedPrimaryBPService', 'getUpdateCardDetailsService', 'ccGetUserAccountsService', 'responseNotificationsService', 'broadcastService'];\nfunction manageProductServicesController($rootScope, $window, $log, $location, $scope, $state, $filter, $sce, assetService, commonService, getEnrollmentsService, getProductDetailsService, modalService, sessionStorageService, ccProductAndServicesAssetService, getLoggedInUserDetailsService, getUserAccountsService, commongaTaggingService, getCardDetailsService, updateCardDetailsService, getDeepLinkedPrimaryBPService, getUpdateCardDetailsService, ccGetUserAccountsService, responseNotificationsService, broadcastService) {\n /* -----------------------Scope Vars---------------------------*/\n var vm = this;\n var accessRightString = assetService.strings.ACCESSRIGHT;\n var allowedString = assetService.strings.ALLOWED;\n var digitalString = assetService.strings.DIGITAL;\n var cancelString = assetService.strings.CANCEL;\n var cancelledString = assetService.strings.CANCELLED;\n var pendingString = assetService.strings.PENDING;\n var rejectedString = assetService.strings.REJECTED;\n var unEnrolledString = assetService.strings.UNENROLLED;\n var billingSetupString = assetService.strings.BILLING_SETUP;\n var enrollments = {};\n // let groupsArray = {};\n // let productDefinitions = null;\n var upgradeString = assetService.strings.UPGRADE;\n var _originUrl = window.location.origin;\n var _originHref = window.location.href;\n var _urlProductsAndServicesDetails = \"\".concat(ccProductAndServicesAssetService.strings.SHELL_URL, \"?state=\").concat(ccProductAndServicesAssetService.pages.productDetails, \"&productCode=\");\n var _url = \"\".concat(location.origin, \"/my-account/products-and-services/manage-products-and-services\");\n var productCode = '';\n /* -----------------------Global Vars---------------------------*/\n vm.bpNotFound = 'BusinessPartner not found';\n vm.kwCancel = 'CANCELLED';\n vm.kwEnroll = 'ENROLLED';\n vm.kwPending = 'PENDING';\n vm.regulated = 'REGULATED';\n vm.recurring = 'RECURRING';\n vm.nonRegulated = 'NON_REGULATED';\n vm.billingTimeString = 'monthly';\n vm.kwCreditCard = 'CREDIT_CARD';\n vm.kwISUBilling = 'ISU_BILLING';\n vm.kwLegacyBilling = 'LEGACY_BILLING';\n vm.kwUpgrade = 'UPGRADE';\n vm.superAdminRole = '002';\n vm.ownerRole = '014';\n vm.viewerRole = '012';\n vm.noRole = '0';\n vm.dateGroups = {};\n vm.enrollments = [];\n vm.enrollmentData = {};\n vm.enrollmentsObj = {};\n vm.managePSSpinner = true;\n vm.noData = false;\n vm.switch = 1;\n vm.showNoContent = false;\n vm.cardDetailsForCA = {};\n vm.allCardsDataForBp = {};\n vm.cardIdForCA = {};\n vm.dropdownaccounts = {};\n vm.dropdownaccountKeys = [];\n vm.showallaccountData = [];\n vm.totalAccounts = 1;\n vm.showaccount = '';\n vm.showDropdown = false;\n vm.selectedCAforSpeedPay = '';\n vm.selectedBP = '';\n vm.nonAuthBp = undefined;\n vm.invalidDate = 'Invalid date';\n vm.nonAuthEnrollmentCode = undefined;\n vm.isEnergywiseProduct = false;\n $rootScope.cancelServiceFailedProduct = \"\";\n var _globalAccountsStorage = null;\n vm.toggle = [];\n\n /* --------------Watchers-----------------------*/\n $scope.$on('UDEnrollment', function () {\n getEnrollments();\n });\n\n /* --------------Function Declarations-----------------------*/\n vm.updateCancel = updateCancel;\n vm.updateUpgrade = updateUpgrade;\n vm.showSpeedPayMessage = showSpeedPayMessage;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.formatTotalAmount = formatTotalAmount;\n vm.IsEnergywiseProduct = IsEnergywiseProduct;\n vm.IsCreditBaseProgram = IsCreditBaseProgram;\n vm.dropdownClicked = dropdownClicked;\n vm.changeAccount = changeAccount;\n vm.getDropdownAccounts = getDropdownAccounts;\n vm.showallaccounts = showallaccounts;\n vm.PnSRedirect = PnsRedirect;\n vm.checkBillGat = checkBillGat;\n vm.speedpayGAT = speedpayGAT;\n vm.generateProductGAT = generateProductGAT;\n /* --------------Function Definitions-----------------------*/\n\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function PnsRedirect(nodeHostName) {\n window.location.href = 'https://' + nodeHostName + '/home/products';\n }\n function checkBillGat() {\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/na/check-your-bill');\n }\n function speedpayGAT(CA) {\n vm.enrollments[0][CA].products.forEach(function (product) {\n if (product.billSectionType === \"CreditCard\") {\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/na/update-your-payment-method-with-speedpay/' + product.psname.toLowerCase().replaceAll(\" \", \"-\"));\n pushDL('de-manage-products-services', 'update-your-payment-method-with-speedpay', product.psname.toLowerCase().replaceAll(\" \", \"-\"));\n }\n });\n }\n function generateProductGAT(productname) {\n productname = productname.toLowerCase().replaceAll(\" \", \"-\");\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/' + productname);\n }\n function updateCancel(type, product, enrollment) {\n var prodName = product.psname.toLowerCase().replaceAll(\" \", \"-\");\n var workflowName = 'de-manage-products-services';\n var headline = 'manage-products-services';\n var action = 'cancel-subscription';\n var siteName = 'de/modal/';\n var productInfo = {\n bpId: enrollment.bp,\n providerContractAccountNumberList: [{\n cancellationDate: '',\n contractAccountNumber: enrollment.contractAccountNumber,\n endDate: moment().format(),\n enrollmentCode: product.enrollmentCode,\n premiseId: '',\n providerContract: '',\n saleBillingStatus: '',\n saleStatus: 'UNENROLLED',\n saleSubStatus: '',\n startDate: '',\n statusReason: '',\n name: product.psname,\n price: product.price,\n productCode: product.pscode,\n quantity: product.quantity,\n productGroup: product.psgroup,\n typeOfTheCharge: product.typeOfTheCharge\n }]\n };\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.manageProductsServices, productInfo);\n pushDL(workflowName, action, prodName);\n if (type === cancelledString) {\n modalService.cancelProductService();\n } else if (type === upgradeString) {\n modalService.upgradeProductService();\n }\n }\n function dropdownClicked() {\n vm.showDropdown = !vm.showDropdown;\n }\n function changeAccount(contractorAccount, modalvalue) {\n if (vm.dropdownaccountKeys.includes(contractorAccount)) {\n vm.dropdownaccountKeys.splice(vm.dropdownaccountKeys.indexOf(contractorAccount), 1);\n if (!vm.dropdownaccountKeys.includes(vm.showaccount)) {\n vm.dropdownaccountKeys.push(vm.showaccount);\n }\n }\n if (modalvalue) {\n if (vm.dropdownaccountKeys.length < 3) {\n vm.dropdownaccountKeys.push(vm.showaccount);\n }\n }\n vm.showaccount = contractorAccount;\n vm.showDropdown = false;\n }\n function showallaccounts() {\n vm.showDropdown = !vm.showDropdown;\n modalService.MPSviewAllAccounts(vm.showallaccountData, vm.showaccount, vm.dropdownaccounts);\n }\n $scope.$on('selectAddressFromAccountModal', function (obj, account) {\n changeAccount(account, true);\n });\n function getDropdownAccounts() {\n for (var i = 0; i < vm.toggle.length; i++) {\n vm.toggle[i] = vm.toggle[i].slice(0, -2);\n }\n vm.dropdownaccounts = _.groupBy(_.map(_globalAccountsStorage, function (subsCard) {\n return {\n contractAccountNumber: subsCard.accountNum,\n address: subsCard.address.split(/,([\\s\\S]*)/)[0],\n address2: subsCard.address.split(/,([\\s\\S]*)/)[1],\n jurisdiction: subsCard.jurisdiction.slice(0, -2),\n haveproduct: false\n };\n }), function (product) {\n return product.contractAccountNumber;\n });\n Object.keys(vm.dropdownaccounts).forEach(function (CA) {\n if (vm.toggle.includes(vm.dropdownaccounts[CA][0].jurisdiction)) {\n delete vm.dropdownaccounts[CA];\n }\n });\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts);\n if (vm.dropdownaccountKeys) {\n vm.showaccount = vm.dropdownaccountKeys[0];\n }\n vm.showallaccountData = vm.dropdownaccountKeys.slice(4);\n vm.dropdownaccountKeys = vm.dropdownaccountKeys.slice(1, 4);\n vm.totalAccounts = Object.keys(vm.dropdownaccounts).length;\n }\n function formatTotalAmount(amount) {\n var amountValue = amount.toFixed(assetService.numeric_Numbers.twoo);\n var formattedAmount = String(amountValue).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function updateUpgrade(product, enrollment, nodeHostName) {\n $rootScope.dataLayer.push({\n event: 'eec.upgrade',\n ecommerce: {\n upgrade: {\n actionField: {\n order_id: product.enrollmentCode,\n charge_type: product.typeOfTheCharge === vm.recurring ? 'recurring' : 'onetime'\n },\n products: [{\n id: product.pscode,\n quantity: product.quantity\n }]\n }\n }\n });\n var prodURL = product.upgradeRedirectionUrl ? new URL(product.upgradeRedirectionUrl).pathname : '/home/products';\n var prodName = product.psname.toLowerCase().replaceAll(\" \", \"-\");\n var workflowName = 'de-manage-products-services';\n var headline = 'manage-products-services';\n var action = 'upgrade' + '-|-' + prodURL;\n pushVPV('/vpv/de/page/' + headline + '/load/' + headline + '/' + prodName + '/upgrade');\n pushDL(workflowName, action, prodName);\n if (product.upgradeRedirectionUrl !== null && product.upgradeRedirectionUrl !== undefined) {\n var redirectURL = new URL(product.upgradeRedirectionUrl).pathname;\n window.location.href = 'https://' + nodeHostName + redirectURL;\n } else {\n window.location.href = 'https://' + nodeHostName + '/home/products';\n }\n }\n function getProductStatus(product) {\n var status = pendingString;\n if (product.Salestatus === cancelledString || product.Salestatus === rejectedString || product.Salestatus === unEnrolledString) {\n status = cancelledString;\n } else if (product.BillingStatus === billingSetupString) {\n status = vm.kwEnroll;\n }\n return status;\n }\n function getProductPrice(product) {\n var price = product.hasOwnProperty('Price') ? parseFloat(product.Price) : assetService.numeric_Numbers.zero;\n var quantity = product.hasOwnProperty('Quantity') ? product.Quantity : assetService.numeric_Numbers.zero;\n return price * quantity;\n }\n function enableCancelButton(product) {\n var enableCancel;\n if (vm.nonAuthBp === undefined && vm.nonAuthEnrollmentCode === undefined) {\n enableCancel = _.find(product.ActionArray.results, function (action) {\n return action.Action === cancelString && action.UserGroup === digitalString;\n }) ? _.find(product.ActionArray.results, function (action) {\n return action.Action === cancelString && action.UserGroup === digitalString;\n })[accessRightString] === allowedString : false;\n } else {\n enableCancel = false;\n }\n return enableCancel;\n }\n function enableUpgradeButton(product) {\n var enableUpgrade;\n if (vm.nonAuthBp === undefined && vm.nonAuthEnrollmentCode === undefined) {\n enableUpgrade = _.find(product.ActionArray.results, function (action) {\n return action.Action === upgradeString && action.UserGroup === digitalString;\n }) ? _.find(product.ActionArray.results, function (action) {\n return action.Action === upgradeString && action.UserGroup === digitalString;\n })[accessRightString] === allowedString : false;\n } else {\n enableUpgrade = false;\n }\n if (product.ProductName.includes(\"Premium\")) {\n enableUpgrade = false;\n }\n return enableUpgrade;\n }\n function getEnrollments(data) {\n return getEnrollmentsService.sitecore.getEnrollments(data).then(function (result) {\n vm.enrollmentData = {};\n if (result.results.length !== 0 && result.results[0] !== vm.bpNotFound) {\n if (result.results[0].hasOwnProperty('ContractAccountArray') && result.results[0].ContractAccountArray.results.length > assetService.numeric_Numbers.zero && result.results[0].ContractAccountArray.results[0].hasOwnProperty('EnrollmentArray')) {\n //vm.managePSSpinner = false;\n var ContractAccountArray = _.filter(result.results[0].ContractAccountArray.results, function (contractValue) {\n return contractValue.EnrollmentArray.results.length !== assetService.numeric_Numbers.zero && contractValue.EnrollmentArray.results[0].hasOwnProperty('EnrollmentCodeContract') && contractValue.AddressNumber !== \"\" && contractValue.AddressNumber !== undefined;\n });\n /// for debugging purposes to check CA with no address\n var addressCheck = _.filter(result.results[0].ContractAccountArray.results, function (contractValue) {\n return contractValue.AddressNumber === \"\" || contractValue.AddressNumber === undefined;\n });\n if (addressCheck.length > 0) console.log(\"No address found -\", addressCheck);\n if (ContractAccountArray.length > assetService.numeric_Numbers.zero) {\n enrollments = _.groupBy(_.map(ContractAccountArray, function (subsCard) {\n return {\n bp: data.BusinessPartner,\n contractAccountNumber: subsCard.ContractAccount,\n fullAddress: subsCard.HouseNumber === '' && subsCard.HouseNumberSupplement === '' && subsCard.Street === '' ? \"\".concat(subsCard.POBox, \", \").concat(subsCard.City, \", \").concat(assetService.allStates.find(function (element) {\n return element.text === subsCard.Region;\n }).value, \" \").concat(subsCard.CityPostalCode) : \"\".concat(subsCard.HouseNumber, \" \").concat(subsCard.HouseNumberSupplement, \" \").concat(subsCard.Street, \", \").concat(subsCard.City, \", \").concat(assetService.allStates.find(function (element) {\n return element.text === subsCard.Region;\n }).value, \" \").concat(subsCard.CityPostalCode),\n paymentMethod: _.find(subsCard.EnrollmentArray.results, function (payment) {\n return payment.PaymentMethod != null;\n }) ? _.find(subsCard.EnrollmentArray.results, function (payment) {\n return payment.PaymentMethod != null;\n }).PaymentMethod : null,\n totalPerGroup: subsCard.EnrollmentArray.results.filter(function (i) {\n return (i.Salestatus === 'ENROLLED' || i.Salestatus === 'AGREED') && !vm.IsEnergywiseProduct(i.ProductCode);\n }).reduce(function (prev, curr) {\n var curVal = parseFloat(curr.Price) > -1 ? parseFloat(curr.Price) : assetService.numeric_Numbers.zero;\n var curQty = curr.Quantity > -1 ? curr.Quantity : assetService.numeric_Numbers.zero;\n var priceWithQty = curVal * curQty;\n return prev + priceWithQty;\n }, assetService.numeric_Numbers.zero),\n productTypes: {\n 'CreditCard': 0,\n 'ISU': 0,\n 'CreditBase': 0\n },\n jurisdiction: assetService.allStates.find(function (element) {\n return element.text === subsCard.Region;\n }).value,\n products: function () {\n return _.map(subsCard.EnrollmentArray.results, function (product) {\n return {\n actionButtonCancel: enableCancelButton(product),\n actionButtonUpgrade: enableUpgradeButton(product),\n cancellationDate: moment(product.CancellationDate).format('MM/DD/YYYY'),\n enrollmentCode: product.EnrollmentCodeContract,\n image: product.ImageUrl ? _originUrl + product.ImageUrl : 'assets/site/img/cc-products-services/product_demo.jpg',\n // product.image parameter is mock, this will change.\n upgradeRedirectionUrl: product.P_UPGRADEURL,\n providerContract: product.ProviderContract,\n paymentMethod: product.PaymentMethod,\n pricePerItem: product.hasOwnProperty('Price') ? product.Price : '0.00',\n quantity: product.hasOwnProperty('Quantity') ? product.Quantity : '0',\n price: getProductPrice(product),\n status: getProductStatus(product),\n pscode: product.ProductCode,\n isCreditBase: IsCreditBaseProgram(product.ProductCode),\n psname: product.ProductName.replace('–', '–'),\n psgroup: product.ProductGroup,\n billingTime: product.BillingTime,\n billingStatus: product.BillingStatus,\n billSectionType: '',\n minQty: product.MinQty,\n maxQty: product.MaxQty,\n sourceOfEligibility: product.SourceOfEligibility,\n shoppingcartrelevant: product.Shoppingcartrelevant,\n transferable: product.Transferable,\n productCategory: product.ProductCategory,\n productPK: product.ProductPK,\n startDate: product.StartDate != null ? moment(product.StartDate).format('MM/DD/YYYY') : 'Date Unavailable',\n typeOfTheCharge: product.TypeOfTheCharge,\n goToPDP: _originUrl + _urlProductsAndServicesDetails + product.ProductCode\n };\n });\n }()\n };\n }), function (product) {\n return product.contractAccountNumber;\n });\n Object.keys(enrollments).forEach(function (objectkey) {\n var item = enrollments[objectkey][0];\n var findCa = _.find($rootScope.bpToCaData, function (caData) {\n return caData.AccountNum === item.contractAccountNumber;\n });\n if (findCa === undefined) {\n if (item.paymentMethod === vm.kwCreditCard) {\n item.role = vm.ownerRole;\n } else {\n item.role = vm.noRole;\n }\n } else {\n item.role = findCa.Relationship;\n }\n var enrollment = {\n bp: item.bp,\n contractAccountNumber: item.contractAccountNumber,\n role: item.role,\n fullAddress: item.fullAddress,\n startDate: item.startDate,\n paymentMethod: item.paymentMethod,\n totalPerGroup: item.totalPerGroup,\n products: item.products,\n jurisdiction: item.jurisdiction\n };\n if (item.role !== vm.noRole && !vm.toggle.includes(item.jurisdiction)) {\n vm.enrollmentData[objectkey] = enrollment;\n }\n if (Object.keys(vm.enrollmentData).length > 0) {\n vm.showaccount = Object.keys(vm.enrollmentData)[0];\n }\n if (vm.dropdownaccounts.hasOwnProperty(objectkey)) {\n vm.dropdownaccounts[objectkey][0].haveproduct = true;\n vm.dropdownaccounts[objectkey][0].productTypes = {\n 'CreditCard': 0,\n 'ISU': 0,\n 'CreditBase': 0\n };\n } else {\n var tempData = {\n contractAccountNumber: item.contractAccountNumber,\n address: item.fullAddress.split(/,([\\s\\S]*)/)[0],\n address2: item.fullAddress.split(/,([\\s\\S]*)/)[1],\n jurisdiction: item.jurisdiction,\n haveproduct: true,\n productTypes: {\n 'CreditCard': 0,\n 'ISU': 0,\n 'CreditBase': 0\n }\n };\n vm.dropdownaccounts[objectkey] = [tempData];\n }\n ;\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts).slice(0, 3);\n vm.showallaccountData = Object.keys(vm.dropdownaccounts).slice(3);\n item.products.forEach(function (product) {\n var type = product.isCreditBase ? 'creditbase' : item.paymentMethod;\n if (type === 'creditbase') {\n vm.dropdownaccounts[objectkey][0].productTypes['CreditBase'] = 1;\n } else if (type === 'ISU_BILLING') {\n vm.dropdownaccounts[objectkey][0].productTypes['ISU'] = 1;\n product.billSectionType = 'ISU';\n } else {\n vm.dropdownaccounts[objectkey][0].productTypes['CreditCard'] = 1;\n product.billSectionType = 'CreditCard';\n }\n });\n });\n }\n Object.keys(vm.dropdownaccounts).forEach(function (CA) {\n if (vm.toggle.includes(vm.dropdownaccounts[CA][0].jurisdiction)) {\n delete vm.dropdownaccounts[CA];\n }\n });\n vm.showallaccountData = Object.keys(vm.dropdownaccounts).slice(3);\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts).slice(0, 3);\n if (vm.dropdownaccountKeys.includes(vm.showaccount)) {\n vm.dropdownaccountKeys.splice(vm.dropdownaccountKeys.indexOf(vm.showaccount), 1);\n if (vm.showallaccountData.length > 0) {\n vm.dropdownaccountKeys.push(vm.showallaccountData[0]);\n vm.showallaccountData.splice(0, 1);\n }\n }\n vm.totalAccounts = Object.keys(vm.dropdownaccounts).length;\n return vm.enrollmentData;\n }\n }\n return vm.enrollmentData;\n }, function (getEnrollmentErr) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(getEnrollmentErr);\n }\n });\n }\n function getUpdateCardDetails(action, expire, externalId) {\n if (action === 'DISPLAY') {\n vm.getCardData = {\n action: action,\n businessPartnerId: vm.selectedBP,\n requestedBy: vm.currentUser.emailId !== null ? vm.currentUser.emailId : ''\n };\n }\n if (action === 'ADD') {\n vm.getCardData = {\n action: action,\n businessPartnerId: vm.selectedBP,\n requestedBy: vm.currentUser.emailId !== null ? vm.currentUser.emailId : '',\n creditCardNumber: externalId,\n creditCardType: '0006',\n expirationDate: expire\n };\n }\n return getUpdateCardDetailsService.sitecore.getUpdateCardDetails(vm.getCardData).then(function (result) {\n var allCardResult = {};\n if (result.d.CredCard_Res.results[0].Msg.Type === assetService.replyCodes.S) {\n allCardResult = {\n bpNumber: result.d.BusinessPartner,\n Action: result.d.Action,\n cardDetails: function () {\n return _.map(result.d.CredCard_Res.results, function (card) {\n return {\n creditCardID: card.CreditCardID,\n CreditCardNumber: card.CreditCardNumber,\n CreditCardType: card.CreditCardType,\n CreditCardAccountName: card.CreditCardAccountName,\n ExpirationDate: card.ExpirationDate,\n ExpirationDateStr: card.ExpirationDateStr\n };\n });\n }()\n };\n return allCardResult;\n }\n return allCardResult;\n }, function (getUpdateCardDetailsErr) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(getUpdateCardDetailsErr);\n }\n });\n }\n function updateCardDetails(cardid) {\n var updateCardData = {\n action: 'MOD_CARD',\n contractAccount: vm.selectedCAforSpeedPay,\n businessPartner: vm.selectedBP,\n cardID: cardid\n };\n return updateCardDetailsService.sitecore.updateCardDetails(updateCardData).then(function (updateresult) {\n if (updateresult.d.Messages.Type === assetService.replyCodes.S) {\n return true;\n }\n return false;\n }, function (updateCardDetailsErr) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(updateCardDetailsErr);\n }\n });\n }\n function validateExternalCardId(expirationDate, externalCardId) {\n var redirectFromSpeedpay = sessionStorageService.get(assetService.storageKeys.redirectionURL);\n vm.allCardsDataForBp = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.allCardsDataForBp);\n var externalCardDetail = _.find(vm.allCardsDataForBp.cardDetails, function (card) {\n return card.CreditCardNumber === externalCardId;\n });\n if (externalCardDetail === undefined) {\n getUpdateCardDetails('ADD', expirationDate, externalCardId).then(function (addedcard) {\n updateCardDetails(addedcard.cardDetails[0].creditCardID).then(function (updateStatusForNewCard) {\n if (updateStatusForNewCard) {\n responseNotificationsService.successResponse({\n vehicle: 'toast',\n message: 'Card details updated sucessfully',\n pageTitle: 'Manage Products and Services'\n });\n window.location.href = redirectFromSpeedpay;\n } else {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: 'Card details update failed',\n pageTitle: 'Manage Products and Services'\n });\n virtualPagePush('authenticated', 'manage-products-services', 'update-payment-method', 'update');\n window.location.href = redirectFromSpeedpay;\n }\n });\n });\n } else {\n updateCardDetails(externalCardDetail.creditCardID).then(function (updateStatusForExistingCard) {\n if (updateStatusForExistingCard) {\n responseNotificationsService.successResponse({\n vehicle: 'toast',\n message: 'Card details updated sucessfully',\n pageTitle: 'Manage Products and Services'\n });\n window.location.href = redirectFromSpeedpay;\n } else {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: 'Card details update failed',\n pageTitle: 'Manage Products and Services'\n });\n virtualPagePush('authenticated', 'manage-products-services', 'update-payment-method', 'update');\n window.location.href = redirectFromSpeedpay;\n }\n });\n }\n }\n function getPrimaryEnrollmentData(bpData) {\n var primaryData = {\n BusinessPartner: bpData.managePSData.primaryBP\n };\n getEnrollments(primaryData).then(function (primaryEnrollmentData) {\n if (primaryEnrollmentData !== null && primaryEnrollmentData !== undefined && primaryEnrollmentData !== {}) {\n Object.keys(primaryEnrollmentData).forEach(function (objectkey) {\n var item = primaryEnrollmentData[objectkey];\n var enrollment = {\n bp: item.bp,\n contractAccountNumber: item.contractAccountNumber,\n role: item.role,\n fullAddress: item.fullAddress,\n startDate: item.startDate,\n paymentMethod: item.paymentMethod,\n totalPerGroup: item.totalPerGroup,\n products: item.products\n };\n vm.enrollmentsObj[objectkey] = enrollment;\n });\n vm.enrollments.push(vm.enrollmentsObj);\n } else {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n }\n }, function (primaryEnrollErr) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(primaryEnrollErr);\n }\n });\n }\n function getAuthenticatedEnrollment() {\n var data = {};\n if (assetService.apiConfig.useLocalHost) {\n data = {\n businessPartnerId: $location.search().businessPartnerId,\n // Get Primary Bp\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpId: $location.search().cdpId // Get Primary Bp\n };\n } else {\n data = {\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId\n };\n }\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n getUserAccountsService.getUserAccounts(data).then(function (results) {\n if (results.accounts.length > assetService.numeric_Numbers.zero) {\n if (results.managePSData.uniqueBp.length > assetService.numeric_Numbers.zero) {\n var promises = [];\n _.forEach(results.managePSData.uniqueBp, function (bpValue) {\n if (bpValue !== '') {\n promises.push(getEnrollments({\n BusinessPartner: bpValue\n }));\n }\n });\n return commonService.executePromises(promises).then(function (enrollResult) {\n var filteredEnrollment = _.filter(enrollResult, function (value) {\n return Object.keys(value).length !== 0;\n });\n if (filteredEnrollment.length === 0) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n } else {\n var uniqueArray = _toConsumableArray(new Set(filteredEnrollment));\n uniqueArray.reverse();\n vm.enrollments = uniqueArray;\n vm.managePSSpinner = false;\n }\n });\n } else {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n }\n } else if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS || $rootScope.isNonNative) {\n var nonNativeBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\n var relatedNonNativeData = {\n BusinessPartner: nonNativeBP\n };\n getEnrollments(relatedNonNativeData).then(function (relatedNonNativeEnrollmentData) {\n if (_.isEmpty(relatedNonNativeEnrollmentData)) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n } else {\n vm.enrollments.push(relatedNonNativeEnrollmentData);\n vm.managePSSpinner = false;\n }\n }, function (nonNativeErr) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(nonNativeErr);\n }\n });\n } else {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n }\n });\n }\n function getNonAuthenticatedEnrollment() {\n var nonAuthData = {\n BusinessPartner: vm.nonAuthBp\n };\n getEnrollments(nonAuthData).then(function (nonAuthEnrollmentData) {\n Object.keys(nonAuthEnrollmentData).forEach(function (objectkey) {\n var item = nonAuthEnrollmentData[objectkey];\n var enrollmentData = _.find(item.products, function (product) {\n return product.enrollmentCode === vm.nonAuthEnrollmentCode;\n });\n if (enrollmentData !== undefined && item.paymentMethod === 'CREDIT_CARD') {\n var enrollment = {\n bp: item.bp,\n contractAccountNumber: item.contractAccountNumber,\n role: item.role,\n fullAddress: item.fullAddress,\n startDate: item.startDate,\n paymentMethod: item.paymentMethod,\n totalPerGroup: item.totalPerGroup,\n products: item.products\n };\n if (item.role !== vm.noRole) vm.enrollmentsObj[objectkey] = enrollment;\n }\n });\n vm.enrollments.push(vm.enrollmentsObj);\n if (_.isEmpty(vm.enrollments)) {\n vm.showNoContent = true;\n }\n vm.managePSSpinner = false;\n }, function (nonAuthErr) {\n vm.managePSSpinner = false;\n vm.showNoContent = true;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(nonAuthErr);\n }\n });\n }\n function load() {\n $rootScope.cancelServiceFailedProduct = \"\";\n if (sessionStorageService.get('cancelServiceFailCount') == null) {\n $rootScope.cancelServiceFailCount = 0;\n } else {\n $rootScope.cancelServiceFailCount = sessionStorageService.get('cancelServiceFailCount');\n }\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS || $rootScope.isNonNative) {\n $rootScope.isNonNative = true;\n }\n var location = $location.search();\n vm.nonAuthBp = $location.search().businessPartnerId;\n vm.nonAuthEnrollmentCode = $location.search().enrollmentCode;\n var action = location.action,\n externalId = location.externalId,\n expirationDate = location.expirationDate;\n if (action === assetService.strings.STOP) {\n if (externalId === undefined && expirationDate === undefined) {\n var redirectFromSpeedpay = sessionStorageService.get(assetService.storageKeys.redirectionURL);\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: 'Speedpay redirection failure',\n pageTitle: 'Manage Products and Services'\n });\n window.location.href = redirectFromSpeedpay;\n } else {\n vm.selectedCAforSpeedPay = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay);\n var _dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n if (_dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || _dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS || $rootScope.isNonNative) {\n vm.selectedBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\n } else {\n vm.selectedBP = sessionStorageService.get(assetService.storageKeys.managePSBPNumber);\n }\n var expirationDateArr = expirationDate.split('/');\n var monthEndDate = new Date(expirationDateArr[1], expirationDateArr[0], assetService.numeric_Numbers.zero);\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\n validateExternalCardId(monthEndDate, externalId);\n }\n } else if (vm.nonAuthBp === undefined && vm.nonAuthEnrollmentCode === undefined) {\n sessionStorageService.set(assetService.storageKeys.redirectionURL, _originHref);\n getAuthenticatedEnrollment();\n } else {\n broadcastService.headerSwitch(assetService.strings.HEADER.LOGO);\n sessionStorageService.set(assetService.storageKeys.relatedBPNumber, vm.nonAuthBp);\n sessionStorageService.set(assetService.storageKeys.redirectionURL, _originHref);\n getNonAuthenticatedEnrollment();\n }\n getDropdownAccounts();\n pushVPV('/vpv/de/page/manage-products-services/load/manage-products-services');\n }\n function showSpeedPayMessage(currentCA, currentBP) {\n sessionStorageService.set(assetService.storageKeys.managePSBPNumber, currentBP);\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay, currentCA);\n modalService.updateSpedpayPaymentMethod();\n }\n function virtualPagePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.attributePush(arrayElements);\n }\n function IsEnergywiseProduct(productCode) {\n vm.isEnergywiseProduct = false;\n if (vm.EnergywiseProductList) {\n vm.EnergywiseProductArray = vm.EnergywiseProductList.split(',');\n vm.isEnergywiseProduct = vm.EnergywiseProductArray.indexOf(productCode.trim()) > -1;\n }\n return vm.isEnergywiseProduct;\n }\n function IsCreditBaseProgram(productCode) {\n if (vm.CreditBaseProductList) {\n vm.CreditBaseProductArray = vm.CreditBaseProductList.split(',');\n return vm.CreditBaseProductArray.indexOf(productCode.trim()) > -1;\n }\n return false;\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n _globalAccountsStorage = sessionStorageService.get(assetService.storageKeys.globalAccounts.accounts);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.currentUser, vm.currentUser);\n load();\n }, function (initError) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(initError);\n }\n });\n } else {\n load();\n }\n }\n init();\n}\napp.controller('mpOneTimePurchasesController', mpOneTimePurchasesController);\nmpOneTimePurchasesController.$inject = ['$log', 'updateCancelEnrollmentService', 'assetService', '$rootScope', 'apiApigeeConfigService', 'sessionStorageService', '$scope'];\nfunction mpOneTimePurchasesController($log, updateCancelEnrollmentService, assetService, $rootScope, apiApigeeConfigService, sessionStorageService, $scope) {\n /* -----------------------Scope Vars---------------------------*/\n var vm = this;\n\n /* -----------------------Global Vars---------------------------*/\n vm.noEnrollments = true;\n vm.oneTimeCards = [];\n\n /* --------------Watchers-----------------------*/\n $scope.$on(\"refresh\", function (index) {\n load();\n });\n\n /* --------------Function Declarations-----------------------*/\n vm.updateCancel = updateCancel;\n\n /* --------------Function Definitions-----------------------*/\n\n function updateCancel(value, index) {\n updateCancelEnrollmentService.sitecore.updateCancel({\n contractAccountNumber: vm.subscriptionCards[index].contractAccountNumber,\n isuBPID: vm.subscriptionCards[index].bp,\n enrollmentCode: vm.subscriptionCards[index].enrollmentCode,\n providerContract: vm.subscriptionCards[index].providerContract,\n saleStatus: value\n }).then(function (results) {\n $rootScope.$broadcast(\"UDEnrollment\");\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n var enrollmentData = sessionStorageService.get('enrollmentData');\n if (enrollmentData) {\n vm.oneTimeCards = enrollmentData.oneTime;\n } else {\n vm.noEnrollments = true;\n }\n }\n\n /* ---------------Initialization-------------------*/\n\n function init() {\n load();\n }\n init();\n}\n// eslint-disable-next-line no-use-before-define\napp.controller('mpSubscriptionsController', mpSubscriptionsController);\n// eslint-disable-next-line no-use-before-define\nmpSubscriptionsController.$inject = ['$log', 'updateCancelEnrollmentService', 'assetService', '$rootScope', 'apiApigeeConfigService', 'sessionStorageService', '$scope', 'speedpayService', 'genericHelperService'];\nfunction mpSubscriptionsController($log, updateCancelEnrollmentService, assetService, $rootScope, apiApigeeConfigService, sessionStorageService, $scope, speedpayService, genericHelperService) {\n var vm = this;\n vm.subscriptionCards = [];\n vm.paymentMethodUpdate = assetService.ManageProductAndServices.paymentMethodUpdate;\n vm.speedpay = function (subscription) {\n speedpayService.getSpeedpayUrl({\n action: 'start',\n login: subscription.bp,\n speedframeCallbackUrl: true\n }).then(function (result) {\n genericHelperService.openPopup(result, window, '900', '600', continueMPS, $scope);\n });\n };\n function continueMPS(option) {/*empty function*/}\n vm.updateCancel = function (value, index) {\n updateCancelEnrollmentService.sitecore.updateCancel({\n contractAccountNumber: vm.subscriptionCards[index].contractAccountNumber,\n isuBPID: vm.subscriptionCards[index].bp,\n enrollmentCode: vm.subscriptionCards[index].enrollmentCode,\n providerContract: vm.subscriptionCards[index].providerContract,\n saleStatus: value\n }).then(function (results) {\n $rootScope.$broadcast('UDEnrollment');\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n function load() {\n var enrollmentData = sessionStorageService.get('enrollmentData');\n if (enrollmentData) {\n vm.subscriptionCards = enrollmentData.subscriptions;\n }\n }\n $scope.$on('refresh', function (index) {\n load();\n });\n function init() {\n load();\n }\n // eslint-disable-next-line no-undef\n init();\n}\napp.controller('ModalManageNotificationPreference', ModalManageNotificationPreference);\nfunction ModalManageNotificationPreference() {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.changeNotification = changeNotification;\n vm.closeModalChange = closeModalChange;\n\n /* --------------Function Definitions-----------------------*/\n function changeNotification(preference) {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function closeModalChange(preference) {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {/*empty function*/};\n\n // init();\n}\napp.controller('NotificationPreferenceController', NotificationPreferenceController);\nNotificationPreferenceController.$inject = ['$log', 'commonService', '$state', '$scope', 'sessionStorageService', 'assetService', 'readAndDerivePreferencesService', 'getAccountEnrollmentEligibilityStatusService', 'getLatestConsentService', 'accountSearchService', 'NotificationPreferencesHelperService', 'readConsentService', 'getEligibilityForAutoReloadService', 'notificationPreferencesAssetsService', '$rootScope', 'umcModalService', 'commongaTaggingService', 'genericHelperService', 'broadcastService', '$timeout', '$interval'];\nfunction NotificationPreferenceController($log, commonService, $state, $scope, sessionStorageService, assetService, readAndDerivePreferencesService, getAccountEnrollmentEligibilityStatusService, getLatestConsentService, accountSearchService, notificationHelper, readConsentService, getEligibilityForAutoReloadService, notificationPreferencesAssetsService, $rootScope, umcModalService, commongaTaggingService, genericHelperService, broadcastService, $timeout, $interval) {\n /* Scope Vars */\n var vm = this;\n vm.tab = 0;\n vm.loadingSpinner = true;\n vm.notificationPreferencesReady = false;\n vm.paperlessBilling = {};\n vm.autoReload = {};\n vm.autopay = {};\n vm.gatConstants = {};\n $rootScope.acceptedVersion = '';\n $rootScope.UniLatestVersion = '';\n $rootScope.paperlessCTA = '';\n var _strings = notificationPreferencesAssetsService.strings;\n var _ineligible = _strings.status.Ineligible;\n var _elbill = _strings.programs.ELBILL;\n var _autopay = _strings.programs.AUTPAY;\n var _dirdeb = _strings.programs.DIRDEB;\n var _enrolled = _strings.status.Enrolled;\n var _serviceName = _strings.Paperless_Billing;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n var tabs = [_strings.tabs.outages, _strings.tabs.billing, _strings.tabs.additionalOptions, _strings.tabs.payment, _strings.tabs.serviceOrders];\n var currentTab = tabs[0];\n\n /* Global Vars */\n var outagePreferences = [];\n var billingPreferences = [];\n var paymentsPreferences = [];\n var serviceOrdersPreferences = [];\n var additionalOptionsPreferences = [];\n var globalSelectedAccountEmail = '';\n var accountData = {};\n $scope.roleBase = {};\n $scope.currComm = {\n phones: [],\n emails: []\n };\n var sessionStorageAddedInterval;\n $rootScope.outagesBanner = {};\n $rootScope.billingBanner = {};\n $rootScope.optionsBanner = {};\n $rootScope.umcBanner = {};\n $rootScope.ohioBanner = {};\n $rootScope.paperlessSaveErrorCount = 0;\n $rootScope.updateError = false;\n $rootScope.billingError = false;\n $rootScope.optionsError = false;\n /* Function declarations */\n vm.isSet = isSet;\n vm.selectedTab = selectedTab;\n vm.setGatConstants = setGatConstants;\n vm.gatTabNavigation = gatTabNavigation;\n\n /* Function definitions */\n function groupById(preferences, subGroupId, subId) {\n var transformedPref = {};\n var notifications = [];\n var SGIdCollection = [];\n transformedPref.id = subId;\n transformedPref.groupId = subGroupId;\n SGIdCollection = preferences.filter(function (element) {\n return element.SubGroupID === subGroupId && element.SubID === subId;\n });\n if (SGIdCollection.length > 0) {\n SGIdCollection.forEach(function (element) {\n var prefIdValid = /^([0-9])*$/;\n if (element.Comm_Medium !== 'DIST' && !prefIdValid.test(element.PrefID) || element.Autoenrolled === 'X' || subId === _strings.preferences.RATE_REVW || subId === _strings.preferences.BILLPRINT) {\n var currentPhone = element.Medium_Val;\n var currentChannel = element.Comm_Medium;\n if (subId === _strings.preferences.BILL_DEL) {\n transformedPref.checkedPDFOption = !!(currentChannel === _strings.channels.EBLP);\n element.Comm_Medium = _strings.channels.MAIL;\n transformedPref.Comm_Medium = currentChannel;\n } else if (currentChannel !== _strings.channels.MAIL) {\n element.Medium_Val = currentPhone;\n }\n if (subId === _strings.preferences.PREPAY) {\n if (element.Pref_Remaining_Days.results.length > 0) {\n transformedPref.remainingDays = element.Pref_Remaining_Days.results.map(function (element) {\n return element.NumberOfDays;\n });\n } else {\n transformedPref.remainingDays = [];\n }\n transformedPref.prefId = element.PrefID;\n }\n if (subId === _strings.preferences.PMT_RMDR) {\n if (element.SubThersholdvar) {\n var lastPos = element.SubThersholdvar.length - 1;\n transformedPref.subThersholdvar = element.SubThersholdvar[lastPos];\n transformedPref.subThersholdvarModel = element.SubThersholdvar[lastPos];\n transformedPref.subThersholdvarText = \"\".concat(transformedPref.subThersholdvar, \" \").concat(_strings.Days);\n } else {\n transformedPref.subThersholdvar = '';\n }\n transformedPref.prefId = element.PrefID;\n }\n if (subId === _strings.preferences.RATE_REVW) {\n transformedPref.rateReviewType = element.RateReview;\n transformedPref.prefId = element.PrefID;\n }\n if (subId === _strings.preferences.BILLPRINT) {\n if (element.FontSize === _strings.font_size.DETA || element.FontSize === '') {\n transformedPref.billFormatType = _strings.font_type.detailed;\n }\n if (element.FontSize === _strings.font_size.COND) {\n transformedPref.billFormatType = _strings.font_type.condensed;\n }\n if (element.FontSize === _strings.font_size.LARG) {\n transformedPref.billFormatType = _strings.font_type.large;\n }\n if (element.FontSize === _strings.font_size.METR) {\n transformedPref.billFormatType = _strings.font_type.braille;\n }\n }\n notifications.push(function (_ref) {\n var channel = _ref.Comm_Medium,\n communication = _ref.Medium_Val,\n prefId = _ref.PrefID;\n return {\n channel: channel,\n communication: communication,\n prefId: prefId\n };\n }(element));\n }\n });\n if (notifications.length > 0) {\n transformedPref.enrolled = true;\n transformedPref.previousEnrolled = true;\n transformedPref.notifications = notifications;\n } else {\n transformedPref.enrolled = false;\n transformedPref.previousEnrolled = false;\n }\n } else {\n transformedPref.enrolled = false;\n transformedPref.previousEnrolled = false;\n }\n transformedPref.isCardAutoEnrolled = !!SGIdCollection.filter(function (x) {\n return x.Autoenrolled === 'X';\n }).length;\n return transformedPref;\n }\n function dataTransformation(preferences, isPrepaid, relatedBP) {\n if (!relatedBP) {\n var accountDataInSession = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n relatedBP = accountDataInSession.relatedBusinessPartnerId ? accountDataInSession.relatedBusinessPartnerId : accountDataInSession.businessPartnerId;\n }\n var currentPref = preferences.d.results[0].Partner_Preference.results.filter(function (x) {\n return x.AssociatedBP === relatedBP;\n });\n if (vm.isPrepaid) {\n billingPreferences.push(groupById(currentPref, _strings.preferences.BILLPAY, _strings.preferences.BILL_NOTIF));\n billingPreferences.push(groupById(currentPref, _strings.preferences.BILLPAY, _strings.preferences.PAY_CONFRM));\n billingPreferences.push(groupById(currentPref, _strings.preferences.PREPAY, _strings.preferences.PREPAY));\n billingPreferences.push(groupById(currentPref, _strings.preferences.PREPAY, _strings.preferences.PPY_AUTO));\n outagePreferences.push(groupById(currentPref, _strings.preferences.OUTAGE, _strings.preferences.ACTIVE_OUT));\n outagePreferences.push(groupById(currentPref, _strings.preferences.SRVO_APPT, _strings.preferences.SRVO_NOT));\n outagePreferences.push(groupById(currentPref, _strings.preferences.SRVO_APPT, _strings.preferences.APPT_REM));\n outagePreferences.push(groupById(currentPref, _strings.preferences.PREPAY, _strings.preferences.PPY_DISC));\n additionalOptionsPreferences.push(groupById(currentPref, _strings.preferences.ACCT_MGMT, _strings.preferences.ENRL_PRCHS));\n } else {\n outagePreferences.push(groupById(currentPref, _strings.preferences.OUTAGE, _strings.preferences.ACTIVE_OUT));\n outagePreferences.push(groupById(currentPref, _strings.preferences.SRVO_APPT, _strings.preferences.SRVO_NOT));\n outagePreferences.push(groupById(currentPref, _strings.preferences.SRVO_APPT, _strings.preferences.APPT_REM));\n billingPreferences.push(groupById(currentPref, _strings.preferences.PAPERLESS, _strings.preferences.BILL_DEL));\n billingPreferences.push(groupById(currentPref, _strings.preferences.BILLPAY, _strings.preferences.BILL_NOTIF));\n billingPreferences.push(groupById(currentPref, _strings.preferences.BILLPAY, _strings.preferences.PAY_CONFRM));\n billingPreferences.push(groupById(currentPref, _strings.preferences.PAPERLESS, _strings.preferences.PMT_RMDR));\n billingPreferences.push(groupById(currentPref, _strings.preferences.AUTOPAY, _strings.preferences.APP_SCHED));\n billingPreferences.push(groupById(currentPref, _strings.preferences.AUTOPAY, _strings.preferences.APP_UPDT));\n billingPreferences.push(groupById(currentPref, _strings.preferences.PAPERLESS, _strings.preferences.PMT_UPDT));\n billingPreferences.push(groupById(currentPref, '', _strings.preferences.RATE_REVW));\n billingPreferences.push(groupById(currentPref, '', _strings.preferences.BILLPRINT));\n sessionStorageService.set(assetService.notifPref.sessionStorage.updatePreferencesave, billingPreferences);\n paymentsPreferences.push(groupById(currentPref, _strings.preferences.BILLPAY, _strings.preferences.PAY_REMIND));\n additionalOptionsPreferences.push(groupById(currentPref, _strings.preferences.ACCT_MGMT, _strings.preferences.ENRL_PRCHS));\n }\n }\n function getPreferences(accountData, isPrepaid) {\n outagePreferences = [];\n billingPreferences = [];\n additionalOptionsPreferences = [];\n var responseTmp;\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(accountData).then(function (result) {\n responseTmp = result;\n if (result.d.results[0].Partner_Contact.results[0]) {\n var addressNumber = result.d.results[0].Partner_Contact.results[0].AddrNumber;\n sessionStorageService.set(assetService.notifPref.sessionStorage.commOpt.addressNumber, addressNumber);\n var phoneNumbers = _.map(result.d.results[0].Partner_Contact.results, function (phone) {\n return phone.PhoneNumber;\n });\n sessionStorageService.set(assetService.notifPref.sessionStorage.commOpt.notifPhones, phoneNumbers);\n }\n dataTransformation(result, vm.isPrepaid, accountData.relatedBusinessPartnerId);\n sessionStorageService.set(assetService.notifPref.sessionStorage.outage, outagePreferences);\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, billingPreferences);\n sessionStorageService.set(assetService.notifPref.sessionStorage.payments, paymentsPreferences);\n sessionStorageService.set(assetService.notifPref.sessionStorage.servOrd, serviceOrdersPreferences);\n sessionStorageService.set(assetService.notifPref.sessionStorage.addOpt, additionalOptionsPreferences);\n return result;\n }).catch(function (error) {\n broadcastService.failedStateNotificationTriggered(true);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n $scope.$on(assetService.events.getCurrentstatus, function (event, a) {\n // $scope.$on(assetService.events.getCurrentstatus, (data) => {\n dataTransformation(a, globalAccountInfo.accountSelected.prepaid);\n });\n $scope.$on(assetService.events.refreshPreferences, function () {\n //vm.loadingSpinner = true;\n $timeout(function () {\n commonService.executePromises([getPBEligibleStatus(accountData), getPreferences(accountData, vm.isPrepaid), getCommMedium(accountData)]).then(function () {\n //vm.loadingSpinner = false;\n $state.go(currentTab, {}, {\n reload: true\n });\n });\n }, 1000);\n });\n function getCommMedium(accountData) {\n var accountDataCpy = genericHelperService.notReferenceObjects(accountData);\n if (accountDataCpy.relatedBusinessPartnerId) accountDataCpy.businessPartnerId = accountDataCpy.relatedBusinessPartnerId;\n accountDataCpy.dataSource = assetService.strings.ISU;\n delete accountDataCpy.contractAccountId;\n delete accountDataCpy.globalSelectedAccountEmail;\n return accountSearchService.sitecore.accountSearch(accountDataCpy).then(function (result) {\n var emails = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results;\n var emailAccount = _.find(emails, function (email) {\n return email.Primary;\n });\n sessionStorageService.set(assetService.notifPref.sessionStorage.email, emailAccount);\n var phonesRoot = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToPh;\n var phonesTxt = phonesRoot.results.map(function (phone) {\n return phone.PhoneNumber;\n });\n var phonesVal = phonesRoot.results.map(function (phone) {\n return \"\".concat(phone.AddressNumber).concat(phone.ConsNumber);\n });\n var phonesTextEnabled = phonesRoot.results.map(function (phone) {\n return phone.TextEnabled;\n });\n var emailsTxt = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.map(function (email) {\n return email.EmailAddress;\n });\n var emailsVal = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.map(function (email) {\n return \"\".concat(email.AddressNumber).concat(email.ConsNumber);\n });\n $scope.currComm.phones = notificationHelper.createDrop(phonesVal, phonesTxt, true, phonesTextEnabled);\n $scope.currComm.emails = notificationHelper.createDrop(emailsVal, emailsTxt, false);\n $scope.currComm.phones.push({\n text: assetService.notifPref.addNewComm.phone,\n value: assetService.notifPref.addNewComm.phone\n });\n $scope.currComm.emails.push({\n text: assetService.notifPref.addNewComm.email,\n value: assetService.notifPref.addNewComm.email\n });\n return result;\n });\n }\n function getEligibilityForAutoReload(accountData) {\n var paramData = {\n contractAccountId: accountData.contractAccountId,\n action: assetService.events.GET_ELIG\n };\n return getEligibilityForAutoReloadService.sitecore.getEligibilityForAutoReload(paramData).then(function (result) {\n var status = result.d.AREligibility_NAV.Eligible.toUpperCase();\n vm.autoReload.status = status === _enrolled.toUpperCase();\n sessionStorageService.set(assetService.notifPref.sessionStorage.autoReload, vm.autoReload);\n return result;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n // Get Eligible Paperless Billing Component to display it or not\n function getPBEligibleStatus(accountData) {\n var paramData = {\n contractAccountId: accountData.contractAccountId,\n simpleFormat: true\n };\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(paramData).then(function (result) {\n vm.allPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\n var eBill = _.find(vm.allPrograms, function (element) {\n return element.ProgName === _elbill;\n });\n vm.paperlessBilling.status = eBill.EligibilityStatus === _enrolled;\n vm.paperlessBilling.isEligible = eBill.EligibilityStatus !== _ineligible;\n vm.paperlessBilling.contractAccountId = paramData.contractAccountId;\n vm.paperlessBilling.serviceName = _serviceName;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n var autopay = _.find(vm.allPrograms, function (element) {\n return element.ProgName === _autopay;\n });\n if (autopay.EligibilityStatus !== _enrolled) {\n autopay = _.find(vm.allPrograms, function (element) {\n return element.ProgName === _dirdeb;\n });\n }\n vm.autopay.status = autopay.EligibilityStatus === _enrolled;\n vm.autopay.isEligible = autopay.EligibilityStatus !== _ineligible;\n vm.autopay.contractAccountId = paramData.contractAccountId;\n vm.autopay.serviceName = _autopay;\n sessionStorageService.set(assetService.notifPref.sessionStorage.autopay, vm.autopay);\n return result;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function UMCReadConsent(data) {\n return readConsentService.sitecore.readConsent(data).then(function (result) {\n $rootScope.newMajorVersion = false;\n $rootScope.UniLatestVersion = result.d.UniLatestVersion;\n $rootScope.latestVersion = result.d.UniLatestVersion === '' ? '0.00' : result.d.UniLatestVersion;\n var umcVersions = getUMCVersions(result);\n sessionStorageService.set(assetService.notifPref.sessionStorage.umcCard, umcVersions);\n if (umcVersions.lastEvent[0].consentStatus === 'IGN' || umcVersions.lastEvent[0].consentStatus === 'DEC') {\n $rootScope.newMajorVersion = true;\n } else if (umcVersions.lastEvent[0].consentStatus === 'ACC') {\n $rootScope.newMajorVersion = false;\n }\n return result;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n // -Moving this code to umc-modal-service.js file regarding UMC <--Start-->\n\n // function getUMCLatestConsent(data) {\n // console.log(data);\n // return getLatestConsentService.sitecore.getLatestConsent(data)\n // .then(\n // (result) => {\n // sessionStorageService.set(assetService.notifPref.sessionStorage.lastestConsent, result.consentDTO ? result.consentDTO : '')\n // }\n // )\n // }\n\n // <--END-->\n\n function getUMCVersions(result) {\n var dates = [];\n var acceptedConsent = _.map(result.d.ReadConReqResNav.results, function (result) {\n return {\n consentCode: result.AcceptConsentCode,\n consentStatus: result.AcceptConsentStatus,\n version: result.AcceptVersion,\n consentDate: moment(result.AcceptConsentDate),\n consentDateTime: moment(result.AcceptConsentDateStr.concat(\"T\".concat(result.AcceptConsentTime.slice(2, 4), \":\").concat(result.AcceptConsentTime.slice(5, 7), \":\").concat(result.AcceptConsentTime.slice(8, 10)))),\n type: _strings.consent_type.Accept\n };\n });\n if (result.d.ReadConReqResNav.results.length > 0) {\n acceptedConsent.sort(function (a, b) {\n return Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime);\n });\n $rootScope.acceptedVersion = acceptedConsent[acceptedConsent.length - 1].version.trim();\n dates.push(acceptedConsent[acceptedConsent.length - 1]);\n } else {\n acceptedConsent.consentDate = [];\n acceptedConsent.consentDateTime = [];\n }\n var declinededConsent = _.map(result.d.ReadDeclineReqResNav.results, function (result) {\n return {\n consentCode: result.DeclineConsentCode,\n consentStatus: result.DeclineConsentStatus,\n version: result.DeclineVersion,\n consentDate: moment(result.DeclineConsentDate),\n consentDateTime: moment(result.DeclineConsentDateStr.concat(\"T\".concat(result.DeclineConsentTime.slice(2, 4), \":\").concat(result.DeclineConsentTime.slice(5, 7), \":\").concat(result.DeclineConsentTime.slice(8, 10)))),\n type: _strings.consent_type.Decline\n };\n });\n if (result.d.ReadDeclineReqResNav.results.length > 0) {\n declinededConsent.sort(function (a, b) {\n return Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime);\n });\n dates.push(declinededConsent[declinededConsent.length - 1]);\n } else {\n declinededConsent.consentDate = [];\n declinededConsent.consentDateTime = [];\n }\n var ignoredConsent = _.map(result.d.ReadIgnoreReqResNav.results, function (result) {\n return {\n consentCode: result.IgnoreConsentCode,\n consentStatus: result.IgnoreConsentStatus,\n version: result.IgnoreVersion,\n consentDate: moment(result.IgnoreConsentDate),\n consentDateTime: moment(result.IgnoreConsentDateStr.concat(\"T\".concat(result.IgnoreConsentTime.slice(2, 4), \":\").concat(result.IgnoreConsentTime.slice(5, 7), \":\").concat(result.IgnoreConsentTime.slice(8, 10)))),\n type: _strings.consent_type.Ignore\n };\n });\n if (result.d.ReadIgnoreReqResNav.results.length > 0) {\n ignoredConsent.sort(function (a, b) {\n return Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime);\n });\n dates.push(ignoredConsent[ignoredConsent.length - 1]);\n } else {\n ignoredConsent.consentDate = [];\n ignoredConsent.consentDateTime = [];\n }\n if (dates.length > 0) {\n dates.sort(function (a, b) {\n return Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime);\n });\n }\n var umc = {\n currentVersion: dates.length > 0 ? dates[dates.length - 1].version.trim() : result.d.CurrentLatestVersion,\n ACC: acceptedConsent,\n DEC: declinededConsent,\n IGN: ignoredConsent,\n lastEvent: dates.length > 0 ? [dates.pop()] : []\n };\n return umc;\n }\n function load() {\n if (globalSelectedAccount.accountNum && globalSelectedAccount.primaryBp) {\n var contractAccountId = globalSelectedAccount.accountNum;\n var businessPartnerId = globalSelectedAccount.primaryBp;\n var _globalSelectedAccoun = globalSelectedAccount,\n jurisdiction = _globalSelectedAccoun.jurisdiction;\n var relatedBusinessPartnerId = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n accountData = {\n contractAccountId: contractAccountId,\n businessPartnerId: businessPartnerId,\n relatedBusinessPartnerId: relatedBusinessPartnerId,\n globalSelectedAccountEmail: globalSelectedAccountEmail,\n jurisdiction: jurisdiction\n };\n sessionStorageService.set(assetService.notifPref.sessionStorage.accountData, accountData);\n } else {\n accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n }\n var tabId = sessionStorageService.get(assetService.notifPref.sessionStorage.tabId);\n var fromOhioChoice = sessionStorageService.get(assetService.notifPref.sessionStorage.fromOhioChoice);\n if (fromOhioChoice === 'true' || fromOhioChoice === 'cancel') {\n currentTab = tabs[2];\n vm.tab = 2;\n isSet(2);\n } else {\n selectedTab(tabId || 0);\n }\n sessionStorageService.delete(assetService.notifPref.sessionStorage.outage);\n sessionStorageService.delete(assetService.notifPref.sessionStorage.billing);\n sessionStorageService.delete(assetService.notifPref.sessionStorage.addOpt);\n sessionStorageService.delete(assetService.notifPref.sessionStorage.tabId);\n sessionStorageService.delete('Preferences_BannerData');\n vm.notificationPreferencesReady = true;\n vm.isPrepaid = globalAccountInfo.accountSelected.prepaid;\n $scope.isPrepaid = vm.isPrepaid;\n var promises = [];\n if (vm.isPrepaid) {\n // -Removed getUMCLatestConsent(accountData) from below Line regarding UMC\n\n // promises = [getCommMedium(accountData), getPreferences(accountData, isPrepaid), getPBEligibleStatus(accountData), UMCReadConsent(accountData), getUMCLatestConsent(accountData), getEligibilityForAutoReload(accountData)];\n promises = [getPBEligibleStatus(accountData), UMCReadConsent(accountData), getEligibilityForAutoReload(accountData)];\n } else {\n // -Removed getUMCLatestConsent(accountData) from below Line regarding UMC\n\n // promises = [getCommMedium(accountData), getPreferences(accountData, isPrepaid), getPBEligibleStatus(accountData), UMCReadConsent(accountData), getUMCLatestConsent(accountData),];\n promises = [getPBEligibleStatus(accountData), UMCReadConsent(accountData)];\n }\n commonService.executePromises(promises).then(function () {\n getPreferences(accountData, vm.isPrepaid).then(function () {\n getCommMedium(accountData).then(function () {\n sessionStorageAddedInterval = $interval(function () {\n $interval.cancel(sessionStorageAddedInterval);\n loadState();\n }, 500);\n });\n });\n });\n }\n function loadState() {\n vm.loadingSpinner = false;\n $state.go(currentTab, {}, {\n reload: true\n });\n getRole();\n }\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function selectedTab(tabId) {\n $rootScope.paperlessSaveErrorCount = $rootScope.paperlessSaveErrorCount < 3 ? 0 : $rootScope.paperlessSaveErrorCount;\n currentTab = tabs[tabId];\n vm.tab = tabId;\n var billingData = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n if (currentTab == 'notificationPreferences.billing' || vm.tab == 1) {\n var paperlessBillingStatus = sessionStorageService.get(assetService.notifPref.sessionStorage.paperlessBilling);\n if (paperlessBillingStatus !== null && paperlessBillingStatus !== undefined && billingData && !billingData[0].enrolled) {\n paperlessBillingStatus.status = paperlessBillingStatus.realStatus;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, paperlessBillingStatus);\n }\n }\n }\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n $scope.roleBase.ownerRole = true;\n break;\n case assetService.roles.admin:\n $scope.roleBase.adminRole = true;\n break;\n case assetService.roles.viewer:\n $scope.roleBase.viewerRole = true;\n break;\n default:\n $scope.roleBase.viewerRole = true;\n }\n }\n function setGatConstants(businessFunction) {\n vm.gatConstants.businessFunction = businessFunction;\n var tabTitle = document.title;\n sessionStorageService.set(assetService.notifPref.sessionStorage.businessFunction, tabTitle);\n $scope.sharedCtrl.dataCodeTreatment.h1 = businessFunction;\n }\n function gatTabNavigation(action) {\n notificationHelper.sendEventAttribute({\n workFlow: vm.gatConstants.businessFunction,\n buttonText: action,\n headline: 'tab navigation'\n });\n commongaTaggingService.virtualPagePush([vm.gatConstants.businessFunction, action]);\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n outagePreferences = [];\n billingPreferences = [];\n paymentsPreferences = [];\n serviceOrdersPreferences = [];\n additionalOptionsPreferences = [];\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty(_strings.accountSelected)) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\n }\n vm.loadingSpinner = true;\n load();\n });\n\n /* ---------------Initialization-------------------*/\n function init() {\n $rootScope.channel = '010';\n }\n init();\n}\napp.factory('notificationPreferencesAssetsService', function () {\n return {\n strings: {\n accountSelected: 'accountSelected',\n active: 'active',\n C: 'C',\n channels: {\n EBIL: 'EBIL',\n EBLP: 'EBLP',\n MAIL: 'MAIL'\n },\n channels_type: {\n phones: 'phones',\n emails: 'emails'\n },\n consent_type: {\n Accept: 'Accept',\n Decline: 'Decline',\n Ignore: 'Ignore'\n },\n Days: 'Days',\n ENROLL: 'ENROLL',\n font_size: {\n COND: 'COND',\n DETA: 'DETA',\n LARG: 'LRGE',\n METR: 'METR'\n },\n font_type: {\n condensed: 'condensed',\n detailed: 'detailed',\n large: 'large',\n braille: 'braille'\n },\n jurisdictions: {\n FL01: 'FL01',\n NC01: 'NC01',\n SC01: 'SC01'\n },\n Paperless_Billing: 'Paperless Billing',\n preferences: {\n ACCT_MGMT: 'ACCT_MGMT',\n ACTIVE_OUT: 'ACTIVE_OUT',\n APPT_REM: 'APPT_REM',\n APP_SCHED: 'APP_SCHED',\n APP_UPDT: 'APP_UPDT',\n AUTOPAY: 'AUTOPAY',\n BILLPAY: 'BILLPAY',\n BILLPRINT: 'BILLPRINT',\n BILL_DEL: 'BILL_DEL',\n BILL_NOTIF: 'BILL_NOTIF',\n ENRL_PRCHS: 'ENRL_PRCHS',\n OUTAGE: 'OUTAGE',\n PAPERLESS: 'PAPERLESS',\n PREPAY: 'PREPAY',\n PAY_CONFRM: 'PAY_CONFRM',\n PAY_REMIND: 'PAY_REMIND',\n PMT_RMDR: 'PMT_RMDR',\n PMT_UPDT: 'PMT_UPDT',\n PPY_AUTO: 'PPY_AUTO',\n PPY_DISC: 'PPY_DISC',\n RATE_REVW: 'RATE_REVW',\n SRVO_APPT: 'SRVO_APPT',\n SRVO_NOT: 'SRVO_NOT'\n },\n preferences_actions: {\n ADD_PHN: 'ADD_PHN',\n PREF_DELETE: 'PREF_DELETE',\n PREF_CREATE: 'PREF_CREATE',\n PREF_UPDATE: 'PREF_UPDATE'\n },\n programs: {\n ELBILL: 'ELBILL',\n AUTPAY: 'AUTPAY',\n DIRDEB: 'DIRDEB'\n },\n PT00H00M00S: 'PT00H00M00S',\n rr: 'rr',\n rate_review_type: {\n A: 'A'\n },\n status: {\n Ineligible: 'Ineligible',\n Enrolled: 'Enrolled'\n },\n tabs: {\n outages: 'notificationPreferences.outages',\n billing: 'notificationPreferences.billing',\n payment: 'notificationPreferences.payment',\n serviceOrders: 'notificationPreferences.serviceOrders',\n additionalOptions: 'notificationPreferences.additionalOptions'\n },\n prefChannelFilterConfig: {\n ENRL_PRCHS: ['VOIC'],\n PMT_RMDR: ['VOIC', 'TXT'],\n PMT_UPDT: ['VOIC', 'TXT'],\n BILL_DEL: ['VOIC', 'TXT'],\n BILL_NOTIF: ['VOIC']\n },\n cardToggleMapping: {\n autoEnrolled: ['ACTIVE_OUT', 'SRVO_NOT', 'SRVO_APPT', 'BILL_NOTIF', 'PAY_CONFRM', 'ENRL_PRCHS', 'PPY_DISC', 'PREPAY', 'PPY_AUTO'],\n unEnrollable: ['SRVO_NOT', 'BILL_NOTIF', 'ENRL_PRCHS', 'PPY_DISC', 'PREPAY', 'PPY_AUTO']\n }\n }\n };\n});\n/* eslint-disable id-length */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-undef */\nfunction ohioChoiceConsentController($scope, $window, $timeout, $rootScope, $document, cookiesService, updateSupplierDetailsService, getSupplierDetailsService, modalService, sessionStorageService, assetService, commongaTaggingService, broadcastService) {\n var vm = $scope;\n vm.ohioPageItems = [{\n value: 10,\n text: 10\n }, {\n value: 20,\n text: 20\n }, {\n value: 30,\n text: 30\n }];\n vm.numberOfCheckboxesChecked = 0;\n vm.calendarDate = '';\n vm.dateSelected = '';\n vm.currentDate = undefined;\n vm.currentDatePlusOne = undefined;\n vm.updateSupplierList = [];\n vm.showAuthButton = true;\n vm.showButton = true;\n vm.timeout = 1000;\n vm.today = new Date(moment().add(1, 'day').format('MM/DD/YYYY'));\n vm.accessEndDate = new Date(moment().add(1, 'Y').format('MM/DD/YYYY'));\n vm.selectedDate = '06/17/2022';\n vm.isBlankState = false;\n vm.authSuppliers = [];\n vm.numberOfAuthCheckboxesChecked = 0;\n vm.disableSave = true;\n vm.tcAccept = false;\n vm.checkauthall = true;\n $rootScope.isOhio = false;\n function virtualPagePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n vm.virtualPagePush = virtualPagePush;\n function attributePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n vm.attributePush = attributePush;\n vm.toastWorkflow = $('#hdn-ohioChoice').attr('toastWorkflow');\n vm.businessFunction = $('#hdn-ohioChoice').attr('businessFunction');\n vm.headLine = $('#hdn-ohioChoice').attr('headLine');\n vm.subHeadline = $('#hdn-ohioChoice').attr('subHeadline');\n vm.successHeadline = $('#hdn-ohioChoice').attr('successHeadline');\n vm.errorHeadline = $('#hdn-ohioChoice').attr('errorHeadline');\n vm.btnTxt = $('#hdn-ohioChoice').attr('btnTxt');\n vm.tcTxt = $('#hdn-ohioChoice').attr('tcTxt');\n vm.tcHeadline = $('#hdn-ohioChoice').attr('tcHeadline');\n vm.blankStateTxt = $('#hdn-ohioChoice').attr('blankStateTxt');\n function selectCalendarDate(supplier) {\n if (supplier.authEndDateTime !== undefined) {\n supplier.authEndDateTime = supplier.authEndDateTime.replace(/ /g, '');\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n var elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(temp.SupplierID);\n if (elementPos === -1) {\n vm.updateSupplierList.push(temp);\n } else {\n vm.updateSupplierList[elementPos].EndDate = temp.EndDate;\n }\n }\n }\n vm.selectCalendarDate = selectCalendarDate;\n\n // ENABLE SAVE\n function enableSave() {\n vm.tcAccept = true;\n var tcAcceptbutton = document.getElementById('tcAccept');\n if (tcAcceptbutton.checked === false) {\n tcAcceptbutton.removeAttribute('checked');\n tcAcceptbutton.checked = false;\n } else {\n tcAcceptbutton.setAttribute('checked', 'checked');\n tcAcceptbutton.checked = true;\n }\n }\n vm.enableSave = enableSave;\n var today = new Date();\n today.setHours(0, 0, 0, 0);\n var endDateRange = 365;\n\n // CONSTANTS //\n var formatMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\n var formatDays = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];\n\n /* Data Import */\n vm.supplierRequest = {};\n vm.suppliers = [];\n\n // CALCULATE DEFAULT DATE BASED ON RANGE //\n function defaultDate(days) {\n var oneYear = new Date();\n if (days === 0) {\n oneYear = oneYear.setDate(oneYear.getDate() + days);\n oneYear = new Date(oneYear);\n } else {\n oneYear = new Date(moment().add(1, 'Y').format('MM/DD/YYYY'));\n }\n var Year = oneYear.getFullYear();\n var Month = oneYear.getMonth();\n Month = formatMonths[Month];\n var Day = oneYear.getDate();\n var daysCount = 10;\n if (Day < daysCount) {\n Day = formatDays[Day - 1];\n }\n var defaultedDate = \"\".concat(Year, \"-\").concat(Month, \"-\").concat(Day, \"T00:00:00.0\");\n return defaultedDate;\n }\n function fnPreviousRecordsShow() {\n vm.showButton = false;\n vm.currentPage -= 1;\n vm.startingRecord -= $scope.rowLimit;\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\n Array.prototype.forEach.call(vm.suppliers, function (supplier) {\n supplier.authEndDateTime = supplier.authEndDateTime ? supplier.authEndDateTime.replace(/ /g, '') : defaultDate(endDateRange);\n });\n $timeout(function () {\n vm.showButton = true;\n }, vm.timeout);\n }\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\n function fnPreviousAuthRecordsShow() {\n vm.showAuthButton = false;\n vm.currentAuthPage -= 1;\n vm.startingAuthRecord -= $scope.authRowLimit;\n vm.endingAuthRecord = vm.startingAuthRecord + $scope.authRowLimit - 1;\n Array.prototype.forEach.call(vm.authSuppliers, function (supplier) {\n supplier.authEndDateTime = supplier.authEndDateTime ? supplier.authEndDateTime.replace(/ /g, '') : supplier.constEndDate;\n });\n $timeout(function () {\n vm.showAuthButton = true;\n }, vm.timeout);\n }\n vm.PreviousAuthRecordsShow = fnPreviousAuthRecordsShow;\n function fnNextRecordsShow() {\n vm.showButton = false;\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\n vm.currentPage += 1;\n vm.endingRecord = vm.currentPage + 1 === vm.totalPages && vm.endingRecord + vm.balancePages === vm.suppliers.length ? vm.suppliers.length : vm.startingRecord + $scope.rowLimit - 1;\n Array.prototype.forEach.call(vm.suppliers, function (supplier) {\n supplier.authEndDateTime = supplier.authEndDateTime ? supplier.authEndDateTime.replace(/ /g, '') : defaultDate(endDateRange);\n });\n $timeout(function () {\n vm.showButton = true;\n }, vm.timeout);\n }\n vm.NextRecordsShow = fnNextRecordsShow;\n function fnNextAuthRecordsShow() {\n vm.showAuthButton = false;\n vm.startingAuthRecord = $scope.authRowLimit + vm.startingAuthRecord;\n vm.currentAuthPage += 1;\n vm.endingAuthRecord = vm.currentAuthPage + 1 === vm.totalAuthPages && vm.endingAuthRecord + vm.balanceAuthRecord === vm.authSuppliers.length ? vm.authSuppliers.length : vm.startingAuthRecord + $scope.authRowLimit - 1;\n Array.prototype.forEach.call(vm.authSuppliers, function (supplier) {\n supplier.authEndDateTime = supplier.authEndDateTime ? supplier.authEndDateTime.replace(/ /g, '') : supplier.constEndDate;\n });\n $timeout(function () {\n vm.showAuthButton = true;\n }, vm.timeout);\n }\n vm.NextAuthRecordsShow = fnNextAuthRecordsShow;\n function fnChangeRowLimit(rowLimit) {\n $scope.rowLimit = rowLimit.value;\n vm.currentPage = 0;\n vm.endingRecord = $scope.rowLimit;\n vm.startingRecord = 1;\n vm.totalPages = Math.ceil(vm.suppliers.length / $scope.rowLimit);\n vm.balancePages = vm.suppliers.length % $scope.rowLimit;\n }\n vm.fnChangeRowLimit = fnChangeRowLimit;\n function fnChangeAuthRowLimit(limit) {\n $scope.authRowLimit = limit.value;\n vm.currentAuthPage = 0;\n vm.endingAuthRecord = $scope.authRowLimit;\n vm.startingAuthRecord = 1;\n vm.totalAuthPages = Math.ceil(vm.authSuppliers.length / $scope.authRowLimit);\n vm.balanceAuthRecord = vm.authSuppliers.length % $scope.authRowLimit;\n }\n vm.fnChangeAuthRowLimit = fnChangeAuthRowLimit;\n function pastDate(date) {\n var newDate = new Date(date);\n\n // if (newDate < today) {\n // return true;\n // }\n // return false;\n return newDate < today ? true : false;\n }\n function load() {\n var params = {\n contractAccount: vm.contractAccountNum\n };\n getSupplierDetailsService.sitecore.getSupplierDetailsService(params).then(function (data) {\n if (data.d.Message.Type === 'S') {\n vm.supplierRequest = data.d.ReadSuppToSuppList_NAV.results;\n vm.supplierAuth = data.d.ReadSuppToEnrlList_NAV.results;\n $scope.rowLimit = 10;\n $scope.authRowLimit = 10;\n vm.startingRecord = 1;\n vm.startingAuthRecord = 1;\n vm.endingRecord = $scope.rowLimit;\n vm.endingAuthRecord = $scope.authRowLimit;\n vm.currentPage = 0;\n vm.currentAuthPage = 0;\n if (vm.supplierRequest.length > 0) {\n angular.forEach(vm.supplierRequest, function (value) {\n vm.suppliers.push(value);\n if (value.authEndDateTime === '' || value.authEndDateTime === null || value.authEndDateTime === undefined || pastDate(value.authEndDateTime) || value.authorized === false) {\n value.authEndDateTime = defaultDate(endDateRange);\n value.authorized = false;\n }\n });\n vm.totalPages = Math.ceil(vm.suppliers.length / $scope.rowLimit);\n vm.balancePages = vm.suppliers.length % $scope.rowLimit;\n vm.isBlankState = false;\n }\n if (vm.supplierAuth.length > 0) {\n angular.forEach(vm.supplierAuth, function (value) {\n var values = {\n SupplierID: value.SupplierID,\n SupplierName: value.SupplierName,\n authEndDateTime: moment(value.EndDate).format('MM/DD/YYYY'),\n constEndDate: moment(value.EndDate).format('MM/DD/YYYY'),\n authorized: true,\n checked: true\n };\n vm.authSuppliers.push(values);\n });\n vm.totalAuthPages = Math.ceil(vm.authSuppliers.length / $scope.authRowLimit);\n vm.balanceAuthRecord = vm.authSuppliers.length % $scope.authRowLimit;\n vm.numberOfAuthCheckboxesChecked = vm.authSuppliers.length;\n }\n vm.currentSupplierName = data.d.CurrentSupplier;\n if (vm.ohioUser && (vm.supplierRequest.length > 0 || vm.supplierAuth.length > 0)) {\n vm.isBlankState = false;\n } else {\n vm.isBlankState = true;\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(vm.blankStateTxt), \"headline:\".concat(vm.headLine));\n }\n }\n }).catch(function () {\n broadcastService.failedStateNotificationTriggered(true);\n });\n }\n\n // INIT FUNCTION WITH SERVICE CALL TO POPULATE TABLE - ACCEPTS DEFAULT DATE RANGE //\n vm.init = function (range) {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo && 'accountSelected' in globalAccountInfo) {\n var globalSelectedAccount = globalAccountInfo.accountSelected;\n vm.contractAccountNum = globalSelectedAccount.accountNum;\n vm.ohioUser = sessionStorageService.get(assetService.storageKeys.isOhio);\n load();\n }\n endDateRange = range;\n };\n vm.toggleDate = function (supplier) {\n var dateWrapper = $document.find(\"li.check-id-\".concat(supplier, \" div.date-select\"));\n var dateTick = $document.find(\"li.check-id-\".concat(supplier, \" .date .date-tick\"));\n var toggleDisable = dateWrapper.hasClass('disabled');\n if (!toggleDisable) {\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\n dateWrapper.removeClass('active');\n dateWrapper.addClass('inactive');\n dateTick.removeClass('open');\n } else if (dateWrapper.hasClass('inactive')) {\n dateWrapper.addClass('active');\n dateWrapper.removeClass('inactive');\n dateTick.addClass('open');\n }\n }\n };\n vm.checkboxAuthClick = function (supplier) {\n var checkboxauth = document.getElementById(\"check-id-\".concat(supplier.SupplierID));\n if (checkboxauth.checked === false) {\n if (vm.numberOfAuthCheckboxesChecked > 0) {\n vm.numberOfAuthCheckboxesChecked -= 1;\n }\n if (vm.numberOfAuthCheckboxesChecked !== vm.authSuppliers.length) {\n var checkauthall = document.getElementById('checkauthall');\n if (checkauthall.attributes.checked) {\n checkauthall.removeAttribute('checked');\n checkauthall.checked = false;\n }\n }\n checkboxauth.removeAttribute('checked');\n checkboxauth.checked = false;\n supplier.checked = false;\n supplier.authEndDateTime = defaultDate(0);\n supplier.authorized = false;\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n var elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(temp.SupplierID);\n if (elementPos === -1) {\n vm.updateSupplierList.push(temp);\n } else {\n vm.updateSupplierList[elementPos].EndDate = temp.EndDate;\n }\n } else {\n checkboxauth.setAttribute('checked', 'checked');\n checkboxauth.checked = true;\n supplier.checked = true;\n supplier.authEndDateTime = new Date(supplier.constEndDate);\n var _temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n var _elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(_temp.SupplierID);\n vm.updateSupplierList.splice(_elementPos, 1);\n vm.numberOfAuthCheckboxesChecked += 1;\n if (vm.numberOfAuthCheckboxesChecked === vm.authSuppliers.length) {\n var _checkauthall = document.getElementById('checkauthall');\n if (!_checkauthall.attributes.checked) {\n _checkauthall.setAttribute('checked', 'checked');\n _checkauthall.checked = true;\n }\n }\n }\n };\n vm.checkboxClick = function (supplier) {\n var checkbox = document.getElementById(\"check-id-\".concat(supplier.SupplierID));\n if (checkbox.checked === false) {\n if (vm.numberOfCheckboxesChecked > 0) {\n vm.numberOfCheckboxesChecked -= 1;\n }\n if (vm.numberOfCheckboxesChecked !== vm.suppliers.length) {\n var checkboxall = document.getElementById('checkall');\n if (checkboxall.attributes.checked) {\n checkboxall.removeAttribute('checked');\n checkboxall.checked = false;\n }\n }\n checkbox.removeAttribute('checked');\n checkbox.checked = false;\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n var elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(temp.SupplierID);\n vm.updateSupplierList.splice(elementPos, 1);\n supplier.authEndDateTime = defaultDate(endDateRange);\n } else {\n checkbox.setAttribute('checked', 'checked');\n checkbox.checked = true;\n var _temp2 = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(defaultDate(endDateRange)).format('YYYY-MM-DDTHH:mm:ss')\n };\n vm.updateSupplierList.push(_temp2);\n vm.numberOfCheckboxesChecked += 1;\n if (vm.numberOfCheckboxesChecked === vm.suppliers.length) {\n var _checkboxall = document.getElementById('checkall');\n if (!_checkboxall.attributes.checked) {\n _checkboxall.setAttribute('checked', 'checked');\n _checkboxall.checked = true;\n }\n }\n }\n };\n vm.checkboxAuthAll = function () {\n var checkauthall = document.getElementById('checkauthall');\n if (checkauthall.attributes.checked) {\n checkauthall.removeAttribute('checked');\n checkauthall.checked = false;\n Array.prototype.forEach.call(vm.authSuppliers, function (supplier) {\n if (supplier.checked === true) {\n supplier.checked = false;\n supplier.authEndDateTime = defaultDate(0);\n supplier.authorized = false;\n }\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n vm.updateSupplierList.push(temp);\n });\n vm.numberOfAuthCheckboxesChecked = 0;\n } else {\n checkauthall.setAttribute('checked', 'checked');\n checkauthall.checked = true;\n Array.prototype.forEach.call(vm.authSuppliers, function (supplier) {\n supplier.checked = true;\n supplier.authEndDateTime = supplier.constEndDate;\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: supplier.constEndDate\n };\n var elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(temp.SupplierID);\n vm.updateSupplierList.splice(elementPos, 1);\n });\n vm.numberOfAuthCheckboxesChecked = vm.authSuppliers.length;\n }\n };\n\n // CHECK ALL LOOPS //\n vm.checkboxAll = function () {\n var checkbox = document.getElementById('checkall');\n if (checkbox.attributes.checked) {\n checkbox.removeAttribute('checked');\n checkbox.checked = false;\n Array.prototype.forEach.call(vm.suppliers, function (supplier) {\n if (supplier.checked === true) {\n supplier.checked = false;\n supplier.authEndDateTime = defaultDate(endDateRange);\n }\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n var elementPos = vm.updateSupplierList.map(function (popitem) {\n return popitem.SupplierID;\n }).indexOf(temp.SupplierID);\n vm.updateSupplierList.splice(elementPos, 1);\n });\n vm.numberOfCheckboxesChecked = 0;\n } else {\n checkbox.setAttribute('checked', 'checked');\n checkbox.checked = true;\n Array.prototype.forEach.call(vm.suppliers, function (supplier) {\n supplier.checked = true;\n supplier.authEndDateTime = defaultDate(endDateRange);\n var temp = {\n SupplierID: supplier.SupplierID,\n SupplierName: supplier.SupplierName,\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss')\n };\n vm.updateSupplierList.push(temp);\n });\n vm.numberOfCheckboxesChecked = vm.suppliers.length;\n }\n };\n vm.checkboxChecked = function (supplier) {\n var checkbox = document.getElementById(\"check-id-\".concat(supplier));\n var dateWrapper = $document.find(\"li.check-id-\".concat(supplier, \" div.date-select\"));\n if (dateWrapper.hasClass('active') && !checkbox.checked) {\n vm.toggleDate(supplier);\n }\n return checkbox.checked;\n };\n vm.openSuccessModal = function () {\n modalService.ohioTermsConditionModal();\n virtualPagePush(vm.businessFunction, vm.tcHeadline, 'load');\n };\n\n // CHECK FOR COOKIE AND OPEN SUCCESS MODAL //\n angular.element(document).ready(function () {\n if (cookiesService.getCookie('oct-update-success')) {\n vm.openSuccessModal();\n cookiesService.deleteCookie('oct-update-success');\n }\n });\n\n // LEAVE MODAL BUTTON //\n vm.leaveBtn = function (url) {\n sessionStorageService.set(assetService.notifPref.sessionStorage.fromOhioChoice, 'cancel');\n $window.location.href = url;\n };\n\n // SAVE BUTTON //\n vm.submitForm = function (url) {\n $rootScope.isOhio = true;\n var params = {\n contractAccount: vm.contractAccountNum,\n updatesupplierList: vm.updateSupplierList\n };\n updateSupplierDetailsService.sitecore.updateSupplierDetailsService(params).then(function (result) {\n var _result$ReturnCodes$, _result$ReturnCodes$2;\n var readConsentCode = (_result$ReturnCodes$ = result.ReturnCodes[0].ReturnCode1) !== null && _result$ReturnCodes$ !== void 0 && _result$ReturnCodes$.MessageNum ? result.ReturnCodes[0].ReturnCode1.MessageNum : '';\n var readConsentMessage = (_result$ReturnCodes$2 = result.ReturnCodes[0].ReturnCode1) !== null && _result$ReturnCodes$2 !== void 0 && _result$ReturnCodes$2.Message ? result.ReturnCodes[0].ReturnCode1.Message : '';\n sessionStorageService.set('readConsentCode', readConsentCode);\n sessionStorageService.set('readConsentMessage', readConsentMessage);\n if (result && result.d.Message.Type === 'S') {\n $rootScope.showToast = 'success';\n var toastMessage = {\n option: 'success',\n messageOption: 'Success! Your Ohio Choice Settings have been updated.',\n showToast: 'success',\n workFlow: \"\".concat(vm.toastWorkflow),\n headline: \"\".concat(vm.successHeadline),\n subheadline: 'Success! Your Ohio Choice Settings have been updated.'\n };\n sessionStorageService.set(assetService.notifPref.sessionStorage.fromOhioChoice, 'true');\n sessionStorageService.set(assetService.notifPref.sessionStorage.ohioToast, toastMessage);\n } else {\n $rootScope.showToast = 'error';\n var _toastMessage = {\n option: 'error',\n messageOption: result.d.Message.Message,\n showToast: 'error',\n workFlow: \"\".concat(vm.toastWorkflow),\n headline: \"\".concat(vm.errorHeadline),\n subheadline: \"\".concat(result.d.Message.Message)\n };\n sessionStorageService.set(assetService.notifPref.sessionStorage.fromOhioChoice, 'true');\n sessionStorageService.set(assetService.notifPref.sessionStorage.ohioToast, _toastMessage);\n }\n attributePush(\"workFlow:\".concat(vm.businessFunction), \"buttonText:\".concat(vm.btnTxt), \"headline:\".concat(vm.headLine), \"subheadline:\".concat(vm.subHeadline));\n virtualPagePush(vm.businessFunction, vm.headLine, vm.subHeadline, vm.btnTxt, result ? 'success' : 'error');\n $window.location.href = url;\n $rootScope.isOhio = false;\n });\n };\n}\nohioChoiceConsentController.$inject = ['$scope', '$window', '$timeout', '$rootScope', '$document', 'cookiesService', 'updateSupplierDetailsService', 'getSupplierDetailsService', 'modalService', 'sessionStorageService', 'assetService', 'commongaTaggingService', 'broadcastService'];\napp.controller('ohioChoiceConsentController', ohioChoiceConsentController);\nfunction ohioTermsController($log, $modalInstance, commongaTaggingService) {\n var vm = this;\n vm.closeModal = function () {\n $modalInstance.close();\n };\n\n /**\r\n * Initialization\r\n */\n vm.virtualPagePush = function () {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n };\n vm.attributePush = function () {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n };\n}\napp.controller('ohioTermsController', ohioTermsController);\nohioTermsController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\n/* eslint-disable max-len */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('CCBPPDeEnrollModal', CCBPPDeEnrollModal);\nCCBPPDeEnrollModal.$inject = ['$modalInstance', 'apiApigeeConfigService', 'assetService', 'deEnrollFromProgramService', 'sessionStorageService', '$rootScope'];\nfunction CCBPPDeEnrollModal($modalInstance, apiApigeeConfigService, assetService, deEnrollFromProgramService, sessionStorageService, $rootScope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Global Vars-----------------------*/\n vm.storageDeEnrollProgram = assetService.storageKeys.Billing_And_Paiment_Programs.deEnrollProgram;\n vm.programName = '';\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.deEnroll = deEnroll;\n vm.data = {\n contractAccountId: null\n };\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function deEnroll() {\n deEnrollFromProgramService.sitecore.deEnrollFromProgram(vm.data).then(function (result) {\n vm.closeModal();\n $rootScope.$broadcast(vm.storageDeEnrollProgram, result);\n }, function (error) {\n $rootScope.$broadcast(vm.storageDeEnrollProgram, error);\n console.log(error);\n });\n }\n function load() {\n /* empty function */\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.data.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n var program = sessionStorageService.get(vm.storageDeEnrollProgram);\n var programs = assetService.billingAndPaymentPrograms;\n var values = Object.values(programs);\n var keys = Object.keys(programs);\n for (var i = 0; i < values.length; i++) {\n if (values[i] === program) vm.data.programName = keys[i];\n }\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('SendMyLetterModalController', SendMyLetterModalController);\nSendMyLetterModalController.$inject = ['$log', '$modalInstance', '$rootScope', 'sessionStorageService', 'assetService', 'genericHelperService', 'updateCorrespondenceService', 'accountSearchService', 'commongaTaggingService', 'scrollPosition', '$window'];\nfunction SendMyLetterModalController($log, $modalInstance, $rootScope, sessionStorageService, assetService, genericHelperService, updateCorrespondenceService, accountSearchService, commongaTaggingService, scrollPosition, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.dropdowns = [];\n vm.dropdowns.mailingAddresses = [];\n vm.selectMailingAddress = null;\n vm.closeModal = closeModal;\n vm.sendLetter = sendLetter;\n vm.addEmail = addEmail;\n vm.mailingAddress = [];\n vm.showAdd = false;\n vm.emailValid = false;\n vm.isdropDownSelected = false;\n var contractAccountSelectedIndex = null;\n vm.selectedOptionText = null;\n vm.emailValue = '';\n var success = assetService.replyCodes.SUCCESS;\n vm.updateCorrespondens = {\n replyCode: null\n };\n\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function sendLetter(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n var contractAccountSelectedIndex = _.findIndex(vm.dropdowns.mailAddress);\n if (contractAccountSelectedIndex === -1) {\n contractAccountSelectedIndex = 0;\n }\n var dataToPost = {\n contractAccountId: vm.contractAccountId,\n businessPartnerId: vm.businessPartnerId,\n emailId: !vm.showAdd ? vm.dropdowns.mailingAddresses[contractAccountSelectedIndex].text : vm.emailValue\n };\n updateCorrespondence(dataToPost);\n }\n function updateCorrespondence(dataToPost) {\n return updateCorrespondenceService.sitecore.updateCorrespondence(dataToPost).then(function (result) {\n if (result.d.ZDIG_CRE_REQTORES_NAV.ReplyCode === success) {\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mail has been sent successfully.');\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\n $rootScope.$broadcast(assetService.events.refreshSendMyLetter);\n $modalInstance.close();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.businessPartnerId = sessionStorageService.get(assetService.storageKeys.businessPartnerId);\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.emailId = sessionStorageService.get(assetService.storageKeys.emailId);\n var paramData = {\n contractAccountId: vm.contractAccountId\n };\n return accountSearchService.sitecore.cacheAccountSearch(paramData).then(function (result) {\n vm.mailingAddresses = _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results, function (item) {\n return {\n mailAddress: item.EmailAddress,\n addressNo: item.AddressNumber\n };\n });\n vm.dropdowns.mailingAddresses = _.map(_.uniq(vm.mailingAddresses, assetService.strings.address), function (item) {\n return {\n text: item.mailAddress,\n value: item.addressNo\n };\n });\n $window.scrollTo(0, scrollPosition);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n vm.dropMailingAddress = function (model) {\n vm.isdropDownSelected = true;\n var address = _.find(vm.mailingAddresses, function (mailingAddress) {\n return mailingAddress.addressNo === model.value;\n });\n vm.form.addressNo = address.addressNo;\n\n // vm.formChange();\n };\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n function addEmail() {\n vm.showAdd = true;\n }\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageAccountEditMailingAddress', ModalManageAccountEditMailingAddress);\nModalManageAccountEditMailingAddress.$inject = ['$log', '$scope', '$modalInstance', '$rootScope', 'sessionStorageService', 'updateCustomerAccountDetailsService', 'addressValidationService', 'assetService', 'modalService', 'genericHelperService', 'commongaTaggingService', 'responseNotificationsService', 'manualResponseNotificationDefinitionsAssetService', 'returnCodeMapping', 'broadcastService'];\nfunction ModalManageAccountEditMailingAddress($log, $scope, $modalInstance, $rootScope, sessionStorageService, updateCustomerAccountDetailsService, addressValidationService, assetService, modalService, genericHelperService, commongaTaggingService, responseNotificationsService, manualResponseNotificationDefinitionsAssetService, returnCodeMapping, broadcastService) {\n /* -------------- Vars-----------------------*/\n var vm = this;\n vm.showEditForm = false;\n vm.start = {};\n vm.mailingForm = {};\n vm.mailingData = {};\n vm.displayStreetRangeError = false;\n vm.isDisable = true;\n vm.isAddressSelected = false;\n vm.isAddressSelectedInEdit = false;\n vm.mailingAddressData = {\n streetAddress: '',\n street: '',\n floor: '',\n zipCode: '',\n state: '',\n city: '',\n ownProperty: true,\n mobileHome: false,\n premiseId: '',\n installations: []\n };\n vm.isAddressInValid = false;\n var stateList = assetService.allStates;\n var selectedAddress = '';\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.state = genericHelperService.createDropdownList(stateList, assetService.strings.VALUE, assetService.strings.TEXT);\n vm.mailingAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddress);\n vm.mailingDropdownData = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressDropdown);\n vm.AddMailingDropdownData = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressDropdown);\n vm.AddMailingDropdownData.unshift({\n text: 'Add Address',\n value: {\n address: 'Add Address'\n }\n });\n vm.showEditForm = sessionStorageService.get(assetService.storageKeys.manageAccount.showEditForm);\n if (vm.showEditForm) {\n var addressObj = sessionStorageService.get(assetService.storageKeys.manageAccount.addressObject);\n vm.mailingForm.streetaddress = addressObj.streetAddress;\n vm.mailingForm.apartament = addressObj.houseNo !== undefined ? addressObj.houseNo : '';\n vm.mailingForm.city = addressObj.city;\n vm.mailingForm.zipcode = addressObj.zipCode;\n vm.mailingForm.state = addressObj.state;\n vm.mailingForm.apartament = addressObj.apartament ? addressObj.apartament : sessionStorageService.get(assetService.storageKeys.manageAccount.addressEntered).apartment ? sessionStorageService.get(assetService.storageKeys.manageAccount.addressEntered).apartment : '';\n vm.state = genericHelperService.setSelectedProp(vm.state, assetService.strings.VALUE, addressObj.state);\n }\n };\n init();\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.saveMailingaddress = saveMailingaddress;\n vm.addAddress = addAddress;\n vm.mailingAddressChange = mailingAddressChange;\n vm.mailingAddressChangeInEdit = mailingAddressChangeInEdit;\n vm.onClickContactUs = onClickContactUs;\n vm.onChangeMailingFormValues = onChangeMailingFormValues;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function mailingAddressChange(value) {\n vm.isDisable = false;\n selectedAddress = value;\n var addressFromManage = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject);\n if (checkForExistingAddress(addressFromManage, selectedAddress)) {\n vm.isAddressSelected = true;\n } else {\n vm.isAddressSelected = false;\n }\n }\n function checkForExistingAddress(addressFromManage, selectedAddress) {\n if (selectedAddress.value.streetName.toLowerCase() === addressFromManage.streetAddress.toLowerCase() && selectedAddress.value.houseNo.toLowerCase() === addressFromManage.houseNo.toLowerCase() && selectedAddress.value.city.toLowerCase() === addressFromManage.city.toLowerCase() && selectedAddress.value.state.toLowerCase() === addressFromManage.state.toLowerCase() && selectedAddress.value.zipCode.toLowerCase() === addressFromManage.zipCode.toLowerCase()) {\n return false;\n } else {\n return true;\n }\n }\n function addAddress() {\n vm.showEditForm = true;\n }\n function validateAddress() {\n var address = {\n streetAddress: vm.mailingForm.streetaddress,\n apartment: vm.mailingForm.apartament,\n state: vm.mailingForm.state,\n city: vm.mailingForm.city,\n zipCode: vm.mailingForm.zipcode,\n count: '4'\n };\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressEntered, address);\n addressValidation(address).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function saveMailingaddress(type, event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n var dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n street: vm.mailingForm.streetaddress,\n roomNo: vm.mailingForm.apartament,\n houseNo: vm.mailingForm.houseNo,\n city: vm.mailingForm.city,\n state: vm.mailingForm.state,\n zipCd: vm.mailingForm.zipcode,\n country: 'US'\n };\n if (!vm.showEditForm || type === 'isUpdateAddressAutoCorrect') {\n if (!vm.showEditForm) {\n dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n addressNumber: type.addressNo,\n country: ''\n };\n updateAddress(dataToPost, true);\n } else {\n updateAddress(dataToPost, false);\n }\n } else if (vm.showEditForm && vm.isAddressSelectedInEdit) {\n dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n addressNumber: type.addressNo,\n country: ''\n };\n updateAddress(dataToPost, true);\n } else {\n validateAddress();\n }\n }\n function updateAddress(data, flag) {\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(function (result) {\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var mailingaddress = flag ? selectedAddress.text : result.d.HouseNo + ' ' + result.d.Street + (result.d.RoomNo ? ' ' + result.d.RoomNo + ', ' : ', ') + result.d.City + ', ' + result.d.State + ' ' + result.d.ZipCd;\n if (flag) {\n var addr = {\n address: \"\".concat(selectedAddress.value.streetName, \" \").concat(selectedAddress.value.houseNo, \", \").concat(selectedAddress.value.city, \", \").concat(selectedAddress.value.state, \" \").concat(selectedAddress.value.zipCode),\n addressNo: selectedAddress.value.addressNo,\n city: selectedAddress.value.city,\n state: selectedAddress.value.state,\n zipCode: selectedAddress.value.zipCode,\n streetAddress: selectedAddress.value.streetName,\n houseNo: selectedAddress.value.houseNo\n };\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject, addr);\n }\n var broadcastData = {\n mailingaddress: mailingaddress,\n addressSelectedFlag: flag\n };\n $rootScope.$broadcast('mailingaddress', broadcastData);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mailing address has been successfully updated.');\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\n $rootScope.$broadcast(assetService.events.refreshManageAccountMailingAddress);\n $modalInstance.close();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addressValidation(data) {\n return addressValidationService.sitecore.addresValidation(data).then(function (result) {\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressObject, data);\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressRange, result.d.Addr_List.results);\n vm.mailingForm.streetaddress = result.d.StreetAddress;\n vm.mailingForm.apartament = result.d.Apartment;\n vm.mailingForm.state = result.d.State;\n vm.mailingForm.zipcode = result.d.ZipCode;\n vm.mailingForm.city = result.d.City;\n vm.mailingForm.houseNo = result.d.HouseNumber;\n vm.mailingForm.roomNo = result.d.Apartment;\n vm.mailingForm.country = result.d.Country;\n sessionStorageService.set(assetService.storageKeys.manageAccount.currentAddress, vm.mailingForm);\n if (result && result.d && result.d.Addr_List && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results.length > 0 && result.d.Addr_Msg.results[0].Type === assetService.replyCodes.E) {\n attributePush('workFlow:' + 'error ' + $(\"#manageaccount-modal\").attr(\"businessFunction\"), 'buttonText:' + $(\"#manageaccount-modal\").attr(\"headLine\"), 'headline:' + $(\"#manageaccount-modal\").attr(\"businessFunction\"));\n virtualPagePush('authenticated', $(\"#manageaccount-modal\").attr(\"businessFunction\"), $(\"#manageaccount-modal\").attr(\"headLine\"), $(\"#manageaccount-modal\").attr(\"buttonText\"), 'error');\n vm.displayStreetRangeError = true;\n } else {\n if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 1 && result.d.HouseNumber !== '' || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg.results.length === 0 || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results && result.d.Addr_Msg.results.length !== 0 && result.d.Addr_Msg.results[0].Type === 'S') {\n saveMailingaddress('isUpdateAddressAutoCorrect');\n } else if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length > 1 || result && result.d && result.d.Addr_List.results.length === 1) {\n checkForAddressRange(result.d.Addr_List.results);\n }\n }\n });\n }\n function checkForAddressRange(addrList) {\n var streetRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!streetRangeFound) {\n streetRangeFound = _.includes(address.AddressLine.split(' ', 1)[0], '-');\n }\n });\n var floorAptRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!floorAptRangeFound) {\n var splitAddress = address.AddressLine.split(',');\n var streetName = splitAddress.length > 4 ? splitAddress[0].trim() + ', ' + splitAddress[1].trim() : splitAddress[0].trim();\n floorAptRangeFound = _.includes(streetName.split(' ').reverse().join(' ').split(' ', 1)[0], '-');\n }\n });\n if (streetRangeFound) {\n vm.isAddressInValid = true;\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"600\"\n }], null).then(function (response) {\n responseNotificationsService.errorResponse(response[0].data);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n attributePush(\"workFlow:\".concat('error ' + $(\"#manageaccount-modal\").attr(\"businessFunction\")), \"headline:\".concat($(\"#manageaccount-modal\").attr(\"businessFunction\")), \"subheadline:\".concat(document.getElementsByClassName('title-modal')[1].innerHTML), \"returnCode:not set\", \"msgHeader:\".concat(vm.errorNotification.header), \"endpoint:\".concat(assetService.sitecoreEndpoints.addresValidation));\n virtualPagePush($(\"#manageaccount-modal\").attr(\"businessFunction\"), $(\"#manageaccount-modal\").attr(\"businessFunction\"), document.getElementsByClassName('title-modal')[1].innerHTML, 'update', 'error', 'not-set');\n } else if (floorAptRangeFound) {\n $modalInstance.close();\n modalService.manageMissingApt();\n } else if (!floorAptRangeFound && !streetRangeFound && addrList.length === 1) {\n var address = {\n street: vm.mailingForm.streetaddress,\n floor: vm.mailingForm.apartament,\n state: _.find(assetService.allStates, function (element) {\n return element.text === vm.mailingForm.state;\n }) ? _.find(assetService.allStates, function (element) {\n return element.text === vm.mailingForm.state;\n }).value : vm.mailingForm.state,\n city: vm.mailingForm.city,\n zipCode: vm.mailingForm.zipcode\n };\n vm.attributeForDataLayer = {\n workFlow: $('#manageaccount-modal').attr('businessFunction'),\n headLine: $('#manageaccount-modal').attr('headLine'),\n subHeadline: $('#manageaccount-modal').attr('subheadLine'),\n start: {\n isLoggedIn: true\n }\n };\n modalService.singleMailingAddressSuggestion({\n isMailingAddress: true,\n isPremiseAddress: false,\n isAddressfromDQM: true,\n isAddressfromPremiseSearch: false,\n suggesstedAddresses: addrList,\n currentAddress: address,\n tabName: vm.attributeForDataLayer\n });\n } else {\n $modalInstance.close();\n modalService.manageMultiAddressSuggestion();\n }\n setAttributeDetails();\n }\n $scope.$on(assetService.events.singleSuggestedAddress, function (event, data) {\n $rootScope.$broadcast(assetService.events.loadingSpinner, true);\n if (data) {\n switch (data.action) {\n case 'VALID':\n var address = {\n streetAddress: data.selectedAddress.street,\n state: data.selectedAddress.state,\n city: data.selectedAddress.city,\n zipCode: data.selectedAddress.zipcode,\n apartment: data.selectedAddress.floor,\n count: '4'\n };\n addressValidation(address);\n break;\n case 'INVALID':\n var dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n street: data.selectedAddress.street,\n roomNo: data.selectedAddress.floor,\n houseNo: '',\n city: data.selectedAddress.city,\n state: data.selectedAddress.state,\n zipCd: data.selectedAddress.zipCode,\n country: 'US'\n };\n updateAddress(dataToPost, false);\n break;\n case 'CANCEL':\n vm.mailingForm.streetaddress = data.selectedAddress.street;\n vm.mailingForm.state = data.selectedAddress.state;\n vm.mailingForm.city = data.selectedAddress.city;\n vm.mailingForm.zipcode = data.selectedAddress.zipCode;\n vm.mailingForm.apartament = data.selectedAddress.floor;\n break;\n default:\n break;\n }\n }\n });\n function setAttributeDetails() {\n vm.attributeForDataLayer = {\n businessFunction: $(\"#manageaccount-modal\").attr(\"businessFunction\"),\n headLine: $(\"#manageaccount-modal\").attr(\"headLine\"),\n subHeadLine: document.getElementsByClassName('title-modal')[1].innerHTML,\n buttonText: $(\"#manageaccount-modal\").attr(\"buttonText\"),\n missingAptGatError: $(\"#manageaccount-modal\").attr(\"missingAptGatError\")\n };\n sessionStorageService.set('edit-manage-account-details', vm.attributeForDataLayer);\n }\n function mailingAddressChangeInEdit(value) {\n selectedAddress = value;\n var addressFromManage = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject);\n if (checkForExistingAddress(addressFromManage, selectedAddress)) {\n vm.isAddressSelectedInEdit = true;\n } else {\n vm.isAddressSelectedInEdit = false;\n }\n }\n function onClickContactUs() {\n window.location.href = '/customer-service';\n }\n function onChangeMailingFormValues() {\n if ($scope.mailingAddressForm.$valid) {\n vm.isAddressInValid = false;\n }\n }\n $scope.$on(assetService.events.pageNotificationTriggered, function () {\n vm.isAddressInValid = true;\n });\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageAccountNickName', ModalManageAccountNickName);\nModalManageAccountNickName.$inject = ['$log', '$modalInstance', '$rootScope', 'sessionStorageService', 'assetService', 'updateCustomerAccountDetailsService', 'getLoggedinBPDetailsAndAssociatedAccountsService', 'ccGetUserAccountsService', 'commongaTaggingService'];\nfunction ModalManageAccountNickName($log, $modalInstance, $rootScope, sessionStorageService, assetService, updateCustomerAccountDetailsService, getLoggedinBPDetailsAndAssociatedAccountsService, ccGetUserAccountsService, commongaTaggingService) {\n /* -------------- Vars-----------------------*/\n var vm = this;\n vm.nickName = '';\n vm.isSameName = false;\n vm.nameLengthError = false;\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.nickName = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountNickName);\n };\n init();\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.saveNickName = saveNickName;\n vm.duplicateNickName = duplicateNickName;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function duplicateNickName() {\n vm.isSameName = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountNickName) === vm.nickName ? true : false;\n vm.nameLengthError = vm.nickName.length > 32 ? true : false;\n }\n function saveNickName(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n var dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_NICK,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n acctNickname: vm.nickName\n };\n updateCustomerAccountDetails(dataToPost);\n }\n function refreshCache() {\n var _emailId = sessionStorageService.get(assetService.storageKeys.emailId);\n var _cdpId = sessionStorageService.get(assetService.storageKeys.cdpUserId);\n getLoggedinBPDetailsAndAssociatedAccountsService.sitecore.getBPDetailsRefreshCache({\n emailId: _emailId,\n cdpId: _cdpId\n }).then(function (result) {\n console.log(result);\n });\n }\n function updateCustomerAccountDetails(data) {\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(function (result) {\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var mydata = {\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n emailId: sessionStorageService.get(assetService.storageKeys.emailId),\n isRefresh: true,\n contractAccount: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n cdpId: sessionStorageService.get(assetService.storageKeys.cdpUserId)\n };\n var selectedAccountNumber = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n ccGetUserAccountsService.getUserAccounts(mydata).then(function (results) {\n if (results.accounts.length > 0) {\n var returnObj = {\n accName: result.d.AcctNickname,\n accNumber: selectedAccountNumber\n };\n $rootScope.$broadcast('nickname', returnObj);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your nickname has been successfully updated.');\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\n $rootScope.$broadcast(assetService.events.refreshManageAccountNickName);\n $modalInstance.close();\n }\n });\n refreshCache();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageMissingApt', ModalManageMissingApt);\nModalManageMissingApt.$inject = ['$log', 'modalService', 'assetService', 'sessionStorageService', 'updateCustomerAccountDetailsService', '$rootScope', '$scope', '$timeout', '$modalInstance', 'commongaTaggingService', 'addressValidationService'];\nfunction ModalManageMissingApt($log, modalService, assetService, sessionStorageService, updateCustomerAccountDetailsService, $rootScope, $scope, $timeout, $modalInstance, commongaTaggingService, addressValidationService) {\n /* --------------Global Declarations-----------------------*/\n var vm = this;\n vm.isDisable = true;\n vm.address = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\n vm.apartment;\n var enteredAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.addressEntered);\n vm.enteredAddress = \"\".concat(enteredAddress.streetAddress).concat(enteredAddress.apartment ? ' ' + enteredAddress.apartment + ',' : ',', \" \").concat(enteredAddress.city, \", \").concat(enteredAddress.state, \" \").concat(enteredAddress.zipCode);\n\n /* --------------Function Declarations-----------------------*/\n vm.continueWithAddress = continueWithAddress;\n vm.closeModal = closeModal;\n vm.goToEditAddress = goToEditAddress;\n vm.enableUpdate = enableUpdate;\n vm.updateAddress = updateAddress;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n\n function init() {/* empty function*/}\n $scope.$watch('$viewContentLoaded', function () {\n $timeout(function () {\n var attributeForDataLayer = sessionStorageService.get('edit-manage-account-details');\n attributePush(\"workFlow:\".concat('error ' + attributeForDataLayer.businessFunction), \"headline:\".concat(attributeForDataLayer.businessFunction), \"subheadline:\".concat(attributeForDataLayer.subHeadLine), \"returnCode:not set\", \"msgHeader:\".concat(attributeForDataLayer.missingAptGatError), \"endpoint:\".concat(assetService.sitecoreEndpoints.addresValidation));\n virtualPagePush(attributeForDataLayer.businessFunction, attributeForDataLayer.businessFunction, attributeForDataLayer.subHeadLine, 'Update', 'error', 'not set');\n }, 0);\n });\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function enableUpdate() {\n if (vm.apartment.length > 0) vm.isDisable = false;else vm.isDisable = true;\n }\n function closeModal() {\n $modalInstance.close();\n }\n function goToEditAddress() {\n sessionStorageService.set(assetService.storageKeys.manageAccount.showEditForm, true);\n $modalInstance.close();\n modalService.manageAccountEditMailingAddress();\n }\n function continueWithAddress(event) {\n if (event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n }\n updateAddress('updateWithoutApt');\n }\n function updateCustomerAccountDetails(data) {\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(function (result) {\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var mailingaddress = (result.d.HouseNo ? result.d.HouseNo + ' ' : '') + result.d.Street + (result.d.RoomNo ? ' ' + result.d.RoomNo + ', ' : ', ') + result.d.City + ', ' + result.d.State + ' ' + result.d.ZipCd;\n var broadcastData = {\n mailingaddress: mailingaddress,\n addressSelectedFlag: false\n };\n $rootScope.$broadcast('mailingaddress', broadcastData);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mailing address has been successfully updated.');\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\n $rootScope.$broadcast(assetService.events.refreshManageAccountMailingAddress);\n $modalInstance.close();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function updateAddress(type, event) {\n if (event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n }\n if (type === 'updateWithoutApt') {\n var dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n street: vm.address.streetaddress,\n roomNo: enteredAddress.apartment ? enteredAddress.apartment : '',\n houseNo: vm.address.houseNo,\n country: vm.address.country,\n city: enteredAddress.city,\n state: enteredAddress.state,\n zipCd: enteredAddress.zipCode\n };\n updateCustomerAccountDetails(dataToPost);\n } else {\n validateAddress();\n }\n }\n function validateAddress() {\n var houseNo = vm.address.houseNo ? vm.address.houseNo + ' ' : vm.address.houseNo;\n var address = {\n streetAddress: \"\".concat(houseNo).concat(vm.address.streetaddress),\n apartment: vm.apartment,\n state: vm.address.state,\n city: vm.address.city,\n zipCode: vm.address.zipcode,\n count: '4'\n };\n addressValidation(address).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addressValidation(data) {\n return addressValidationService.sitecore.addresValidation(data).then(function (result) {\n vm.apartment = '';\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressRange, result.d.Addr_List.results);\n var dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n streetaddress: result.d.StreetAddress,\n street: result.d.StreetAddress,\n roomNo: result.d.Apartment,\n houseNo: result.d.HouseNumber,\n city: result.d.City,\n state: result.d.State,\n zipCd: result.d.ZipCode,\n zipcode: result.d.ZipCode,\n country: result.d.Country\n };\n sessionStorageService.set(assetService.storageKeys.manageAccount.currentAddress, dataToPost);\n if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 1 && result.d.HouseNumber !== '' || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg.results.length === 0 || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results && result.d.Addr_Msg.results.length !== 0 && result.d.Addr_Msg.results[0].Type === 'S') {\n updateCustomerAccountDetails(dataToPost);\n } else if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length > 1 || result && result.d && result.d.Apartment === '' && result.d.Addr_List.results.length === 1) {\n checkForAddressRange(result.d.Addr_List.results);\n }\n });\n }\n function checkForAddressRange(addrList) {\n var streetRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!streetRangeFound) {\n streetRangeFound = _.includes(address.AddressLine.split(' ', 1)[0], '-');\n }\n });\n var floorAptRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!floorAptRangeFound) {\n var splitAddress = address.AddressLine.split(',');\n var streetName = splitAddress.length > 4 ? splitAddress[0].trim() + ', ' + splitAddress[1].trim() : splitAddress[0].trim();\n floorAptRangeFound = _.includes(streetName.split(' ').reverse().join(' ').split(' ', 1)[0], '-');\n }\n });\n if (streetRangeFound) {\n vm.isAddressInValid = true;\n returnCodeMapping.returnCodeHandler([{\n MessageNum: '600'\n }], null).then(function (response) {\n responseNotificationsService.errorResponse(response[0].data);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else if (floorAptRangeFound) {\n $modalInstance.close();\n modalService.manageMissingApt();\n } else {\n $modalInstance.close();\n modalService.manageMultiAddressSuggestion();\n }\n }\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageMultipleAddressSuggestion', ModalManageMultipleAddressSuggestion);\nModalManageMultipleAddressSuggestion.$inject = ['$log', 'modalService', 'sessionStorageService', 'assetService', 'updateCustomerAccountDetailsService', 'manualResponseNotificationDefinitionsAssetService', 'responseNotificationsService', 'addressValidationService', '$rootScope', '$modalInstance', 'commongaTaggingService', '$scope', '$timeout'];\nfunction ModalManageMultipleAddressSuggestion($log, modalService, sessionStorageService, assetService, updateCustomerAccountDetailsService, manualResponseNotificationDefinitionsAssetService, responseNotificationsService, addressValidationService, $rootScope, $modalInstance, commongaTaggingService, $scope, $timeout) {\n var vm = this;\n vm.currentAddress = {};\n vm.addressRange = [];\n vm.dataToPost = {};\n vm.isDisable = true;\n vm.splittedAddressArray = [];\n vm.radioButton = false;\n vm.isPOaddr = false;\n vm.splittedAddressArrayCheck = '';\n /* --------------Function Declarations-----------------------*/\n\n vm.updateAddress = updateAddress;\n vm.closeModal = closeModal;\n vm.goToEditAddress = goToEditAddress;\n vm.getAddress = getAddress;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.addressRange = sessionStorageService.get(assetService.storageKeys.manageAccount.addressRange);\n vm.currentAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\n console.log(vm.currentAddress);\n vm.isPOaddr = $rootScope.isPOaddr;\n }\n function getAddress(selectedAddress, radioBtn) {\n if (typeof selectedAddress === 'string') {\n vm.splittedAddressArray = selectedAddress.split(',');\n vm.dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n city: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 3].trim() : '',\n state: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 2].trim() : '',\n zipCd: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 1].trim() : '',\n roomNo: '',\n houseNo: '',\n country: vm.currentAddress.country\n };\n if (vm.splittedAddressArray.length) {\n if (vm.isPOaddr === true) {\n vm.splittedAddressArrayCheck = vm.splittedAddressArray[vm.splittedAddressArray.length - 4].trim();\n } else {\n vm.splittedAddressArrayCheck = vm.splittedAddressArray[vm.splittedAddressArray.length - 5].trim();\n }\n }\n vm.dataForAddress = {\n houseNo: '',\n streetAddress: vm.splittedAddressArray.length ? vm.splittedAddressArrayCheck : '',\n roomNo: '',\n apartment: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 4].trim() : '',\n state: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 2].trim() : '',\n city: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 3].trim() : '',\n zipCode: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 1].trim() : '',\n count: '4'\n };\n } else {\n vm.dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\n city: vm.currentAddress.city,\n state: vm.currentAddress.state,\n zipCd: vm.currentAddress.zipcode,\n roomNo: vm.currentAddress.apartament ? vm.currentAddress.apartament : '',\n houseNo: vm.currentAddress.houseNo,\n country: vm.currentAddress.country\n };\n vm.dataForAddress = {\n houseNo: vm.currentAddress.houseNo,\n streetAddress: vm.currentAddress.streetaddress,\n roomNo: vm.currentAddress.apartament ? vm.currentAddress.apartament : '',\n apartment: vm.currentAddress.apartament,\n state: vm.currentAddress.state,\n city: vm.currentAddress.city,\n zipCode: vm.currentAddress.zipcode,\n count: '4'\n };\n }\n if (radioBtn === 0) {\n vm.dataToPost.street = selectedAddress.streetaddress;\n vm.radioButton = true;\n }\n if (radioBtn === 1) {\n vm.radioButton = false;\n vm.dataToPost.street = vm.splittedAddressArray.length > 4 ? \"\".concat(vm.splittedAddressArray[0], \",\").concat(vm.splittedAddressArray[1]) : vm.splittedAddressArray[0];\n }\n vm.isDisable = false;\n }\n function updateAddress(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n if (vm.radioButton == true) {\n updateCustomerAccountDetails(vm.dataToPost);\n } else {\n addressValidation(vm.dataForAddress).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function addressValidation(data) {\n return addressValidationService.sitecore.addresValidation(data).then(function (result) {\n vm.dataToPost.street = result.d.StreetAddress;\n vm.dataToPost.apartament = result.d.Apartment;\n vm.dataToPost.state = result.d.State;\n vm.dataToPost.zipCd = result.d.ZipCode;\n vm.dataToPost.city = result.d.City;\n vm.dataToPost.houseNo = result.d.HouseNumber;\n vm.dataToPost.roomNo = result.d.Apartment;\n vm.dataToPost.country = result.d.Country;\n if (result && result.d && result.d.Addr_List && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results.length > 0 && result.d.Addr_Msg.results[0].Type === assetService.replyCodes.S) {\n updateCustomerAccountDetails(vm.dataToPost);\n } else {\n if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 1 && result.d.HouseNumber !== '' || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg.results.length === 0 || result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results && result.d.Addr_Msg.results.length !== 0 && result.d.Addr_Msg.results[0].Type === 'S') {\n updateCustomerAccountDetails(vm.dataToPost);\n } else if (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length > 1 || result && result.d && result.d.Apartment === '' && result.d.Addr_List.results.length === 1) {\n checkForAddressRange(result.d.Addr_List.results);\n }\n }\n });\n }\n function checkForAddressRange(addrList) {\n var streetRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!streetRangeFound) {\n streetRangeFound = _.includes(address.AddressLine.split(' ', 1)[0], '-');\n }\n });\n var floorAptRangeFound = false;\n _.forEach(addrList, function (address) {\n if (!floorAptRangeFound) {\n var splitAddress = address.AddressLine.split(',');\n var streetName = splitAddress.length > 4 ? splitAddress[0].trim() + ', ' + splitAddress[1].trim() : splitAddress[0].trim();\n floorAptRangeFound = _.includes(streetName.split(' ').reverse().join(' ').split(' ', 1)[0], '-');\n }\n });\n if (streetRangeFound) {\n vm.isAddressInValid = true;\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"600\"\n }], null).then(function (response) {\n responseNotificationsService.errorResponse(response[0].data);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n attributePush(\"workFlow:\".concat('error ' + $(\"#manageaccount-modal\").attr(\"businessFunction\")), \"headline:\".concat($(\"#manageaccount-modal\").attr(\"businessFunction\")), \"subheadline:\".concat(document.getElementsByClassName('title-modal')[1].innerHTML), \"returnCode:not set\", \"msgHeader:\".concat(vm.errorNotification.header), \"endpoint:\".concat(assetService.sitecoreEndpoints.addresValidation));\n virtualPagePush($(\"#manageaccount-modal\").attr(\"businessFunction\"), $(\"#manageaccount-modal\").attr(\"businessFunction\"), document.getElementsByClassName('title-modal')[1].innerHTML, 'update', 'error', 'not-set');\n } else if (floorAptRangeFound) {\n $modalInstance.close();\n modalService.manageMissingApt();\n } else {\n $modalInstance.close();\n modalService.manageMultiAddressSuggestion();\n }\n }\n function updateCustomerAccountDetails(data) {\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(function (result) {\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n var mailingaddress = result.d.HouseNo + ' ' + result.d.Street + ' ' + result.d.City + ',' + result.d.State + ' ' + result.d.ZipCd;\n var broadcastData = {\n mailingaddress: mailingaddress,\n addressSelectedFlag: false\n };\n $rootScope.$broadcast('mailingaddress', broadcastData);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mailing address has been successfully updated.');\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\n $rootScope.$broadcast(assetService.events.refreshManageAccountMailingAddress);\n $modalInstance.close();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function goToEditAddress() {\n sessionStorageService.set(assetService.storageKeys.manageAccount.showEditForm, true);\n $modalInstance.close();\n modalService.manageAccountEditMailingAddress();\n }\n function init() {\n load();\n }\n $scope.$watch('$viewContentLoaded', function () {\n $timeout(function () {\n var attributeForDataLayer = sessionStorageService.get('edit-manage-account-details');\n attributePush(\"workFlow:\".concat('error ' + attributeForDataLayer.businessFunction), \"headline:\".concat(attributeForDataLayer.businessFunction), \"subheadline:\".concat(attributeForDataLayer.subHeadLine), \"returnCode:not set\", \"msgHeader:\".concat(attributeForDataLayer.headLine), \"endpoint:\".concat(assetService.sitecoreEndpoints.addresValidation));\n virtualPagePush(attributeForDataLayer.businessFunction, attributeForDataLayer.businessFunction, attributeForDataLayer.subHeadLine, 'Update', 'error', 'not set');\n }, 0);\n });\n init();\n}\n/* eslint-disable no-magic-numbers */\n/* eslint-disable max-len */\n/* eslint-disable id-length */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ManagerAccountController', ManagerAccountController);\nManagerAccountController.$inject = ['$scope', '$state', '$window', '$rootScope', 'accountSearchService', 'assetService', 'commonService', 'sessionStorageService', 'updateCustomerAccountDetailsService', 'genericHelperService', 'modalService', 'getLoggedInUserDetailsService', 'maintainRelationshipService', 'commongaTaggingService', 'componentStateHandler', 'removeProfileExperienceService', 'ccDelegationAssetService', 'getUserRolesAdministrationService'];\nfunction ManagerAccountController($scope, $state, $window, $rootScope, accountSearchService, assetService, commonService, sessionStorageService, updateCustomerAccountDetailsService, genericHelperService, modalService, getLoggedInUserDetailsService, maintainRelationshipService, commongaTaggingService, componentStateHandler, removeProfileExperienceService, ccDelegationAssetService, getUserRolesAdministrationService) {\n /**\r\n * Scope Vars\r\n */\n var _globalAccountInfo = {};\n var _startedFromWatcher = false;\n var _globalSelectedAccount;\n var _successToast = assetService.strings.success;\n var _delAction = assetService.serviceActions.maintainRelationship.DEL_REL;\n var _succes = assetService.replyCodes.S;\n var _fadeOut = assetService.strings.FADEOUT;\n var _fadeInOut = assetService.strings.FADEINOUT;\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.loadingSpinner = true;\n vm.dropdowns = [];\n vm.dropdowns.mailingAddresses = [];\n vm.selectMailingAddress = null;\n vm.disabledDropdown = true;\n vm.title = 'Manage Account';\n vm.mailingAddress = [];\n vm.keysDropdown = [];\n vm.showAdd = false;\n vm.formBtn = true;\n vm.tab = null;\n vm.contractAccountId = '';\n vm.businessPartnerId = '';\n vm.accountOverviewTabs = [];\n vm.roleBase = {};\n vm.role = null;\n vm.state = $state;\n vm.showToast = false;\n vm.data = {};\n vm.mailingAddresses = [];\n vm.getY = 0;\n vm.multiAccounts = false;\n vm.form = {\n accountNumber: null,\n accountNickName: null,\n mailingAddress: null\n };\n vm.userRoles = [];\n vm.hasDelegations = false;\n $rootScope.isPOaddr = false;\n /**\r\n * Function Declarations\r\n */\n vm.addFunction = addFunction;\n vm.cancelAdding = cancelAdding;\n vm.doModal = doModal;\n vm.sendMyLetterModalOpen = sendMyLetterModalOpen;\n vm.isSet = isSet;\n vm.saveChangesForm = saveChangesForm;\n vm.sendAttributionPush = sendAttributionPush;\n vm.stateGo = stateGo;\n vm.showEditNickNameModal = showEditNickNameModal;\n vm.showEditMailingAddressModal = showEditMailingAddressModal;\n vm.closeToast = closeToast;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.accountSearch = accountSearch;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n $scope.init();\n });\n $scope.$on(assetService.events.refreshSendMyLetter, function () {\n showToast();\n $scope.init();\n setTimeout(function () {\n $window.scrollTo(0, vm.getY);\n }, 500);\n });\n\n /**\r\n * $on functions\r\n */\n\n $scope.$on('MailingAddress', function (event, index) {\n var mailingAddresses = _.find(vm.mailingAddresses, function (item) {\n return item.addressNo === vm.dropdowns.mailingAddresses[index].value;\n });\n vm.form.mailingAddress = mailingAddresses;\n });\n $scope.$on('modalManagerConfirm', function (event, doChanges) {\n if (doChanges) {\n removeManagerAccount();\n }\n });\n vm.dropMailingAddress = function (model) {\n if (model.value == '0') {\n vm.showAdd = true;\n vm.formBtn = true;\n } else {\n var address = _.find(vm.mailingAddresses, function (mailingAddress) {\n return mailingAddress.addressNo === model.value;\n });\n vm.form.addressNo = address.addressNo;\n }\n vm.formChange();\n };\n\n /**\r\n * Function Definitions\r\n */\n function addFunction() {\n vm.showAdd = true;\n vm.formBtn = true;\n vm.formChange();\n }\n function stateGo(route) {\n $state.go(route);\n }\n function saveChangesForm() {\n vm.formBtn = true;\n $(document).ready(function () {\n window.onbeforeunload = null;\n });\n var parsedAddress = _.find(vm.mailingAddresses, function (address) {\n return address.addressNo === vm.form.addressNo;\n });\n var parsedCurrentAddress = _.find(vm.mailingAddresses, function (address) {\n return address.addressNo === vm.formModel.addressNo;\n });\n vm.dataToPost = {\n action: assetService.serviceActions.updateCustomerAccountDetails.NICKANDADDR,\n businessPartnerId: vm.businessPartnerId,\n contractAccountId: vm.contractAccountId,\n addressNumber: vm.formModel.addressNo,\n poBox: parsedAddress.poBox || parsedAddress.poBox !== '' ? parsedAddress.poBox : parsedCurrentAddress.poBox,\n houseNo: parsedAddress.houseNo || parsedAddress.houseNo !== '' ? parsedAddress.houseNo : parsedCurrentAddress.houseNo,\n country: parsedAddress.country || parsedAddress.country !== '' ? parsedAddress.country : parsedCurrentAddress.country,\n acctNickname: vm.form.accountNickName\n };\n if (vm.nickNameChangue) {\n vm.dataToPost.action = assetService.serviceActions.updateCustomerAccountDetails.UPD_NICK;\n updateCustomerAccountDetails(vm.dataToPost);\n }\n if (!vm.showAdd) {\n vm.dataToPost.street = parsedAddress.streetName || parsedAddress.streetName !== '' ? parsedAddress.streetName : parsedCurrentAddress.streetName;\n vm.dataToPost.city = parsedAddress.city || parsedAddress.city !== '' ? parsedAddress.city : parsedCurrentAddress.city;\n vm.dataToPost.state = parsedAddress.state || parsedAddress.state !== '' ? parsedAddress.state : parsedCurrentAddress.state;\n vm.dataToPost.zipCd = parsedAddress.zipCode || parsedAddress.zipCode !== '' ? parsedAddress.zipCode : parsedCurrentAddress.zipCode;\n if (vm.addressNoChangue) {\n vm.dataToPost.action = assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING;\n updateCustomerAccountDetails(vm.dataToPost);\n }\n } else {\n vm.dataToPost.street = vm.newMailingAddress.streetAddress;\n vm.dataToPost.city = vm.newMailingAddress.city;\n vm.dataToPost.state = vm.newMailingAddress.state;\n vm.dataToPost.zipCd = vm.newMailingAddress.zipCode;\n vm.dataToPost.action = assetService.serviceActions.updateCustomerAccountDetails.NICKANDADDR;\n updateCustomerAccountDetails(vm.dataToPost);\n }\n }\n function updateCustomerAccountDetails(data) {\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(function (result) {\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n vm.showAdd = false;\n _startedFromWatcher = false;\n load();\n }\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function removeProfileExperience(data, noOfAccounts) {\n return removeProfileExperienceService.sitecore.removeProfileExperience(data).then(function (result) {\n if (result) {\n if (result.MessageText === assetService.replyCodes.SUCCESS || result.MessageText === assetService.replyCodes.Success) {\n if (noOfAccounts === 1) {\n sessionStorageService.set(assetService.storageKeys.dashboard.userType, assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS);\n }\n window.location.href = '/my-account/sign-in/disambiguationpage';\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function maintainRelationship(data) {\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(function (result) {\n if (result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.Type === _succes) {\n if ($rootScope.numberOfResiAccount === 1) {\n removeProfileExperience(data, $rootScope.numberOfAccount);\n }\n vm.showToast = true;\n vm.data.option = _successToast;\n if (vm.roleBase.ownerRole || vm.roleBase.adminRole || vm.roleBase.viewerRole) {\n vm.data.messageOption = 'Success! Account removed.';\n } else {\n vm.data.messageOption = 'The account will be removed overnight.';\n }\n vm.data.show = _fadeInOut;\n attributePush('workFlow:' + 'toast-notification', \"headline:\".concat(vm.data.option), \"subheadline:\".concat(vm.data.messageOption), 'buttonText:' + 'impression', 'addedSpec:' + 'manage-account');\n virtualPagePush('toast-notification', 'manage-account', vm.data.messageOption, 'impression', vm.data.option);\n if (vm.data.option == _successToast) {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n // window.location.href = '/my-account/multiple-accounts-table';\n }, 12000);\n }\n if ($rootScope.numberOfResiAccount > 1) {\n window.location.href = '/my-account/multiple-accounts-table';\n }\n\n // if(vm.contractAccount.length>1){\n\n // window.location.href = '/my-account/multiple-accounts-table';\n\n // } else\n // {\n // window.location.href = 'my-account/Dashboard';\n // }\n }\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function removeManagerAccount() {\n var roleID = '';\n var relationship = '';\n if (_globalAccountInfo.accountSelected.relationship) {\n relationship = _globalAccountInfo.accountSelected.relationship;\n }\n if (_globalAccountInfo.accountSelected.role === assetService.roles.owner) {\n roleID = '014';\n } else if (_globalAccountInfo.accountSelected.role === assetService.roles.admin) {\n roleID = '001';\n } else if (_globalAccountInfo.accountSelected.role === assetService.roles.viewer) {\n roleID = '012';\n }\n var data = {\n action: _delAction,\n businessPartnerId: vm.businessPartnerId,\n relatedBPEmail: vm.currentUser.emailId,\n sessionNo: '',\n cdpid: vm.currentUser.cdpId,\n accounts: [{\n contractAccountId: vm.contractAccountId,\n relationship: relationship || roleID,\n caAccessEndDate: moment().subtract(1, 'days').format('YYYY-MM-DDTHH:mm:ss')\n }]\n };\n maintainRelationship(data);\n }\n function getRole() {\n vm.roleBase = {};\n switch (_globalAccountInfo.accountSelected.role) {\n case assetService.roles.owner:\n vm.roleBase.ownerRole = true;\n vm.role = genericHelperService.capitalize(assetService.roles.owner);\n break;\n case assetService.roles.admin:\n vm.roleBase.adminRole = true;\n vm.role = genericHelperService.capitalize(assetService.roles.admin);\n break;\n case assetService.roles.viewer:\n vm.roleBase.viewerRole = true;\n vm.role = genericHelperService.capitalize(assetService.roles.viewer);\n break;\n default:\n vm.roleBase.viewerRole = true;\n }\n }\n function cancelAdding() {\n vm.showAdd = false;\n vm.newMailingAddress = {};\n vm.formChange();\n }\n function doModal() {\n angular.element('#ManagerModalModal').modal('show');\n }\n function sendMyLetterModalOpen() {\n vm.getY = $window.scrollY;\n modalService.sendMyLetterModal(vm.getY);\n }\n vm.formChange = function () {\n vm.disabledSave = false;\n vm.accountForm = genericHelperService.validateObj(vm.form, vm.formModel);\n if (vm.showAdd) {\n var _vm$newMailingAddress = vm.newMailingAddress,\n streetAddress = _vm$newMailingAddress.streetAddress,\n state = _vm$newMailingAddress.state,\n city = _vm$newMailingAddress.city,\n zipCode = _vm$newMailingAddress.zipCode;\n vm.disabledSave = !streetAddress || !state || !city || !zipCode;\n vm.disabledSave = !(!vm.accountForm || !vm.disabledSave);\n } else vm.disabledSave = vm.accountForm;\n vm.nickNameChangue = vm.form.accountNickName !== vm.formModel.accountNickName;\n vm.addressNoChangue = vm.form.addressNo !== vm.formModel.addressNo;\n };\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function setModels() {\n vm.disabledDropdown = true;\n var item = vm.accountData.mailingAddress;\n var addr = '';\n if (item.Country === 'US') {\n var apartment = item.unit ? \" \".concat(item.unit) : '';\n var housNoAndAddressOrPoBox = item.houseNo === '' && item.streetAddress === '' && apartment === '' ? \" PO Box \".concat(item.poBox) : \" \".concat(item.houseNo, \" \").concat(item.streetAddress).concat(apartment);\n addr = \"\".concat(housNoAndAddressOrPoBox, \", \").concat(item.city, \", \").concat(item.state, \" \").concat(item.zipCode);\n if (item.houseNo === '' && item.streetAddress === '' && apartment === '') {\n $rootScope.isPOaddr = true;\n }\n } else {\n addr = \"\".concat(item.IntlAddressLine1, \" \").concat(item.IntlAddressLine2, \" \").concat(item.IntlAddressLine3, \" \").concat(item.Country);\n addr = addr.trim();\n }\n vm.form = {\n accountNumber: vm.accountData.contractAccountNo,\n accountNickName: vm.accountData.accountNickName,\n addressNo: vm.accountData.mailingAddress.addressNo,\n address: addr\n };\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountNickName, vm.form.accountNickName);\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddress, vm.form.address);\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject, vm.accountData.mailingAddress);\n if (vm.roleBase.ownerRole === true && vm.hasDelegations == true) {\n vm.accountOverviewTabs = [{\n title: 'Billing & Payment Programs',\n selected: 'selected',\n route: 'manageAccount.billingAndPaymentPrograms'\n }\n // commenting this code as account permission is not part of AO and R8\n // {\n // title: 'Account Permissions',\n // selected: ' ',\n // route: 'manageAccount.delegatedAccountUsers',\n // },\n ];\n } else {\n vm.accountOverviewTabs = [{\n title: 'Billing & Payment Programs',\n selected: 'selected',\n route: 'manageAccount.billingAndPaymentPrograms'\n }];\n }\n vm.formModel = genericHelperService.notReferenceObjects(vm.form);\n }\n function load() {\n var _accountsList$account;\n $window.scrollTo(0, 0);\n vm.loadingSpinner = true;\n vm.disabledSave = true;\n if (_globalAccountInfo.accountSelected.accountNum && _globalAccountInfo.accountSelected.bpNumber) {\n vm.contractAccountId = _globalAccountInfo.accountSelected.accountNum;\n vm.businessPartnerId = _globalAccountInfo.accountSelected.bpNumber;\n vm.emailId = vm.currentUser.emailId;\n sessionStorageService.set(assetService.storageKeys.cdpUserId, vm.currentUser.cdpId);\n sessionStorageService.set(assetService.storageKeys.businessPartnerId, vm.businessPartnerId);\n sessionStorageService.set(assetService.storageKeys.contractAccountId, vm.contractAccountId);\n sessionStorageService.set(assetService.storageKeys.emailId, vm.emailId);\n } else {\n vm.businessPartnerId = sessionStorageService.get(assetService.storageKeys.businessPartnerId);\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.emailId = sessionStorageService.get(assetService.storageKeys.emailId);\n }\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n vm.unenroll = _globalSelectedAccount.prepaid;\n var accountData = {\n contractAccountId: vm.contractAccountId,\n businessPartnerId: vm.businessPartnerId,\n emailId: vm.emailId\n };\n sessionStorageService.set(assetService.storageKeys.testData.accountData, accountData);\n var accountsList = sessionStorageService.get(assetService.storageKeys.accountSelector);\n if ((accountsList === null || accountsList === void 0 || (_accountsList$account = accountsList.accounts) === null || _accountsList$account === void 0 ? void 0 : _accountsList$account.length) > 1) {\n vm.multiAccounts = true;\n }\n var promises = [vm.accountSearch(accountData), getRole(), getUserRoles()];\n commonService.executePromises(promises).then(function () {\n setModels();\n componentStateHandler.showComponent(vm);\n stateGo('manageAccount.billingAndPaymentPrograms');\n });\n }\n function accountSearch(data) {\n var paramData = {\n contractAccountId: data.contractAccountId,\n dataSource: assetService.strings.ISU,\n requestingFunction: assetService.serviceActions.accountSearch.ACC_SEARCH_MANAGED\n };\n return accountSearchService.sitecore.accountSearch(paramData).then(function (result) {\n if (result) {\n var contractAccounts = _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results, function (item) {\n return {\n contractAccountNo: item.AccountNumber,\n accountNickName: item.AccountNickname,\n mailingAddress: {\n address: item.AccountMailingAddress,\n addressNo: item.AddressNumber,\n city: item.City,\n state: item.State,\n zipCode: item.ZipCode,\n streetAddress: item.StreetName,\n houseNo: item.HouseNum,\n poBox: item.POBox,\n unit: item.Unit,\n IntlAddressLine1: item.IntlAddressLine1,\n IntlAddressLine2: item.IntlAddressLine2,\n IntlAddressLine3: item.IntlAddressLine3,\n Country: item.Country\n }\n };\n });\n _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAdd.results, function (item) {\n var apartment = item.Unit ? \" \".concat(item.Unit) : '';\n var housNoAndAddressOrPoBoxDrop = item.HouseNum === '' && item.StreetName === '' && apartment === '' ? \" PO Box \".concat(item.POBox) : \" \".concat(item.HouseNum, \" \").concat(item.StreetName).concat(apartment);\n var addr = {\n address: item.Country.toUpperCase() === 'US' ? \"\".concat(housNoAndAddressOrPoBoxDrop, \", \").concat(item.City, \", \").concat(item.State, \" \").concat(item.ZipCode) : \"\".concat(item.IntlAddressLine1, \" \").concat(item.IntlAddressLine2, \" \").concat(item.IntlAddressLine3, \" \").concat(item.Country),\n addressNo: item.AddressNumber,\n city: item.City,\n state: item.State,\n zipCode: item.ZipCode,\n streetName: item.StreetName,\n streetSuffix: item.StreetSuffix,\n houseNo: item.HouseNum,\n poBox: item.POBox,\n unit: item.Unit,\n country: item.County,\n IntlAddressLine1: item.IntlAddressLine1,\n IntlAddressLine2: item.IntlAddressLine2,\n IntlAddressLine3: item.IntlAddressLine3,\n Country: item.Country\n };\n vm.mailingAddresses.push(addr);\n });\n vm.dropdowns.mailingAddresses = _.map(_.uniq(vm.mailingAddresses, assetService.strings.address), function (item) {\n return {\n text: item.address,\n value: item\n };\n });\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddressDropdown, vm.dropdowns.mailingAddresses);\n vm.dropdowns.mailingAddresses.push({\n text: 'Add New Mailing Address',\n value: '0'\n });\n vm.contractAccount = contractAccounts;\n vm.accountData = _.find(contractAccounts, function (account) {\n return account.contractAccountNo === vm.contractAccountId;\n });\n vm.addresText = vm.accountData.mailingAddress.address;\n } else {\n componentStateHandler.failedState(vm);\n }\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function sendAttributionPush(index) {\n var analyticsToPush = {\n 'event-category': 'manage_account',\n 'event-action': 'tab-navigation-|-',\n 'event-label': 'manage-account-|-account-overview ',\n event: 'fire-event'\n };\n switch (index) {\n case 0:\n analyticsToPush['event-action'] = analyticsToPush['event-action'].concat('billing-payment-programs');\n break;\n case 1:\n analyticsToPush['event-action'] = analyticsToPush['event-action'].concat('products-and-services');\n break;\n case 2:\n analyticsToPush['event-action'] = analyticsToPush['event-action'].concat('delegated-account-user');\n break;\n }\n $rootScope.attributePush(analyticsToPush['event-category'], analyticsToPush['event-action'], analyticsToPush['event-label'], analyticsToPush.event);\n }\n\n /**\r\n * Initialization\r\n */\n $scope.init = function () {\n vm.loadingSpinner = true;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo && !_startedFromWatcher) {\n if (!assetService.apiConfig.useLocalHost) {\n vm.currentUser = {\n emailId: $rootScope.currentUserEmailId,\n cdpId: $rootScope.currentUserCdpId\n };\n load();\n } else {\n vm.currentUser = {\n emailId: '',\n // Get Primary Bp\n cdpId: '' // Get Primary Bp // Get Primary Bp\n };\n load();\n }\n }\n };\n function showEditNickNameModal() {\n modalService.manageAccountEditNickName();\n }\n function showEditMailingAddressModal() {\n sessionStorageService.set(assetService.storageKeys.manageAccount.showEditForm, false);\n modalService.manageAccountEditMailingAddress();\n }\n function closeToast() {\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }\n function getUserRoles() {\n var dataObject = {\n businessPartnerId: _globalSelectedAccount.primaryBp,\n contractAccountId: _globalSelectedAccount.accountNum,\n requestedBy: '',\n sessionNo: '',\n emailId: vm.currentUser.emailId,\n experience: ''\n };\n getUserRolesAdministrationService.sitecore.getUserRoles(dataObject).then(function (result) {\n if (result) {\n vm.userRoles = result.d.results[0].ZDIG_USERROL_REQ_TO_PBP.results[0].ZDIG_USERROL_PBP_TO_CA.results[0].ZDIG_USERROL_CA_TO_DELEGTED.results;\n vm.userRoles = vm.userRoles.filter(function (value) {\n return value.DelegationStat === 'ACTIVE';\n });\n vm.userRoles = vm.userRoles.filter(function (value) {\n return value.Relationship !== '002' && value.Relationship !== '014';\n });\n if (vm.userRoles.length > 0) {\n vm.hasDelegations = true;\n }\n }\n }, function (error) {\n if (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }\n });\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n $scope.$on('nickname', function (event, returnObj) {\n vm.form.accountNickName = returnObj.accName;\n vm.accountData.accountNickName = vm.form.accountNickName;\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountNickName, returnObj.accName);\n $rootScope.$broadcast('nicknameForAccountSelector', returnObj);\n });\n $scope.$on('mailingaddress', function (event, address) {\n vm.form.address = address.mailingaddress;\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddress, address.mailingaddress);\n $rootScope.$broadcast('mailingaddressForAccountSelector');\n var accountData = {\n contractAccountId: vm.contractAccountId,\n businessPartnerId: vm.businessPartnerId,\n emailId: vm.emailId\n };\n if (!address.addressSelectedFlag) {\n var promises = [vm.accountSearch(accountData)];\n commonService.executePromises(promises).then(function () {\n setModels();\n });\n }\n });\n $scope.$on(assetService.events.refreshManageAccountNickName, function () {\n showToast();\n });\n $scope.$on(assetService.events.refreshManageAccountMailingAddress, function () {\n showToast();\n });\n function showToast() {\n vm.showToast = true;\n vm.data.option = sessionStorageService.get(assetService.storageKeys.manageAccount.toastNotification);\n vm.data.messageOption = sessionStorageService.get(assetService.storageKeys.manageAccount.toastNotificationMessage);\n vm.data.show = sessionStorageService.get(assetService.storageKeys.manageAccount.toastNotificationtime);\n attributePush('workFlow:' + 'toast-notification', \"headline:\".concat(vm.data.option), \"subheadline:\".concat(vm.data.messageOption), 'buttonText:' + 'impression', 'addedSpec:' + 'manage-account');\n virtualPagePush('toast-notification', 'manage-account', vm.data.messageOption, 'impression', vm.data.option);\n if (vm.data.option == _successToast || vm.data.option == _errorToast) {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = assetService.strings.FADEINOUT;\n vm.showToast = false;\n }, 12000);\n }\n }\n}\napp.controller('ManagerModalController', ManagerModalController);\nManagerModalController.$inject = ['$scope', 'sessionStorageService', 'assetService', 'commongaTaggingService'];\nfunction ManagerModalController($scope, sessionStorageService, assetService, commongaTaggingService) {\n $scope.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n $scope.showCheckboxAlert = false;\n $scope.doChanges = function (doChanges, event, checkbox, vp1, vp2, vp3, vp4, vp5, at1, at2, at3, at4) {\n if (doChanges === false) {\n angular.element('#ManagerModalModal').modal('hide');\n $scope.$emit('modalManagerConfirm', doChanges);\n $scope.mm.checkboxConfirmChecked = false;\n }\n if (doChanges && checkbox) {\n if (event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n $('.title-modal').addClass('subheadline');\n }\n angular.element('#ManagerModalModal').modal('hide');\n virtualPagePush(vp1, vp2, vp3, vp4, vp5);\n attributePush(at1, at2, at3, at4);\n $scope.$emit('modalManagerConfirm', doChanges);\n } else if (doChanges === false) {\n $scope.showCheckboxAlert = false;\n } else {\n $scope.showCheckboxAlert = true;\n }\n };\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n}\napp.controller('CCAutoReloadTrack', CCAutoReloadTrack);\nCCAutoReloadTrack.$inject = ['$log', '$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'getPrepaidDetailsService', 'getEligibilityForAutoReloadService', 'commongaTaggingService', '$location'];\nfunction CCAutoReloadTrack($log, $state, $scope, $rootScope, assetService, sessionStorageService, getPrepaidDetailsService, getEligibilityForAutoReloadService, commongaTaggingService, $location) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.init = init;\n /* --------------Global Vars-----------------------*/\n vm.moveStorage = {};\n vm.start = {};\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n addedSpec: '',\n warningMsg: ''\n };\n vm.workFlow = '';\n vm.headline = '';\n vm.buttonText = '';\n vm.virtual = [];\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n vm.mainPathStep = '';\n $rootScope.mainBtnActivate = false;\n $rootScope.apiValidation = false;\n $rootScope.btnType = true;\n $rootScope.editBtn = true;\n $rootScope.stepsShow = true;\n vm.steps = assetService.autoReload.steps;\n vm.paths = assetService.autoReload.paths;\n vm.position = assetService.autoReload.position;\n vm.showShellButtons = false;\n vm.loading = false;\n vm.cyclePath = [{\n path: vm.paths.reloadWhen,\n change: true,\n pathAlt: vm.paths.altPath,\n nameBtn: 'CONTINUE',\n vpv: 'fire-vpv',\n vpvName: '/vpv/authenticated/prepaid-advantage/auto-reload/reload-when/select-when-you-would-like-funds-to-be-automatically-reloaded/continue',\n vpvNameError: '/vpv/authenticated/prepaid-advantage/auto-reload/reload-when/select-when-you-would-like-funds-to-be-automatically-reloaded/cancel'\n }, {\n path: vm.paths.reloadAmount,\n change: true,\n pathAlt: vm.paths.altPath,\n vpv: 'fire-vpv',\n vpvName: '/vpv/authenticated/prepaid-advantage/auto-reload/reload-amount/select-a-reload-amount/continue',\n vpvNameError: '/vpv/authenticated/prepaid-advantage/auto-reload/reload-amount/select-a-reload-amount/previous'\n }, {\n path: vm.paths.paymentMethod,\n change: true,\n pathAlt: vm.paths.altPath\n }, {\n path: vm.paths.reviewAndEnroll,\n change: true,\n pathAlt: vm.paths.altPath\n }, {\n path: vm.paths.succes,\n change: false,\n pathAlt: vm.paths.altPath\n }];\n vm.error = false;\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function load() {\n var urlParams = $location.search();\n var externalId = urlParams.externalId,\n expirationDate = urlParams.expirationDate;\n if (externalId != null && expirationDate != null && externalId != '' && expirationDate != '') {\n vm.showShellButtons = true;\n $state.go(vm.cyclePath[vm.position.fourth].path);\n return;\n }\n if (externalId != null && externalId != '' && expirationDate == null) {\n location.href = \"\".concat(location.pathname, \"/failure\");\n return;\n }\n $state.go(vm.cyclePath[vm.position.first].path);\n vm.showShellButtons = true;\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Functions Definition-------------------*/\n vm.getPrepaidDetails = getPrepaidDetails;\n vm.getEligibilityForAutoReload = getEligibilityForAutoReload;\n /* ---------------Initialization-------------------*/\n function getPrepaidDetails(data) {\n vm.loading = true;\n getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(function (result) {\n vm.autoReloadTrack.averageCostPerDay = result.d.PrepaidToBP.results[0].BPToCA.results[0].AverageCostPerDay;\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReloadTrack);\n load();\n vm.loading = false;\n }, function (error) {\n vm.loading = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getEligibilityForAutoReload(data) {\n data.action = assetService.events.GET_ELIG;\n vm.loading = true;\n getEligibilityForAutoReloadService.sitecore.getEligibilityForAutoReload(data).then(function (result) {\n if (result.d.AREligibility_NAV.Eligible === assetService.autoReload.ELIGIBLE) {\n getPrepaidDetails(data);\n vm.error = false;\n } else if (result.d.AREligibility_NAV.Eligible === assetService.autoReload.ENROLLED) {\n window.location.href = '/my-account/manage-auto-reload';\n } else {\n attributePush('workFlow: error ' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'buttonText:' + 'not set', 'addedSpec:' + assetService.sitecoreEndpoints.GetEligibilityForAutoReload, 'addedEvent:' + vm.taggingElements.warningMsg);\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, 'error', 'not set');\n vm.error = true;\n }\n vm.loading = false;\n }, function (error) {\n vm.loading = false;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function init(workflow, headline, subHeadline, buttonText, addedSpec, warningMsg) {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n var data = {\n businessPartnerId: _globalSelectedAccount.primaryBp,\n contractAccountId: _globalSelectedAccount.accountNum,\n bankDetail: false\n };\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n vm.autoReloadTrack = storage || data;\n vm.getEligibilityForAutoReload(data);\n vm.taggingElements.workflow = workflow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subHeadline;\n vm.taggingElements.buttonText = buttonText;\n vm.taggingElements.addedSpec = addedSpec;\n vm.taggingElements.warningMsg = warningMsg;\n }\n $scope.$on('moveTrack', function (data) {\n vm.pathStep = data.path;\n vm.btnActivate = data.btn;\n });\n $scope.$on('classTrack', function (event, data) {\n if (data === 'startTrack.review') {\n vm.mainPathStep = 'review';\n } else {\n vm.mainPathStep = data;\n }\n });\n $scope.$on('changueTrackSelected', function (event, data) {\n if (data.track || data.track === 0) {\n vm.mainPathStep = vm.cyclePath[data.track];\n var goTo = vm.cyclePath[data.track];\n vm.track = data.track;\n if (data.track === 1) {\n attributePush(\"workFlow:\".concat(vm.taggingElements.workflow), \"headline:\".concat(vm.taggingElements.headline), \"subheadline:\".concat(vm.taggingElements.subHeadline), \"buttonText:\".concat(vm.taggingElements.buttonText), \"addedSpec:\".concat(vm.taggingElements.addedSpec));\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, vm.taggingElements.subHeadline, vm.taggingElements.buttonText, vm.taggingElements.addedSpec);\n }\n $state.go(goTo.path);\n }\n vm.stepTrack = data.step;\n });\n\n // init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCStatementsShell', CCStatementsShell);\nCCStatementsShell.$inject = ['$state', '$scope', 'assetService', 'prepaidService'];\nfunction CCStatementsShell($state, $scope, assetService, prepaidService) {\n /* Scope Vars */\n var vm = this;\n\n /* Function definitions */\n\n function load() {\n $state.go(prepaidService.prepaidRouteState.STATEMENTS);\n }\n\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\n // globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n // if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n // globalSelectedAccount = globalAccountInfo.accountSelected;\n // }\n\n // vm.loadingSpinner = true;\n // load();\n // });\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCPrepaid', CCPrepaid);\nCCPrepaid.$inject = ['$state', '$scope', 'sessionStorageService', 'assetService', 'prepaidService'];\nfunction CCPrepaid($state, $scope, sessionStorageService, assetService, prepaidService) {\n /* Scope Vars */\n var vm = this;\n vm.loadingSpinner = true;\n var _globalAccountInfo;\n vm.isPrepaid = false;\n vm.unEnrollSuccess = false;\n /* Global Vars */\n\n /* Function declarations */\n\n /* Function definitions */\n $scope.$on('unEnrollSuccess', function (event, data) {\n vm.unEnrollSuccess = true;\n });\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var _globalSelectedAccount = _globalAccountInfo.accountSelected;\n vm.isPrepaid = _globalSelectedAccount.prepaid;\n if (vm.isPrepaid) {\n //$state.go(prepaidService.prepaidRouteState.UNENROLL_LOOSE_BENEFITS);\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\n } else {\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\n }\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable indent */\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\napp.controller('PaymentAssistance', PaymentAssistance);\nPaymentAssistance.$inject = ['$log', '$scope', 'assetService', 'installmentpaymentplansandeligibilityservice', 'getEnrollmentStatusOfExtensionPlanService', 'getAccountBalanceForRegularAccountService', '$rootScope', 'sessionStorageService', 'getActiveInstallmentPlansService', 'commonService', 'cookieService', 'commongaTaggingService', 'getLoggedInUserDetailsService'];\nfunction PaymentAssistance($log, $scope, assetService, installmentpaymentplansandeligibilityservice, getEnrollmentStatusOfExtensionPlanService, getAccountBalanceForRegularAccountService, $rootScope, sessionStorageService, getActiveInstallmentPlansService, commonService, cookieService, commongaTaggingService, getLoggedInUserDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.roleBase = {};\n vm.dueDate = false;\n vm.disconnect = false;\n vm.Installment = false;\n vm.SecurityDepositFlag = false;\n vm.data = {\n contractAccountId: null\n };\n vm.loadingSpinner = true;\n vm.manageInstallmentPlans = false;\n vm.nonAplicable = false;\n vm.showCPI = false;\n vm.installmentPlan = {};\n vm.currentUser = {}; // Get RequestedBy value\n vm.extendedDueDateNew = null;\n vm.extendedDatePlusOneYear = null;\n var ohioJurisdiction = 'OH01';\n var _depositSd = 'Security Deposit';\n var _utilityEsc = 'Energy Service Charges';\n var _deposit = 'deposit';\n vm.guid = '';\n vm.highCPI = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.goToPage = goToPage;\n vm.gatGenerate = gatGenerate;\n vm.getCpiAndCashOnlyData = getCpiAndCashOnlyData;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.IPAnalytics = IPAnalytics;\n /* --------------Function Definitions-----------------------*/\n function goToPage(event) {\n event.stopPropagation();\n event.preventDefault();\n cookieService.setCookie('payment-assistance-validation', true, null, 1, null, null, null);\n window.location.href = event.target.href;\n }\n function IPAnalytics(action) {\n if (vm.manageInstallmentPlans) {\n pushDL('payment-assistance-options', $rootScope.dataLayerFormat(action.toLowerCase()), 'payment-assistance-options-|-installment-plan');\n } else {\n pushDL('payment-assistance-options', $rootScope.dataLayerFormat(action.toLowerCase()), 'payment-assistance-options-|-installment-plan');\n }\n }\n function gatGenerate() {\n attributePush(\"workFlow:\".concat($('#dueDateExtensions').attr('businessFunction')), \"headline:\".concat($('#dueDateExtensions').attr('headLine')), \"subheadline:\".concat($('#dueDateExtensions').attr('subhead')), \"buttonText:\".concat($('#dueDateExtensions').attr('buttonText')));\n virtualPagePush($('#dueDateExtensions').attr('businessFunction'), $('#dueDateExtensions').attr('headLine'), $('#dueDateExtensions').attr('subhead'), $('#dueDateExtensions').attr('buttonText'));\n }\n function getRole() {\n vm.roleBase = {};\n switch (globalAccountInfo.accountSelected.role) {\n case assetService.roles.owner:\n vm.roleBase.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.roleBase.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.roleBase.viewerRole = true;\n break;\n default:\n vm.roleBase.viewerRole = true;\n }\n }\n function getCpiAndCashOnlyData(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n vm.loadingSpinner = false;\n var accountData = result.getAccountAndBillingInfoResList.find(function (account) {\n return account.contractAccountNumber.toString() === data.accountList[0].contractAccountNumber;\n });\n vm.cpiMessage = accountData.messageList[0].message;\n var downPayDueAmount = (accountData.installmentAmount || 0) - (accountData.pendPmtDlrs || 0);\n vm.highCPI = Number(accountData.totalDueDlrs || '') > 0 && downPayDueAmount > 0;\n }, function (error) {\n vm.loadingSpinner = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.loadingSpinner = true;\n vm.guid = angular.element('#guid').val();\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n getRole();\n if (globalSelectedAccount.accountNum) {\n var contractAccountId = globalSelectedAccount.accountNum;\n sessionStorageService.set(assetService.storageKeys.contractAccountId, contractAccountId);\n vm.data.contractAccountId = contractAccountId;\n vm.jurisdiction = globalSelectedAccount.jurisdiction === ohioJurisdiction;\n if (!vm.jurisdiction) {\n $('.simple-wide-card:eq(1)').hide();\n }\n } else {\n vm.data.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n }\n var contractAccountNumber = vm.data.contractAccountId;\n var promises = [getActiveInstallmentPlans({\n contractAccountId: vm.data.contractAccountId,\n requestedBy: vm.currentUser.emailId\n }), getInstallmentPlans(contractAccountNumber)];\n commonService.executePromises(promises).then(function () {\n if (vm.installmentPlan.length > 0) {\n vm.manageInstallmentPlans = true;\n getCpiAndCashOnlyData({\n accountList: [{\n contractAccountNumber: contractAccountNumber,\n zipCode: globalSelectedAccount.zipCode\n }]\n });\n } else {\n vm.loadingSpinner = false;\n }\n });\n function getActiveInstallmentPlans(data) {\n return getActiveInstallmentPlansService.sitecore.getActiveInstallmentPlans(data).then(function (result) {\n var _result$d;\n if (result.d.ReqCA.results.length > 0 && result.d.ReqCA.results[0].Messages.MessageNum !== '478') {\n vm.installmentPlan = _.map(result.d.ReqCA.results, function (plan) {\n return {\n numberOfInstallments: plan.NumberOfInstallments,\n installmentsRemaining: plan.NumberOfInstallments - plan.NumberOfInstallmentsRemaining\n };\n });\n if (vm.installmentPlan[0].installmentsRemaining === 0 && result.d.ReqCA.results[0].DownPayment > 0) {\n vm.showCPI = true;\n }\n }\n if ((result === null || result === void 0 || (_result$d = result.d) === null || _result$d === void 0 || (_result$d = _result$d.ReqCA) === null || _result$d === void 0 || (_result$d = _result$d.results[0]) === null || _result$d === void 0 ? void 0 : _result$d.SecurityDepositFlag) === 'X' && result.d.ReqCA.results[0].Messages.MessageNum !== '477') {\n vm.SecurityDepositFlag = true;\n sessionStorageService.set(assetService.storageKeys.paymentAssistance.securityDepositflag, 'X');\n }\n if (vm.SecurityDepositFlag) {\n vm.nonAplicable = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getInstallmentPlans(data) {\n return installmentpaymentplansandeligibilityservice.sitecore.instalmentPaymentPlansAndEligibilityCheck(data).then(function (result) {\n if (result.d.ReqCA.results.length > 0 && result.d.ReqCA.results[0].Messages.MessageNum !== '478') {\n if (result.d.ReqCA.results[0].PaymentPlan && result.d.ReqCA.results[0].PaymentPlan.results.length > 0) {\n vm.Installment = true;\n }\n if (result.d.ReqCA.results[0].Extensions) {\n var extension = result.d.ReqCA.results[0].Extensions;\n sessionStorageService.set(assetService.storageKeys.paymentAssistance.extension, extension);\n if (extension.DeferralDate !== null) {\n vm.dueDate = true;\n } else if (extension.DisconnectDate !== null) {\n vm.disconnect = true;\n }\n }\n getEnrollmentStatusOfExtensionPlan({\n contractAccountId: vm.data.contractAccountId,\n action: assetService.serviceActions.getEnrollmentOfExtensionPlan.DUEDATE\n });\n getEnrollmentStatusOfExtensionPlan({\n contractAccountId: vm.data.contractAccountId,\n action: assetService.serviceActions.getEnrollmentOfExtensionPlan.DISCDATE\n });\n }\n if (vm.Installment === false && vm.disconnect === false && vm.dueDate === false) {\n vm.nonAplicable = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getEnrollmentStatusOfExtensionPlan(data) {\n return getEnrollmentStatusOfExtensionPlanService.sitecore.GetEnrollmentStatusOfExtensionPlans(data).then(function (result) {\n if (result.d.Action === 'DUEDATE' && result.d.DueDate) {\n vm.extendedDueDateNew = result.d.DueDate.ExtendedDueDate ? moment.utc(result.d.DueDate.ExtendedDueDate).format('MM/DD/YYYY') : '';\n sessionStorageService.set(assetService.storageKeys.paymentAssistance.extendedDueDate, vm.extendedDueDateNew);\n } else if (result.d.Action === 'DISCDATE' && result.d.DisconnectionDate) {\n vm.extendedDisconnectDate = result.d.DisconnectionDate.ExtendedDisconnectionDate ? moment.utc(result.d.DisconnectionDate.ExtendedDisconnectionDate).format('MM/DD/YYYY') : '';\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n pushVPV('/vpv/de/page/payment-assistance-options/load/payment-assistance-options');\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function reset() {\n vm.dueDate = false;\n vm.disconnect = false;\n vm.Installment = false;\n vm.SecurityDepositFlag = false;\n vm.data = {\n contractAccountId: null\n };\n vm.loadingSpinner = true;\n vm.installmentPlan = {};\n vm.manageInstallmentPlans = false;\n vm.nonAplicable = false;\n vm.showCPI = false;\n }\n\n /* ---------------Google Analytics-------------------*/\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n\n /* ---------------Initialization-------------------*/\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n vm.loadingSpinner = true;\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n reset();\n vm.currentUser = {\n emailId: $rootScope.currentUserEmailId,\n cdpId: $rootScope.currentUserCdpId\n };\n load();\n });\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageProfileChangeEmail', ModalManageProfileChangeEmail);\nModalManageProfileChangeEmail.$inject = ['$modalInstance', 'sessionStorageService', 'assetService', 'commongaTaggingService'];\nfunction ModalManageProfileChangeEmail($modalInstance, sessionStorageService, assetService, commongaTaggingService) {\n /* -------------- Vars-----------------------*/\n var vm = this;\n vm.newEmail = sessionStorageService.get(assetService.storageKeys.profileSettingNewEmail);\n vm.closeModal = closeModal;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n}\napp.controller('profileLinkingNewUserYesNoController', profileLinkingNewUserYesNoController);\nprofileLinkingNewUserYesNoController.$inject = ['$element', '$scope', '$timeout', '$window'];\nfunction profileLinkingNewUserYesNoController($element, $scope, $timeout, $window) {\n /*--------------Scope Vars-----------------------*/\n\n /*--------------Global Vars-----------------------*/\n var vm = this;\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('ProfileSettings', ProfileSettings);\nProfileSettings.$inject = ['$scope', '$window', '$log', '$location', 'assetService', 'commonService', 'accountSearchService', 'readAndDerivePreferencesService', 'sessionStorageService', 'getLoggedinBPDetailsAndAssociatedAccountsService', 'getLoggedInUserDetailsService', 'ccGetUserAccountsService', 'profileExperiencesService', 'ccAddAccountAssetService', 'accountSearchService', 'errorHandlingService', 'commongaTaggingService', 'ccGetUserBPDetailsService', 'getDeepLinkedPrimaryBPService', 'getRelatedBpforRegistration', 'cookieService'];\nfunction ProfileSettings($scope, $window, $log, $location, assetService, commonService, accountSearchService, readAndDerivePreferencesService, sessionStorageService, getLoggedinBPDetailsAndAssociatedAccountsService, getLoggedInUserDetailsService, ccGetUserAccountsService, profileExperiencesService, ccAddAccountAssetService, accountSearchService, errorHandlingService, commongaTaggingService, ccGetUserBPDetailsService, getDeepLinkedPrimaryBPService, getRelatedBpforRegistration, cookieService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _profileSettingsData = null;\n vm.currentUser = {\n emailId: null,\n cdpId: null\n };\n vm.primaryBp = null;\n vm.Accounts = [];\n vm.accSearchRequest = {};\n vm.readDerivePreferencesRequest = {};\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n emailAccounts: [],\n emailSubscriptions: [],\n phoneNumbers: [],\n restToBp: {},\n currentUser: {}\n };\n vm.loaded = false;\n var _allEmails = [];\n var _allPhones = [];\n vm.showexperiance = false;\n vm.interimMessage = false;\n vm.multipleBpPresent = false;\n vm.showPreferenceLink = true;\n /* --------------Function Declarations-----------------------*/\n vm.navigateToAddAccountPage = navigateToAddAccountPage;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n\n /* ---------------Initialization-------------------*/\n\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function navigateToAddAccountPage() {\n window.location.href = '/my-account/add-account-r5';\n }\n function load() {\n $window.scrollTo(0, 0);\n if (!vm.interimMessage && !vm.showexperiance) {\n vm.loaded = true;\n vm.data.isLegacyAccount = true;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.data);\n } else {\n vm.data.isLegacyAccount = false;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.data);\n accountSearch({\n businessPartnerId: vm.primaryBp,\n dataSource: assetService.strings.ISU\n }).then(function (result) {\n var promises = [];\n // promises.push(getProfileExperiences({emailId: (!vm.currentUser.emailId ? vm.primaryEmail.EmailAddress : vm.currentUser.emailId) }));\n var readDerivePreferencesRequest = {\n businessPartnerId: vm.primaryBp,\n emailId: vm.currentUser.emailId,\n cdpId: vm.currentUser.cdpId,\n contractAccountId: ''\n };\n promises.push(readAndDerivePreferences(readDerivePreferencesRequest));\n commonService.executePromises(promises).then(function (result) {\n vm.loaded = true;\n });\n }, function (error) {\n return errorHandlingService.getException(error);\n });\n }\n }\n function readAndDerivePreferences(readDerivePreferencesRequest) {\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(readDerivePreferencesRequest).then(function (result) {\n var phones = [];\n var _allPhones = [];\n phones = _.map(result.d.results[0].Partner_Contact.results, function (item) {\n return {\n consumeNumber: item.ConsNumber,\n phone: item.PhoneNumber,\n type: item.Type,\n notDisturbStart: item.DND_Start_TIime,\n notDisturbEnd: item.DND_Stop_Time,\n preferredPhone: item.Primary,\n addressNumber: item.AddrNumber\n // remark: item.Remark\n };\n });\n phones.forEach(function (element) {\n // if(element.remark === '') {\n _allPhones.push(element);\n // }\n });\n vm.data.phoneNumbers = _.uniq(_allPhones, 'phone');\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.data);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n $scope.$on(assetService.events.refreshPSLandingPage, function () {\n init();\n });\n $scope.$on(assetService.events.refreshPreferredPhone, function () {\n var sessionDataValue = sessionStorageService.get(assetService.storageKeys.profileSettings);\n var readDerivePreferencesRequest = {\n businessPartnerId: sessionDataValue.primaryBp,\n emailId: sessionDataValue.currentUser.email,\n cdpId: sessionDataValue.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n });\n function getProfileExperiences(payload) {\n return profileExperiencesService.sitecore.profileExperiences(payload).then(function (result) {\n if (result) {\n var profileExperiences = null;\n profileExperiences = _.map(result.profileExperiences, assetService.strings.experienceName);\n profileExperiences = _.uniq(profileExperiences);\n if (profileExperiences.includes(assetService.strings.EXPERIENCES.SC_RESIDENTIAL) && profileExperiences.includes(assetService.strings.EXPERIENCES.MASS_MARKET)) {\n vm.interimMessage = true;\n vm.showexperiance = true;\n } else if (profileExperiences.includes(assetService.strings.EXPERIENCES.MASS_MARKET) || profileExperiences.includes(assetService.strings.EXPERIENCES.MYDUKE_LARGE_BUSINESS)) {\n vm.interimMessage = false;\n vm.showexperiance = false;\n } else {\n vm.interimMessage = false;\n vm.showexperiance = true;\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountSearch(accSearchRequest) {\n return accountSearchService.sitecore.accountSearch(accSearchRequest).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\n var bpData = results.d.ReqToHResNav.results[0].HResToBp.results[0];\n vm.primaryBp = bpData.BpNumber;\n vm.Accounts = bpData.BpToAcc.results;\n }\n if (results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.length > 0) {\n vm.primaryEmail = _.find(results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results, function (email) {\n return email.Primary;\n });\n vm.emails = _.map(results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results, function (item) {\n return {\n email: item.EmailAddress,\n addrNumber: item.AddressNumber,\n consNumber: item.ConsNumber,\n primary: item.Primary,\n doNotUse: Object.prototype.hasOwnProperty.call(item, assetService.accountSelectorStrings.DoNotUse) ? item.DoNotUse : false,\n isNew: null\n };\n });\n vm.emails.forEach(function (element) {\n _allEmails.push(element);\n });\n vm.emailAccounts = _.map(results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results, function (item) {\n return {\n name: item.CustomerName,\n addressNumber: item.AddressNumber\n };\n });\n vm.data.emailAccounts = vm.emailAccounts;\n vm.data.restToBp = {\n bpNumber: vm.primaryBp\n };\n vm.data.emailSubscriptions = _.uniq(_allEmails, 'email');\n vm.currentUser = vm.data.currentUser;\n vm.data.primaryBp = vm.primaryBp;\n vm.data.Accounts = vm.Accounts;\n vm.data.interimMessage = vm.interimMessage;\n var accUniq = _.uniq(vm.Accounts, 'acc');\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.data);\n return accUniq;\n }\n });\n }\n function getDeepLinkedPrimaryBP() {\n return getDeepLinkedPrimaryBPService.sitecore.getDeepLinkedPrimaryBP().then(function (result) {\n return result;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n if (!assetService.apiConfig.useLocalHost) {\n // 1. getLoggedInUserDetailsService.getAuthUserDetails() => to retrieve email and cdpid\n // 2. Get Profile Experiences => if Legacy, no futher calls required and call Load. If No, continue to below\n // 3. getRelatedBpforRegistration => To retrieve BP associated with profile\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.data.email = results.Value;\n vm.data.currentUser.cdpId = results.Key;\n vm.data.currentUser.email = results.Value;\n var requestData = {\n emailId: vm.data.email,\n internalIdentifier: vm.data.currentUser.cdpId\n };\n var relatedBpPayload = {\n emailId: vm.data.email,\n action: assetService.serviceActions.searchISUByEmail.GET_BP_A\n };\n getProfileExperiences(requestData).then(function () {\n if (!vm.interimMessage && !vm.showexperiance) {\n load();\n } else {\n getRelatedBpforRegistration.sitecore.GetRelatedBp(relatedBpPayload).then(function (result) {\n if (result.d.RequestToMessagesNav.results[0].Type.toUpperCase() === 'S') {\n if (result.d.RequestToResponseNav.results.length === 1) {\n vm.primaryBp = result.d.RequestToResponseNav.results[0].BusinessPartner;\n load();\n } else {\n //throw Page level error message if profile is associated with multiple BP\n vm.multipleBpPresent = true;\n vm.loaded = true;\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function () {});\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }, function () {});\n } else {\n vm.currentUser = {\n businessPartnerId: '',\n emailId: '',\n // Get Primary Bp\n cdpId: '' // Get CDPID\n };\n vm.primaryBp = vm.currentUser.businessPartnerId;\n load();\n }\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('RecurringContributionsManage', RecurringContributionsManage);\nRecurringContributionsManage.$inject = ['assetService', '$state', 'sessionStorageService', '$scope', '$anchorScroll'];\nfunction RecurringContributionsManage(assetService, $state, sessionStorageService, $scope, $anchorScroll) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Gloabl Vars-----------------------*/\n vm.customerAssistanceStorage = null;\n vm.data = {\n customerAssistance: null,\n isEnrolled: false\n };\n vm.hideHeader = false;\n\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n vm.data.customerAssistance = vm.customerAssistanceStorage;\n vm.data.isEnrolled = vm.customerAssistanceStorage.status !== assetService.recurringContributionsButtons.NOT_ENROLLED;\n }\n function load() {\n vm.customerAssistanceStorage = sessionStorageService.get(assetService.storageKeys.customerAssistance);\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_TYPE);\n setModels();\n }\n $scope.$on(assetService.strings.RECURRING_CONTRIBUTIONS.REDIRECT_TO, function (_, event, url) {\n if (event) {\n event.preventDefault();\n }\n url = url || '';\n window.location.href = url;\n });\n $scope.$on(assetService.strings.RECURRING_CONTRIBUTIONS.SCROLL_TOP, function () {\n return $anchorScroll();\n });\n $scope.$on(assetService.strings.RECURRING_CONTRIBUTIONS.HIDE_HEADER, function (_, bool) {\n return vm.hideHeader = bool || false;\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-plusplus */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-undef */\nfunction ccRateAnalysisController(ccMeterSelectorService, accountSearchService, errorHandlingService, genericHelperService, getInvoiceListService, getInvoiceDetailsService, getRateComparisonService, sessionStorageService, commonService, assetService, $location, $scope, $element, $window, $http, $timeout, $rootScope, getLoggedInUserDetailsService, energyService, getRateComparisonPdfService, commongaTaggingService, broadcastService) {\n var vm = this;\n vm.meterText = '';\n vm.billDate = new Date();\n vm.currentRateCategory = '';\n vm.meterObject = {};\n vm.accountSearchItems = [];\n vm.accountSearchArray = [];\n vm.invoiceListArray = [];\n vm.invoiceDetailsArray = [];\n vm.rateHistory = {};\n vm.rateHistoryText = '';\n vm.rateHistoryArray = [];\n vm.rateHistoryItems = [];\n vm.rateAlternate = {};\n vm.rateAlternateText = '';\n vm.rateAlternateIndex = 0;\n vm.rateAlternateArray = [];\n vm.rateAlternateItems = [];\n vm.rateComparison = {};\n vm.rateSpinner = true;\n vm.isBlankState = false;\n vm.isNoAltRate = false;\n vm.isBlankStateNonAMI = false;\n vm.contractAccountId = '';\n vm.showToast = false;\n vm.isTileDescriptionElig = false;\n $rootScope.roleBase = {};\n // eslint-disable-next-line no-use-before-define\n vm.closeToast = closeToast;\n vm.showToast = false;\n // eslint-disable-next-line no-use-before-define\n vm.attributePush = attributePush;\n vm.businessFunction = $('#hdn-plan').attr('businessFunction');\n vm.headLine = $('#hdn-planHeadLine').attr('headLine');\n vm.altSubhead = $('#hdn-plan').attr('altSubhead');\n vm.pdfText = $('#hdn-plan').attr('pdfText');\n vm.currentSubhead = $('#hdn-plan').attr('currentSubhead');\n vm.errorHeadline = $('#hdn-plan').attr('errorHeadline');\n vm.erorContent = $('#hdn-plan').attr('erorContent');\n vm.meterSelector = $('#hdn-plan').attr('meterSelector');\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n vm.is_mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || $(window).width() < 767;\n function attributePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n $(window).resize(function () {\n vm.is_mobile = $(window).width() < 767;\n });\n function selectDownloadPdf() {\n // will update this to use service.\n var params = {\n ContractAccount: vm.contractAccountId,\n MeterNumber: vm.meterObject.meterNumber,\n AltRatePlan: vm.rateAlternateText\n };\n $rootScope.download = true;\n attributePush(\"workFlow:\".concat(vm.businessFunction), \"buttonText:\".concat(vm.pdfText), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(vm.rateHistoryText), \"addedEvent:\".concat(vm.rateAlternateText));\n return getRateComparisonPdfService.sitecore.getRateComparisonPdf(params).then(function (result) {\n try {\n if (result && result.d) {\n var data = result.d.Value;\n if (data) {\n var hexValue = data;\n if (hexValue) {\n // eslint-disable-next-line no-inner-declarations\n var hexToBase64 = function hexToBase64(string) {\n return btoa(string.match(/\\w{2}/g).map(function (arra) {\n return String.fromCharCode(parseInt(arra, 16));\n }).join(''));\n };\n var base64Value = hexToBase64(hexValue);\n var byteCharacters = atob(base64Value);\n var byteNumbers = new Array(byteCharacters.length);\n for (var inte = 0; inte < byteCharacters.length; inte++) {\n byteNumbers[inte] = byteCharacters.charCodeAt(inte);\n }\n var byteArray = new Uint8Array(byteNumbers);\n var file = new Blob([byteArray], {\n type: 'application/pdf'\n });\n var fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n }\n } else {\n $rootScope.download = false;\n vm.showToast = true;\n vm.data = {};\n vm.data.option = 'error';\n vm.data.messageOption = 'Sorry we are not able to download at this time';\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(result.d.Number), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(result.d.Message), \"addedEvent:\".concat(vm.data.messageOption));\n }\n } else {\n $rootScope.download = false;\n vm.showToast = true;\n vm.data = {};\n vm.data.option = 'error';\n vm.data.messageOption = 'Sorry we are not able to download at this time';\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(result.d.Number), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(result.d.Message), \"addedEvent:\".concat(vm.data.messageOption));\n }\n } catch (error) {\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(vm.errorHeadline), \"headline:\".concat(vm.headLine));\n broadcastService.failedStateNotificationTriggered(true);\n }\n });\n }\n function getRole() {\n switch (globalAccountInfo.accountSelected.role) {\n case assetService.roles.owner:\n $rootScope.roleBase.ownerRole = true;\n break;\n case assetService.roles.admin:\n $rootScope.roleBase.adminRole = true;\n break;\n case assetService.roles.viewer:\n $rootScope.roleBase.viewerRole = true;\n break;\n default:\n $rootScope.roleBase.viewerRole = true;\n }\n }\n function closeToast() {\n vm.showToast = false;\n }\n vm.closeToast = closeToast;\n vm.selectDownloadPdf = selectDownloadPdf;\n function getRateComparisonDetails(value, alternatePlan) {\n if (value === 'Yearly Total') {\n vm.temp = vm.getRateComparisonResponse.d.RateAnalysis.MonthYear.results.filter(function (data) {\n return data.Month === 'Yearly' || data.Month === value;\n });\n } else {\n vm.temp = vm.getRateComparisonResponse.d.RateAnalysis.MonthYear.results.filter(function (data) {\n return data.Month === moment(value).format('MM') && data.Year === moment(value).format('YYYY');\n });\n }\n vm.isTileDescriptionElig = value === 'Yearly Total';\n var item = vm.temp[0].CurrentPlan;\n vm.rateHistory = {\n TotalCost: parseFloat(item.TotalCost.split('.')).toLocaleString('en') + '.' + item.TotalCost.split('.')[1],\n CurrentRateCategory: item.CurrentRateCategory,\n rateData: _.map(item.CurrentPlanDetails.results, function (valu) {\n return {\n Description: valu.Name,\n Consumption: valu.Unit === '$' ? \"\".concat(valu.Unit).concat(valu.Value, \" per month\") : \"\".concat(valu.Value, \" \").concat(valu.Unit)\n };\n })\n };\n var altItem = vm.temp[0].AlternatePlan.results.filter(function (altData) {\n return altData.AltRateType === alternatePlan;\n });\n vm.rateAlternate = {\n TotalCost: parseFloat(altItem[0].TotalCost.split('.')).toLocaleString('en') + '.' + altItem[0].TotalCost.split('.')[1],\n AltRateType: altItem[0].AltRateType,\n rateData: _.map(altItem[0].AlternatePlanDetails.results, function (valu) {\n return {\n Description: valu.Name,\n Consumption: valu.Unit === '$' ? \"\".concat(valu.Unit).concat(valu.Value, \" per month\") : \"\".concat(valu.Value, \" \").concat(valu.Unit)\n };\n })\n };\n function comparer(otherArray) {\n return function (current) {\n return otherArray.filter(function (other) {\n return other.Description === current.Description;\n }).length === 0;\n };\n }\n vm.onlyInrateAlternate = vm.rateAlternate.rateData.filter(comparer(vm.rateHistory.rateData));\n vm.onlyInrateHistory = vm.rateHistory.rateData.filter(comparer(vm.rateAlternate.rateData));\n angular.forEach(vm.onlyInrateHistory, function (value1) {\n var tempInRate = {\n Description: value1.Description,\n Consumption: 'N/A'\n };\n vm.rateAlternate.rateData.unshift(tempInRate);\n });\n angular.forEach(vm.onlyInrateAlternate, function (value2) {\n var tempInAlt = {\n Description: value2.Description,\n Consumption: 'N/A'\n };\n vm.rateHistory.rateData.push(tempInAlt);\n });\n if (vm.onlyInrateHistory.length > 0) {\n vm.temprateHistoryTile = [];\n angular.forEach(vm.rateHistory.rateData, function (currentTilePos) {\n var itemPostion = vm.rateAlternate.rateData.findIndex(function (xxxx) {\n return xxxx.Description === currentTilePos.Description;\n });\n vm.temprateHistoryTile[itemPostion] = currentTilePos;\n });\n vm.rateHistory.rateData = vm.temprateHistoryTile;\n }\n }\n function selectRateHistory(date, onload) {\n vm.rateHistoryText = date.text;\n vm.rateHistoryDate = date.date;\n if (!onload) {\n attributePush(\"workFlow:\".concat(vm.businessFunction), \"buttonText:\".concat(vm.rateHistoryText), \"headline:\".concat(vm.headLine), \"subheadline:\".concat(vm.currentSubhead));\n }\n getRateComparisonDetails(date.date, vm.rateAlternateText);\n }\n vm.selectRateHistory = selectRateHistory;\n function selectRateAlternate(rate) {\n vm.rateAlternateText = rate.text;\n attributePush(\"workFlow:\".concat(vm.businessFunction), \"buttonText:\".concat(vm.rateAlternateText), \"headline:\".concat(vm.headLine), \"subheadline:\".concat(vm.altSubhead));\n getRateComparisonDetails(vm.rateHistoryDate, vm.rateAlternateText);\n }\n vm.selectRateAlternate = selectRateAlternate;\n function getRateHistory() {\n vm.rateSpinner = true;\n var params = {\n ContractAccount: vm.contractAccountId,\n meterNumber: vm.meterObject.meterNumber\n };\n return getRateComparisonService.sitecore.getRateComparison(params).then(function (result) {\n try {\n if (result.d.Message.Type === 'S') {\n vm.getRateComparisonResponse = result;\n vm.isAlternateTileEligible = result.d.Message.MessageNum === '431';\n if (vm.isAlternateTileEligible) {\n vm.rateAlternateItems = _.map(result.d.RateAnalysis.AlternativePlan.results, function (data) {\n return {\n text: data.AltRatePlan,\n value: data.AltRatePlan\n };\n });\n vm.tempAlternate = result.d.RateAnalysis.MonthYear.results[result.d.RateAnalysis.MonthYear.results.length - 1].AlternatePlan.results;\n var res = vm.tempAlternate.reduce(function (prev, current) {\n return prev.TotalCost < current.TotalCost ? prev : current;\n });\n vm.rateAlternateText = res.AltRateType;\n vm.rateHistoryItems = _.map(result.d.RateAnalysis.MonthYear.results, function (data) {\n return {\n text: data.Month === 'Yearly' ? 'Yearly Total' : moment(moment(\"\".concat(data.Month, \"/01/\").concat(data.Year), 'MM/DD/YYYY')).format('MMMM YYYY'),\n value: data.Month === 'Yearly' ? 'Yearly Total' : moment(moment(\"\".concat(data.Month, \"/01/\").concat(data.Year), 'MM/DD/YYYY')).format('MMMM YYYY'),\n date: data.Month === 'Yearly' ? 'Yearly Total' : moment(\"\".concat(data.Month, \"/01/\").concat(data.Year), 'MM/DD/YYYY')\n };\n });\n vm.rateHistoryItems = _.orderBy(vm.rateHistoryItems, ['date'], ['desc', 'asc']);\n vm.rateHistoryText = vm.rateHistoryItems[vm.rateHistoryItems.length - 1].text;\n vm.rateHistoryDate = vm.rateHistoryItems[vm.rateHistoryItems.length - 1].date;\n vm.selectRateHistory(vm.rateHistoryItems[vm.rateHistoryItems.length - 1], true);\n } else if (result.d.Message.MessageNum === '926') {\n var item = result.d.RateAnalysis.MonthYear.results[0].CurrentPlan;\n vm.rateHistory = {\n TotalCost: item.TotalCost,\n CurrentRateCategory: item.CurrentRateCategory,\n rateData: _.map(item.CurrentPlanDetails.results, function (valu) {\n return {\n Description: valu.Name,\n Consumption: valu.Value !== null && valu.Value !== '' ? valu.Unit === '$' ? \"\".concat(valu.Unit).concat(valu.Value, \" per month\") : \"\".concat(valu.Value, \" \").concat(valu.Unit) : 'N/A'\n };\n })\n };\n vm.eligibleDate = moment(moment(\"\".concat(result.d.Message.Messagev1), 'YYYYMMDD')).format('MM/DD/YYYY');\n }\n vm.rateSpinner = false;\n } else {\n if (result.d.Message.Type === 'E' && result.d.Message.MessageNum === '927') {\n vm.isNoAltRate = true;\n vm.isBlankState = false;\n vm.rateSpinner = false;\n vm.isBlankStateNonAMI = false;\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(result.d.Message.MessageNum), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(result.d.Message.Message), \"addedEvent:\".concat(vm.errorHeadline));\n } else {\n vm.isNoAltRate = false;\n vm.isBlankStateNonAMI = true;\n vm.rateSpinner = false;\n vm.isBlankState = false;\n setBlankState();\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(result.d.Message.MessageNum), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(result.d.Message.Message), \"addedEvent:\".concat(vm.errorHeadline));\n }\n }\n } catch (error) {\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(vm.errorHeadline), \"headline:\".concat(vm.headLine));\n broadcastService.failedStateNotificationTriggered(true);\n }\n });\n }\n function setBlankState() {\n vm.blankStateList = vm.accountSearchData.filter(function (items) {\n return items.meterType === 'NON-AMI';\n });\n vm.blankListArray = [];\n vm.blankStateList.forEach(function (elem) {\n vm.blankListArray.push({\n value: {\n meterNumber: elem.meterNumber,\n meterType: elem.meterType,\n netMeter: elem.netMeter,\n serviceType: elem.serviceType,\n activeDate: elem.activeDate,\n MoveOutDate: elem.MoveOutDate,\n imageUrl: elem.serviceType === energyService.serviceType.Electric ? vm.electricIcon : ''\n },\n text: \"\".concat(elem.serviceType, \" Meter - \").concat(elem.meterNumber)\n });\n });\n if (vm.blankListArray.length > 0) {\n vm.accountSearchItems = genericHelperService.createDropdownList(vm.blankListArray);\n selectMeter(vm.accountSearchItems[0], true);\n }\n }\n function selectMeter(meterSelected, fromLoad) {\n vm.meterObject.meterNumber = meterSelected.value.meterNumber;\n vm.meterObject.meterType = meterSelected.value.meterType;\n vm.meterObject.netMeter = meterSelected.value.netMeter;\n vm.meterObject.serviceType = meterSelected.value.serviceType;\n vm.meterObject.unitOfMeasure = meterSelected.value.serviceType === 'Gas' ? 'CCF' : 'kWh';\n vm.meterObject.periodType = 'Months';\n vm.meterText = meterSelected.text;\n vm.meterType = meterSelected.value.serviceType === 'Electric' ? 'Electric Meter' : 'Gas Meter';\n if (!fromLoad) {\n attributePush(\"workFlow:\".concat(vm.businessFunction), \"buttonText:\".concat(vm.meterType), \"headline:\".concat(vm.headLine), \"subheadline:\".concat(vm.meterSelector));\n }\n if (!vm.isBlankStateNonAMI) getRateHistory();\n }\n vm.selectMeter = selectMeter;\n function csrAttribute() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n vm.arrayElements = theArguments;\n vm.arrayElements.push(\"headline:\".concat(vm.headLine));\n commongaTaggingService.attributePush(vm.arrayElements);\n }\n vm.csrAttribute = csrAttribute;\n function getAccountList() {\n var params = {\n contractAccountId: vm.contractAccountId\n };\n return accountSearchService.sitecore.cacheAccountSearch(params).then(function (result) {\n try {\n if (result) {\n var dataTemp = [];\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(function (items) {\n items.PropToInst.results.forEach(function (outData) {\n return dataTemp.push(outData);\n });\n });\n vm.electricIcon = $('#hdn-plan').attr('electricIcon');\n vm.accountSearchData = _.map(dataTemp, function (outData) {\n return {\n meterNumber: outData.MeterNumber,\n meterType: outData.MeterType,\n netMeter: outData.IsSmartGridMeterInd,\n activeDate: new Date(outData.ActiveDate),\n activeStatus: outData.MoveOutDate && Date.parse(outData.MoveOutDate) > new Date().getTime() ? '(Active)' : '(Closed)',\n MoveOutDate: new Date(outData.MoveOutDate),\n serviceType: outData.Division === '02' ? energyService.serviceType.Gas : energyService.serviceType.Electric\n };\n });\n vm.arraySearchList = vm.accountSearchData.filter(function (items) {\n return items.serviceType === energyService.serviceType.Electric && items.meterType === 'AMI' && items.MoveOutDate && Date.parse(items.MoveOutDate) > new Date().getTime();\n });\n vm.accountSearchArray = [];\n vm.arraySearchList.forEach(function (elem) {\n vm.accountSearchArray.push({\n value: {\n meterNumber: elem.meterNumber,\n meterType: elem.meterType,\n netMeter: elem.netMeter,\n serviceType: elem.serviceType,\n activeDate: elem.activeDate,\n MoveOutDate: elem.MoveOutDate,\n imageUrl: elem.serviceType === energyService.serviceType.Electric ? vm.electricIcon : ''\n },\n text: \"\".concat(elem.serviceType, \" Meter - \").concat(elem.meterNumber)\n });\n });\n // eslint-disable-next-line no-magic-numbers\n if (vm.accountSearchArray.length > 0) {\n vm.accountSearchItems = genericHelperService.createDropdownList(vm.accountSearchArray);\n vm.isBlankState = false;\n vm.isBlankStateNonAMI = false;\n vm.isNoAltRate = false;\n selectMeter(vm.accountSearchItems[0], true);\n } else {\n vm.rateSpinner = false;\n vm.isBlankStateNonAMI = true;\n vm.isNoAltRate = false;\n vm.isBlankState = false;\n setBlankState();\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(vm.errorHeadline), \"headline:\".concat(vm.headLine));\n }\n } else {\n vm.rateSpinner = false;\n vm.isBlankState = true;\n vm.isNoAltRate = false;\n vm.isBlankStateNonAMI = false;\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(result.d.ReqToMesNav.results[0].MessageNum), \"headline:\".concat(vm.headLine), \"addedSpec:\".concat(result.d.ReqToMesNav.results[0].Message), \"addedEvent:\".concat(vm.errorHeadline));\n }\n } catch (error) {\n attributePush(\"workFlow: error \".concat(vm.businessFunction), \"buttonText:\".concat(vm.errorHeadline), \"headline:\".concat(vm.headLine));\n broadcastService.failedStateNotificationTriggered(true);\n }\n });\n }\n function load() {\n getRole();\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.rateSpinner = true;\n getAccountList();\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo) {\n if ('accountSelected' in globalAccountInfo) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n load();\n }\n }\n });\n}\napp.controller('ccRateAnalysisController', ccRateAnalysisController);\nccRateAnalysisController.$inject = ['ccMeterSelectorService', 'accountSearchService', 'errorHandlingService', 'genericHelperService', 'getInvoiceListService', 'getInvoiceDetailsService', 'getRateComparisonService', 'sessionStorageService', 'commonService', 'assetService', '$location', '$scope', '$element', '$window', '$http', '$timeout', '$rootScope', 'getLoggedInUserDetailsService', 'energyService', 'getRateComparisonPdfService', 'commongaTaggingService', 'broadcastService'];\n/* eslint-disable no-use-before-define */\napp.controller('ServiceOrderManager', ServiceOrderManager);\nServiceOrderManager.$inject = ['assetService', '$state'];\nfunction ServiceOrderManager(assetService, $state) {\n /* --------------Scope Vars-----------------------*/\n\n /* --------------Gloabl Vars-----------------------*/\n\n function load() {\n $state.go(assetService.serviceOrderRouteState.SERVICE_ORDER);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveS2MoveOutAddress', ccMoveS2MoveOutAddress);\nccMoveS2MoveOutAddress.$inject = ['$scope', '$window', 'assetService', 'sessionStorageService'];\nfunction ccMoveS2MoveOutAddress($scope, $window, assetService, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n var objectEventDrop = {\n \"Select Address\": saveData\n };\n vm.move = {};\n vm.address = \"\";\n vm.moveOutAddress = [];\n\n /* --------------Function Declarations-----------------------*/\n\n function formatCity(city) {\n city = city.replace(/[A-Za-z]+/g, function (match) {\n return match.trim()[0];\n });\n city = city.replace(/\\s/g, '');\n return city;\n }\n ;\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData(value) {\n vm.AddressDatTemp = vm.AddressData[value];\n }\n function saveDataMoveOutAddress() {\n if (vm.AddressDatTemp) {\n vm.move.moveOutAddress = vm.AddressDatTemp;\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n console.log(vm.move);\n }\n }\n function loadDataMoveOutAddress() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n if (vm.move.moveOutAddress) {\n vm.addressSelect = vm.move.moveOutAddress;\n vm.address = generateAddress(vm.addressSelect);\n }\n }\n function load() {\n $window.scrollTo(0, 0);\n loadDataMoveOutAddress();\n }\n function selectAddress() {\n var temp = vm.AddressData.map(function (value, index) {\n return {\n \"text\": generateAddress(value),\n \"value\": index\n };\n });\n console.log(temp);\n return temp;\n }\n function generateAddress(add) {\n return \"\".concat(add.streetAddress, \" \").concat(add.state, \" \").concat(formatCity(add.city), \" \").concat(add.zipCode);\n }\n $scope.$on(\"dropdown\", function (event, data) {\n objectEventDrop[data.eventDrop](data.value);\n });\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveDataMoveOutAddress();\n loadDataMoveOutAddress();\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveS3ScheduleMoveOut', ccMoveS3ScheduleMoveOut);\nccMoveS3ScheduleMoveOut.$inject = ['$scope', '$window', 'assetService', 'sessionStorageService'];\nfunction ccMoveS3ScheduleMoveOut($scope, $window, assetService, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n\n vm.hourStop = [];\n vm.move = {};\n vm.scheduleMoveOut = {};\n vm.scheduleMoveOut.dateStop = \"\";\n vm.scheduleMoveOut.comments = \"\";\n vm.selectButton = function (value) {\n if (value == vm.scheduleMoveOut.hourStop) {\n return \"select-btn\";\n }\n };\n vm.nameAccount = function (name, account) {\n return \"\".concat(name, \" (#\").concat(account, \")\");\n };\n /* --------------Function Declarations-----------------------*/\n\n vm.saveHour = function (value) {\n vm.scheduleMoveOut.hourStop = value;\n };\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData() {\n vm.move.scheduleMoveOut = {};\n vm.move.scheduleMoveOut = vm.scheduleMoveOut;\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n }\n function loadData() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n if (vm.move.scheduleMoveOut) {\n vm.scheduleMoveOut = vm.move.scheduleMoveOut;\n }\n }\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveData();\n console.log(vm.move);\n });\n /* ---------------Initialization-------------------*/\n function save() {\n $window.scrollTo(0, 0);\n loadData();\n }\n var init = function init() {\n save();\n };\n init();\n}\napp.controller('ccMoveS2LastBillAddress', ccMoveS2LastBillAddress);\nccMoveS2LastBillAddress.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$window', 'commonService', 'apiConfigService', 'genericHelperService', 'currentManagerFactory'];\nfunction ccMoveS2LastBillAddress(sessionStorageService, assetService, $state, $scope, $window, commonService, apiConfigService, genericHelperService, currentManagerFactory) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.showNewAddress = false;\n\n /* --------------Gloabl Vars-----------------------*/\n var objectEventDrop = {\n 'Select Address': saveData,\n City: filterCity,\n State: saveState\n };\n vm.move = {};\n vm.address = '';\n vm.lastBillAddress = {};\n\n /* --------------Function Declarations-----------------------*/\n\n function filterCity(value) {\n vm.lastBillAddress.city = value;\n for (var index = 0; index < vm.cities.cities.length; index++) {\n if (vm.cities.cities[index].city === vm.lastBillAddress.city) {\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(vm.cities.cities[index].states);\n vm.stateDefault = 'State';\n vm.lastBillAddress.state = '';\n }\n }\n }\n function saveState(value) {\n vm.lastBillAddress.state = value;\n }\n function formatCity(city) {\n city = city.replace(/[A-Za-z]+/g, function (match) {\n return match.trim()[0];\n });\n city = city.replace(/\\s/g, '');\n return city;\n }\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData(value) {\n vm.AddressDatTemp = vm.AddressData[value];\n }\n function saveDataLastBillAddress() {\n if (vm.showNewAddress) {\n vm.move.lastBillAddress = vm.lastBillAddress;\n } else if (vm.AddressDatTemp) {\n vm.move.lastBillAddress = vm.AddressDatTemp;\n console.log(vm.move.lastBillAddress);\n }\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n }\n function loadDataLastBillAddress() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n if (vm.move.lastBillAddress) {\n vm.addressSelect = vm.move.lastBillAddress;\n vm.address = generateAddress(vm.addressSelect);\n }\n }\n function load() {\n $window.scrollTo(0, 0);\n loadDataLastBillAddress();\n }\n function selectAddress() {\n var temp = vm.AddressData.map(function (value, index) {\n return {\n text: generateAddress(value),\n value: index\n };\n });\n console.log(temp);\n return temp;\n }\n function generateAddress(add) {\n return \"\".concat(add.streetAddress, \" \").concat(add.state, \" \").concat(formatCity(add.city), \" \").concat(add.zipCode);\n }\n\n // city\n var _urlCities = apiConfigService.getCitiesAndStatesUrl();\n var promises = [getCitiesAndStates()];\n commonService.executePromises(promises).then(function () {\n setModel();\n });\n function getCitiesAndStates() {\n return currentManagerFactory.getServiceManager(_urlCities).then(function (result) {\n vm.cities = result;\n vm.city = genericHelperService.createDropdownList(vm.cities.cities, 'city', 'city');\n }, function (error) {\n console.log(error);\n });\n }\n $scope.$on('dropdown', function (event, data) {\n objectEventDrop[data.eventDrop](data.value);\n });\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveDataLastBillAddress();\n loadDataLastBillAddress();\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveStep3', ccMoveStep3);\nccMoveStep3.$inject = ['sessionStorageService', 'assetService', '$scope', '$window', 'genericHelperService'];\nfunction ccMoveStep3(sessionStorageService, assetService, $scope, $window, genericHelperService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n var objectEventDrop = {\n City: filterCity,\n State: saveState\n };\n var objectEventRadio = {\n location: radioLocation,\n mobileHome: radioMobileHome\n };\n vm.move = {};\n vm.moveInAdrressData = {\n \"StreetAddress\": \"\",\n \"AFSL\": \"\",\n \"zipCode\": \"\",\n \"state\": \"\",\n \"city\": \"\",\n \"location\": \"\",\n \"mobileHome\": \"\",\n \"service\": \"\"\n };\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function radioLocation(value) {\n console.log(value);\n }\n function radioMobileHome(value) {\n vm.moveInAdrressData.mobileHome = value;\n }\n function filterCity(value) {\n vm.moveInAdrressData.city = value;\n console.log(value);\n for (var index = 0; index < vm.cities.cities.length; index++) {\n if (vm.cities.cities[index].city === vm.moveInAdrressData.city) {\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(vm.cities.cities[index].states);\n vm.stateDefault = 'State';\n vm.moveInAdrressData.state = '';\n console.log(vm.cityState);\n }\n }\n }\n function saveState(value) {\n vm.moveInAdrressData.state = value;\n }\n function saveDataMoveInAddress() {\n console.log(vm.move);\n vm.move.moveInAdrressData = vm.moveInAdrressData;\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n }\n function loadDataMoveInAddress() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n }\n function load() {\n $window.scrollTo(0, 0);\n loadDataMoveInAddress();\n }\n $scope.$on(\"dropdown\", function (event, data) {\n objectEventDrop[data.eventDrop](data.value);\n });\n $scope.$on(\"CC-RadioButton\", function (event, data) {\n objectEventRadio[data.eventDrop](data.value);\n });\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveDataMoveInAddress();\n console.log(vm.move);\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveS3Install', ccMoveS3Install);\nccMoveS3Install.$inject = ['sessionStorageService', 'assetService', '$scope', '$window'];\nfunction ccMoveS3Install(sessionStorageService, assetService, $scope, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n\n vm.move = {};\n vm.services = [{\n \"name\": \"House Electric\",\n \"numberAccount\": \"00000000\",\n \"price\": 10,\n \"active\": false\n }, {\n \"name\": \"House Street Light\",\n \"numberAccount\": \"00000000\",\n \"price\": 30,\n \"active\": false\n }, {\n \"name\": \"House Gas\",\n \"numberAccount\": \"00000000\",\n \"price\": 20,\n \"active\": false\n }, {\n \"name\": \"Barn Gas\",\n \"numberAccount\": \"00000000\",\n \"price\": 50,\n \"active\": false\n }];\n vm.nameAccount = function (name, account) {\n return \"\".concat(name, \" (#\").concat(account, \")\");\n };\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData() {\n vm.move.services = vm.services;\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n }\n function loadData() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n if (vm.move.services) {\n vm.services = vm.move.services;\n }\n }\n $scope.$on(\"CheckBox-Selected\", function (event, data) {\n // objectEventRadio[data.eventDrop](data.value);\n console.log(vm.services);\n });\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveData();\n console.log(vm.move);\n });\n /* ---------------Initialization-------------------*/\n function save() {\n $window.scrollTo(0, 0);\n loadData();\n }\n var init = function init() {\n save();\n };\n init();\n}\napp.controller('ccMoveS3ScheduleMoveIn', ccMoveS3ScheduleMoveIn);\nccMoveS3ScheduleMoveIn.$inject = ['$scope', '$window', 'assetService', 'sessionStorageService'];\nfunction ccMoveS3ScheduleMoveIn($scope, $window, assetService, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n\n vm.hourStop = [];\n vm.move = {};\n vm.scheduleMoveIn = {};\n vm.scheduleMoveIn.dateStop = \"\";\n vm.scheduleMoveIn.comments = \"\";\n vm.selectButton = function (value) {\n if (value == vm.scheduleMoveIn.hourStop) {\n return \"select-btn\";\n }\n };\n vm.nameAccount = function (name, account) {\n return \"\".concat(name, \" (#\").concat(account, \")\");\n };\n /* --------------Function Declarations-----------------------*/\n\n vm.saveHour = function (value) {\n vm.scheduleMoveIn.hourStop = value;\n };\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData() {\n vm.move.scheduleMoveIn = {};\n vm.move.scheduleMoveIn = vm.scheduleMoveIn;\n sessionStorageService.set(\"move\", vm.move);\n }\n function loadData() {\n vm.move = sessionStorageService.get(\"move\");\n if (vm.move.scheduleMoveIn) {\n vm.scheduleMoveIn = vm.move.scheduleMoveIn;\n }\n console.log(vm.scheduleMoveIn.dateStop);\n }\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveData();\n console.log(vm.move);\n });\n /* ---------------Initialization-------------------*/\n function save() {\n $window.scrollTo(0, 0);\n loadData();\n }\n var init = function init() {\n save();\n };\n init();\n}\napp.controller('ccMoveStep4NewBil', ccMoveStep4NewBil);\nccMoveStep4NewBil.$inject = ['sessionStorageService', 'assetService', '$scope', '$window', 'genericHelperService'];\nfunction ccMoveStep4NewBil(sessionStorageService, assetService, $scope, $window, genericHelperService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.showNewAddress = false;\n\n /* --------------Gloabl Vars-----------------------*/\n var objectEventDrop = {\n \"Select Address\": saveData,\n \"City\": filterCity,\n \"State\": saveState\n };\n vm.move = {};\n vm.address = \"\";\n vm.newBillAddress = {};\n\n /* --------------Function Declarations-----------------------*/\n\n function filterCity(value) {\n vm.newBillAddress.city = value;\n console.log(value);\n for (var index = 0; index < vm.cities.cities.length; index++) {\n if (vm.cities.cities[index].city === vm.newBillAddress.city) {\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(vm.cities.cities[index].states);\n vm.stateDefault = \"State\";\n vm.newBillAddress.state = \"\";\n }\n }\n }\n function saveState(value) {\n vm.newBillAddress.state = value;\n }\n function formatCity(city) {\n city = city.replace(/[A-Za-z]+/g, function (match) {\n return match.trim()[0];\n });\n city = city.replace(/\\s/g, '');\n return city;\n }\n ;\n\n /* --------------Function Definitions-----------------------*/\n\n function saveData(value) {\n vm.AddressDatTemp = vm.AddressData[value];\n }\n function saveDataNewBillAddress() {\n if (vm.showNewAddress) {\n vm.move.newBillAddress = vm.newBillAddress;\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n } else if (vm.AddressDatTemp) {\n vm.move.newBillAddress = vm.AddressDatTemp;\n console.log(vm.move.newBillAddress);\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n }\n }\n function loadDataNewBillAddress() {\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n console.log(vm.move);\n if (vm.move.newBillAddress) {\n vm.addressSelect = vm.move.newBillAddress;\n vm.address = generateAddress(vm.addressSelect);\n }\n }\n function load() {\n $window.scrollTo(0, 0);\n loadDataNewBillAddress();\n }\n function selectAddress() {\n var temp = vm.AddressData.map(function (value, index) {\n return {\n \"text\": generateAddress(value),\n \"value\": index\n };\n });\n console.log(temp);\n return temp;\n }\n function generateAddress(add) {\n return \"\".concat(add.streetAddress, \" \").concat(add.state, \" \").concat(formatCity(add.city), \" \").concat(add.zipCode);\n }\n $scope.$on(\"dropdown\", function (event, data) {\n objectEventDrop[data.eventDrop](data.value);\n });\n $scope.$on(assetService.events.saveData, function (event, data) {\n saveDataNewBillAddress();\n loadDataNewBillAddress();\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('ccMoveStep4Review', ccMoveStep4Review);\nccMoveStep4Review.$inject = ['sessionStorageService', 'assetService', '$window'];\nfunction ccMoveStep4Review(sessionStorageService, assetService, $window) {\n /* --------------Scope Vars-----------------------*/\n var options = {\n weekday: 'long',\n month: 'long',\n day: 'numeric'\n };\n var vm = this;\n vm.addressStop = \"\";\n vm.addressStart = \"\";\n\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n vm.totalPrice = function (prices) {\n var result = 0;\n var _iterator = _createForOfIteratorHelper(prices),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var price = _step.value;\n if (price.active) {\n result = result + price.price;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return result;\n };\n function formatCity(city) {\n city = city.replace(/[A-Za-z]+/g, function (match) {\n return match.trim()[0];\n });\n city = city.replace(/\\s/g, '');\n return city;\n }\n ;\n function generateAddress(add) {\n return \"\".concat(add.streetAddress, \" \").concat(add.state, \" \").concat(formatCity(add.city), \" \").concat(add.zipCode);\n }\n vm.nameAccount = function (name, account) {\n return \"\".concat(name, \" (#\").concat(account, \")\");\n };\n function load() {\n $window.scrollTo(0, 0);\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\n console.log(vm.move);\n vm.addressStop = generateAddress(vm.move.moveOutAddress);\n vm.addressStart = generateAddress(vm.move.lastBillAddress);\n vm.dateStop = new Date(vm.move.scheduleMoveOut.dateStop);\n //vm.dateStart = new Date(vm.move.scheduleMoveIn.dateStart);\n //vm.dateStart = vm.dateStart.toLocaleDateString(\"en\", options);\n vm.dateStop = vm.dateStop.toLocaleDateString(\"en\", options);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveStep1ContactInfo', ccMoveStep1ContactInfo);\nccMoveStep1ContactInfo.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$window'];\nfunction ccMoveStep1ContactInfo(sessionStorageService, assetService, $state, $scope, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* Contact Info */\n\n vm.phoneType = [{\n value: 'mobile',\n text: 'Mobile'\n }, {\n value: 'house',\n text: 'House'\n }];\n vm.contactPref = [{\n value: 'text',\n text: 'Text'\n }, {\n value: 'call',\n text: 'Call'\n }];\n\n /* --------------Global Vars-----------------------*/\n vm.moveStorage = {};\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n $window.scrollTo(0, 0);\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n $scope.$on('nextStep', function (evt, moveSteps) {\n vm.moveStorage.contactInfo = vm.contactInfo;\n sessionStorageService.set(assetService.storageKeys.move, vm.moveStorage);\n $state.go(moveSteps[0].stepOne[1]);\n });\n\n /* ---------------Initialization-------------------*/\n\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveStep1DelinquencyCheck', ccMoveStep1DelinquencyCheck);\nccMoveStep1DelinquencyCheck.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$window'];\nfunction ccMoveStep1DelinquencyCheck(sessionStorageService, assetService, $state, $scope, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Global Vars-----------------------*/\n vm.moveStorage = {};\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n $window.scrollTo(0, 0);\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n $scope.$on('nextStep', function (evt, moveSteps) {\n // vm.moveStorage.contactInfo = vm.contactInfo;\n // sessionStorageService.set(\n // assetService.storageKeys.move, vm.moveStorage\n // );\n // $state.go(moveSteps[0].stepOne[1]);\n });\n\n /* ---------------Initialization-------------------*/\n\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccMoveStep2', ccMoveStep2);\nccMoveStep2.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$window'];\nfunction ccMoveStep2(sessionStorageService, assetService, $state, $scope, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n console.log('running move step 2');\n\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n\n function load() {\n $window.scrollTo(0, 0);\n $state.go('move.step2');\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ccSsmShell', ccSsmShell);\nccSsmShell.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$window'];\nfunction ccSsmShell(sessionStorageService, assetService, $state, $scope, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n console.log('running ssm shell');\n\n /* --------------Global Vars-----------------------*/\n vm.moveStorage = {};\n vm.move = {};\n vm.moveSteps = [{\n stepOne: ['contactInfo', 'delinquencyCheck', 'delinquentActs']\n }, {\n stepTwo: ['x', 'y', 'z']\n }, {\n stepThree: ['x', 'y', 'z']\n }];\n\n /* --------------Function Declarations-----------------------*/\n vm.nextStep = nextStep;\n\n /* --------------Function Definitions-----------------------*/\n vm.mainPathStep = '';\n vm.mainBtnActivate = false;\n vm.move = {};\n vm.steps = ['Contact Info', 'Move Out', 'Move In', 'Review & Confirm'];\n vm.cyclePath = [{\n path: 'moveOutAddress',\n change: true,\n pathAlt: 'ruta alterna'\n }, {\n path: 'uninstallations',\n change: false,\n pathAlt: 'ruta alterna'\n }, {\n path: 'scheduleMoveOut',\n change: false,\n pathAlt: 'ruta alterna'\n }, {\n path: 'lastBillAddress',\n change: false,\n pathAlt: 'ruta alterna'\n }, {\n path: 'moveAddress',\n change: true,\n pathAlt: 'ruta alterna'\n }, {\n path: 'installations',\n change: false,\n pathAlt: 'ruta alterna',\n nameBtn: 'error'\n }, {\n path: 'newBillAddress',\n change: true,\n pathAlt: 'ruta alterna'\n }, {\n path: 'review',\n change: false,\n pathAlt: 'ruta alterna',\n vpv: 'fire-vpv',\n vpvName: '/vpv/form/authenticated/move-service/move-service/home/review/the-following-services will-be-shut-off-at-this-location/continue',\n vpvError: '/vpv/form/authenticated/move-service/move-service/home/review/the-following-services will-be-shut-off-at-this-location/error'\n }];\n function load() {\n $window.scrollTo(0, 0);\n var temp = sessionStorageService.get(assetService.storageKeys.move);\n if (!temp) {\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\n temp = vm.move;\n }\n $state.go('moveOutAddress');\n }\n function nextStep() {\n $scope.$broadcast('nextStep', vm.moveSteps);\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n vm.moveComponent = function () {\n vm.mainPathStep = vm.pathStep;\n $state.go(vm.mainpathStep);\n };\n $scope.$on(assetService.events.startStopMove, function (data) {\n vm.pathStep = data.path;\n vm.btnActivate = data.btn;\n });\n $scope.$on(assetService.events.saveDataTriggered, function (event, data) {\n vm.mainPathStep = data;\n });\n init();\n}\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('ShellThirdPartySearchController', ShellThirdPartySearchController);\nShellThirdPartySearchController.$inject = ['$scope', 'assetService', 'commonService', '$state', 'apiApigeeConfigService', 'sessionStorageService', 'thirdPartySearchCustomer', '$rootScope', 'commongaTaggingService', 'componentStateHandler'];\nfunction ShellThirdPartySearchController($scope, assetService, commonService, $state, apiApigeeConfigService, sessionStorageService, thirdPartySearchCustomer, $rootScope, commongaTaggingService, componentStateHandler) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var noExperience = false;\n /**\r\n * Global Vars\r\n */\n vm.dataPage = assetService.thirdPartySearch.pages;\n vm.stateGo = vm.dataPage.home;\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n\n function attributePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function getSelectorResponse(data) {\n vm.isBlankState = false;\n noExperience = false;\n return thirdPartySearchCustomer.sitecore.getBpInfo({\n BusinessPartner: data\n }).then(function (result) {\n if (!result) {\n componentStateHandler.failedState(vm);\n noExperience = true;\n } else if (result.d.Messages.Message === 'No Data Found') {\n attributePush(\"workFlow:\".concat($('#TPST-nodata-gat').attr('businessfunction')), \"headline:\".concat($('#TPST-nodata-gat').attr('headline')), \"buttonText:\".concat(result.d.Messages.Message));\n virtualPagePush($('#TPST-nodata-gat').attr('businessfunction'), $('#TPST-nodata-gat').attr('headline'), result.d.Messages.Message);\n vm.isBlankState = true;\n noExperience = true;\n } else if (!result.d || !result.d.Bpdet || !result.d.Bpdet.results || result.d.Bpdet.results.length === 0) {\n vm.isBlankState = true;\n noExperience = true;\n } else {\n var showAccountSearch = result.d.Bpdet.results[0].AccountSearch;\n var showPropertySearch = result.d.Bpdet.results[0].PropertySearch;\n $rootScope.enableBacktoPrevBtn = false;\n if (showAccountSearch && showPropertySearch) {\n $rootScope.enableBacktoPrevBtn = true;\n vm.stateGo = vm.dataPage.home;\n } else if (showAccountSearch && !showPropertySearch) {\n vm.stateGo = vm.dataPage.customerSearch;\n } else if (showPropertySearch) {\n vm.stateGo = vm.dataPage.propertySearch;\n } else {\n vm.isBlankState = true;\n noExperience = true;\n }\n }\n }, function (error) {\n componentStateHandler.failedState(vm);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /** Watchers */\n $scope.$on('nextStep', function (index, page) {\n var startIndex = page.indexOf('=');\n var acctNo = null;\n if (startIndex > 0) {\n acctNo = page.substring(startIndex + 1);\n page = page.substring(0, page.indexOf('?'));\n }\n vm.stateGo = vm.dataPage[page];\n // vm.loadingSpinner = true;\n if (acctNo !== null) {\n $state.go(vm.stateGo, {\n accountNumber: acctNo\n });\n } else {\n $state.go(vm.stateGo);\n }\n });\n $scope.$on('loadingSpinner', function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /**\r\n * Function Definitions\r\n */\n\n function load() {\n $scope.$emit('loadingSpinner', true);\n // const globalAccountInfo = sessionStorageService.get(\n // assetService.storageKeys.globalAccounts.info,\n // );\n // if (globalAccountInfo === null) {\n // window.location.href = 'my-account/sign-in';\n // }\n // const bpNumber = globalAccountInfo.primaryBp;\n var bpNumber = '';\n getSelectorResponse(bpNumber).then(function (result) {\n $scope.$emit('loadingSpinner', false);\n if (!noExperience) {\n $state.go(vm.stateGo);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('thirdPartySearchController', thirdPartySearchController);\nthirdPartySearchController.$inject = ['$scope', 'commongaTaggingService'];\nfunction thirdPartySearchController($scope, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.tab = 1;\n\n /* --------------Function Definitions-----------------------*/\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function virtualPagePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n function setTab(tabId) {\n $scope.$emit('loadingSpinner', true);\n vm.tab = tabId;\n var goToPage = '';\n if (tabId === 1) {\n goToPage = 'customerSearch';\n } else {\n goToPage = 'propertySearch';\n }\n $scope.$emit('nextStep', goToPage);\n }\n function load() {\n $scope.$emit('loadingSpinner', false);\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.isSet = isSet;\n vm.setTab = setTab;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('UMCPublicModalController', umcPublicModalController);\numcPublicModalController.$inject = ['$log', '$modalInstance', 'assetService', '$scope', '$rootScope', 'commongaTaggingService', 'modalParameters', 'updateConsentService'];\nfunction umcPublicModalController($log, $modalInstance, assetService, $scope, $rootScope, commongaTaggingService, modalParameters, updateConsentService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n vm.accountData = {};\n var consetValues = {\n x: 'IGN',\n revoke: 'DEC',\n accept: 'ACC',\n close: ''\n };\n var EXPAND_BTN_VAL = 'Expand Terms of Use';\n var SHRINK_BTN_VAL = 'Show less';\n var jurisdiction = '';\n var accountNumber = '';\n var channel = '';\n var businessFunction = '';\n\n /**\r\n * Global Vars\r\n */\n vm.umc = {};\n vm.activeAgreeButton = true;\n vm.activeCloseButton = true;\n vm.latestConsent = {};\n vm.consentValue = '';\n vm.isExpanded = false;\n vm.expandBtnText = EXPAND_BTN_VAL;\n\n /**\r\n * Function Declarations\r\n */\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function closeModal(event, closedFrom, GATAction) {\n vm.on = 'on';\n vm.off = 'off';\n pushVPV(\"/vpv/authenticated/universal-marketing-consent/\".concat(businessFunction, \"/unlock-additional-options/on/\").concat(GATAction));\n pushDL(\"universal_marketing_consent_\".concat(businessFunction), GATAction, 'unlock-additional-options');\n vm.consentValue = consetValues[closedFrom];\n var version = \"\".concat($rootScope.latestConsent.version);\n var payload = {\n contractAccountId: accountNumber,\n action: vm.consentValue,\n version: version,\n consentDate: moment().format('YYYY-MM-DDTHH:mm:ss'),\n jurisdiction: jurisdiction,\n channel: channel\n };\n updateConsentService.sitecore.updateConsentPublic(payload).then(function (result) {\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.UMCUpdated, result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function closeModalUMC($event, closedFrom) {\n closeModal('', closedFrom);\n }\n function toggleContent(e) {\n e.preventDefault();\n var expandBtn = document.getElementById('umc-btn');\n var consentText = document.getElementById('ConsentText');\n vm.isExpanded = !vm.isExpanded;\n var expanded = (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\n expandBtn.setAttribute('aria-expanded', !expanded);\n consentText.setAttribute('aria-expanded', !expanded);\n if (vm.isExpanded) {\n consentText.style.height = \"\".concat(consentText.scrollHeight, \"px\");\n vm.isDisabled = false;\n vm.expandBtnText = SHRINK_BTN_VAL;\n changeButton();\n } else {\n consentText.style.height = '350px';\n vm.expandBtnText = EXPAND_BTN_VAL;\n }\n }\n ;\n function changeButton() {\n vm.activeAgreeButton = false;\n vm.activeCloseButton = false;\n angular.element(document.getElementById(assetService.strings.CONSENT_TEXT)).scope().$apply();\n }\n function setGlobalValues(juris, accNum, chnl, busFn) {\n jurisdiction = juris;\n accountNumber = accNum;\n channel = chnl;\n businessFunction = busFn;\n }\n function load() {\n var juris = modalParameters.jurisdiction,\n accNum = modalParameters.accountNumber,\n chnl = modalParameters.channel,\n busFn = modalParameters.businessFunction;\n setGlobalValues(juris, accNum, chnl, busFn);\n vm.on = 'on';\n pushVPV(\"/vpv/authenticated/universal-marketing-consent/\".concat(busFn, \"/unlock-additional-options/on/impression\"));\n setTimeout(function () {\n angular.element(document.getElementById(assetService.strings.CONSENT_TEXT)).bind('scroll', function () {\n var textarea = angular.element(document.getElementById(assetService.strings.CONSENT_TEXT));\n var scrollSize = textarea[0].scrollHeight - 10;\n if (textarea[0].offsetHeight + Math.round(textarea[0].scrollTop) >= scrollSize) {\n $scope.$apply(function () {\n changeButton();\n });\n }\n });\n }, 500);\n }\n\n /**\r\n * Function Definitions\r\n */\n vm.closeModalUMC = closeModalUMC;\n vm.closeModal = closeModal;\n vm.toggleContent = toggleContent;\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('UMCModalController', UMCModalController);\nUMCModalController.$inject = ['$log', '$modalInstance', 'assetService', 'sessionStorageService', '$scope', '$rootScope', 'getLatestConsentService', 'notificationPreferencesAssetsService', 'umcModalService', 'commongaTaggingService', 'readConsentService'];\nfunction UMCModalController($log, $modalInstance, assetService, sessionStorageService, $scope, $rootScope, getLatestConsentService, notificationPreferencesAssetsService, umcModalService, commongaTaggingService, readConsentService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n vm.accountData = {};\n var consetValues = {\n x: 'IGN',\n revoke: 'DEC',\n accept: 'ACC',\n close: ''\n };\n var EXPAND_BTN_VAL = 'Expand Terms of Use';\n var SHRINK_BTN_VAL = 'Show less';\n\n /**\r\n * Global Vars\r\n */\n vm.showLoader = {\n x: false,\n revoke: false,\n accept: false,\n close: false\n };\n vm.umc = {};\n vm.activeAgreeButton = true;\n vm.activeCloseButton = true;\n vm.latestConsent = {};\n vm.consentValue = '';\n vm.version = '';\n vm.channel = '';\n vm.isExpanded = false;\n vm.expandBtnText = EXPAND_BTN_VAL;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n var _strings = notificationPreferencesAssetsService.strings;\n /**\r\n * Function Definitions\r\n */\n vm.closeModalUMC = closeModalUMC;\n vm.closeModal = closeModal;\n vm.save = save;\n\n /** Watchers */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var _globalSelectedAccount;\n if (globalAccountInfo.hasOwnProperty(_strings.accountSelected)) {\n _globalSelectedAccount = globalAccountInfo.accountSelected;\n var globalSelectedAccountEmail = globalAccountInfo.userEmail;\n }\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n });\n\n /**\r\n * Function Declarations\r\n */\n function closeModal(event, closedFrom) {\n var checkLoader = Object.values(vm.showLoader).every(function (item) {\n return item === false;\n });\n if (checkLoader) {\n vm.showLoader[closedFrom] = true;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.on = 'on';\n vm.off = 'off';\n if (closedFrom === 'close') {\n $modalInstance.close();\n if ($rootScope.closeBtn === false) {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-off').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-off').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-off').attr('consentStatusclose')));\n virtualPagePush($('#hdn-toggle-off').attr('businessFunction'), $('#hdn-toggle-off').attr('headLine'), vm.off, $('#hdn-toggle-off').attr('consentStatusclose'));\n } else {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-on').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-on').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-on').attr('consentStatusclose')));\n virtualPagePush($('#hdn-toggle-on').attr('businessFunction'), $('#hdn-toggle-on').attr('headLine'), vm.off, $('#hdn-toggle-on').attr('consentStatusclose'));\n }\n //$rootScope.closeBtn = false;\n } else {\n vm.consentValue = consetValues[closedFrom];\n if ($rootScope.newMajorVersion) {\n if (vm.consentValue === 'IGN') {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-on').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-on').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-on').attr('consentStatusdecline')), \"subheadline:\".concat($('#hdn-toggle-on').attr('consentUpgradeText')).concat(parseInt($rootScope.currentVersion)));\n virtualPagePush($('#hdn-toggle-on').attr('businessFunction'), $('#hdn-toggle-on').attr('headLine'), $('#hdn-toggle-on').attr('consentUpgradeText') + parseInt($rootScope.currentVersion), vm.on, $('#hdn-toggle-on').attr('consentStatusdecline'));\n }\n if (vm.consentValue === 'ACC') {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-on').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-on').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-on').attr('consentStatusaccept')), \"subheadline:\".concat($('#hdn-toggle-on').attr('consentUpgradeText')).concat(parseInt($rootScope.currentVersion)));\n virtualPagePush($('#hdn-toggle-on').attr('businessFunction'), $('#hdn-toggle-on').attr('headLine'), $('#hdn-toggle-on').attr('consentUpgradeText') + parseInt($rootScope.currentVersion), vm.on, $('#hdn-toggle-on').attr('consentStatusaccept'));\n }\n } else if (!$rootScope.newMajorVersion) {\n if (vm.consentValue === 'IGN') {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-on').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-on').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-on').attr('consentStatusdecline')));\n virtualPagePush($('#hdn-toggle-on').attr('businessFunction'), $('#hdn-toggle-on').attr('headLine'), vm.on, $('#hdn-toggle-on').attr('consentStatusdecline'));\n // virtualPagePush($(\"#hdn-toggle-on\").attr(\"businessFunction\"), $(\"#hdn-toggle-on\").attr(\"headLine\"), $(\"#hdn-toggle-on\").attr(\"consentUpgradeText\") + $rootScope.currentVersion, vm.on , $(\"#hdn-toggle-on\").attr(\"consentStatusdecline\"));\n }\n if (vm.consentValue === 'ACC') {\n attributePush(\"workFlow:\".concat($('#hdn-toggle-on').attr('businessFunction')), \"headline:\".concat($('#hdn-toggle-on').attr('headLine')), \"buttonText:\".concat($('#hdn-toggle-on').attr('consentStatusaccept')));\n virtualPagePush($('#hdn-toggle-on').attr('businessFunction'), $('#hdn-toggle-on').attr('headLine'), vm.on, $('#hdn-toggle-on').attr('consentStatusaccept'));\n // virtualPagePush($(\"#hdn-toggle-on\").attr(\"businessFunction\"), $(\"#hdn-toggle-on\").attr(\"headLine\"), $(\"#hdn-toggle-on\").attr(\"consentUpgradeText\") + $rootScope.currentVersion, vm.on , $(\"#hdn-toggle-on\").attr(\"consentStatusaccept\"));\n }\n }\n umcModalService.UMCUpdateConsent(vm.consentValue).then(function (result) {\n $modalInstance.close();\n if ($rootScope.channel === '010' && result !== undefined && result.d.Type === 'E') {\n $rootScope.showToast = 'error';\n var message = closedFrom === 'revoke' ? $('#hdn-toggle-off').attr('RevokeErrorMessage') : $('#hdn-toggle-on').attr('AcceptErrorMessage');\n var toastMessage = {\n option: 'error',\n messageOption: message,\n showToast: 'error'\n };\n $rootScope.umcErrorOnToggle = true;\n $rootScope.$broadcast(assetService.events.reloadAdditionalOptions, toastMessage);\n } else {\n var _toastMessage = {\n option: 'success',\n showToast: 'success'\n };\n $rootScope.$broadcast(assetService.events.reloadAdditionalOptions, _toastMessage);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n }\n function closeModalUMC($event, closedFrom) {\n closeModal('', closedFrom);\n }\n function save() {\n // Update consent service\n }\n vm.toggleContent = function (e) {\n e.preventDefault();\n var expandBtn = document.getElementById('umc-btn');\n var consentText = document.getElementById('ConsentText');\n vm.isExpanded = !vm.isExpanded;\n var expanded = (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\n expandBtn.setAttribute('aria-expanded', !expanded);\n consentText.setAttribute('aria-expanded', !expanded);\n if (vm.isExpanded) {\n consentText.style.height = \"\".concat(consentText.scrollHeight, \"px\");\n vm.isDisabled = false;\n vm.expandBtnText = SHRINK_BTN_VAL;\n changeButton();\n } else {\n consentText.style.height = '350px';\n vm.expandBtnText = EXPAND_BTN_VAL;\n }\n };\n function changeButton() {\n vm.activeAgreeButton = false;\n vm.activeCloseButton = false;\n angular.element(document.getElementById(assetService.strings.CONSENT_TEXT)).scope().$apply();\n }\n function load() {\n vm.on = 'on';\n setTimeout(function () {\n angular.element(document.getElementById(assetService.strings.CONSENT_TEXT)).bind('scroll', function () {\n var textarea = angular.element(document.getElementById(assetService.strings.CONSENT_TEXT));\n var scrollSize = textarea[0].scrollHeight - 10;\n if (textarea[0].offsetHeight + Math.round(textarea[0].scrollTop) >= scrollSize) {\n $scope.$apply(function () {\n changeButton();\n });\n }\n });\n }, 500);\n setTimeout(function () {\n if ($rootScope.channel === '005') {\n if ($rootScope.currentVersion == '') {\n virtualPagePush($('#hdn-toggle-on').attr('businessfunction'), $('#hdn-toggle-on').attr('headline'), vm.on, $('#hdn-toggle-on').attr('consentstatusimpression'));\n } else {\n virtualPagePush($('#hdn-toggle-on').attr('businessfunction'), $('#hdn-toggle-on').attr('headline'), $('#hdn-toggle-on').attr('consentUpgradeText') + $rootScope.currentVersion, vm.on, $('#hdn-toggle-on').attr('consentstatusimpression'));\n }\n }\n }, 500);\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n vm.umc = sessionStorageService.get(assetService.notifPref.sessionStorage.umcCard);\n vm.channel = $rootScope.channel;\n load();\n };\n init();\n\n /* --------------------------------------Analytics--------------------------------------*/\n // function layerPushFor(onclose) {\n // const vpnName = `/vpv/authenticated/universal-marketing-consent/unlock-additional-options/you-are-currently-using-${vm.version}/on/${onclose}`;\n // $rootScope.virtualPagePush({ event: 'fire-vpv', 'vpv-name': vpnName });\n // }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n}\n/*\r\n * duke.account-selector.js\r\n * Javascript file to manage all interaction with the Account Selector\r\n */\n\napp.directive('accountSelector', ['$window', '$rootScope', 'dataAttribution', function ($window, $rootScope, dataAttribution) {\n return {\n restrict: 'E',\n scope: {\n accountImg: '@',\n searchImg: '@',\n placeholder: '@',\n accountText: '@',\n pageId: '@',\n id: '@',\n noResultMessage: '@',\n arrowText: '@',\n actionUrl: '@'\n },\n require: '?ngModel',\n replace: true,\n transclude: true,\n templateUrl: '/Assets/site/js/templates/account-selector.html',\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {}],\n link: function link(scope, element, attrs, ngModel) {\n var serviceSuccess = function serviceSuccess(data) {\n scope.data = data;\n scope.selected = data.SelectedAccount;\n scope.arrowText = data.ArrowText;\n scope.dashboardUrl = data.DashboardUrl;\n if (data.TrackingInfo) {\n scope.TrackingInfo = data.TrackingInfo;\n $rootScope.dataLayer.push(data.TrackingInfo);\n }\n scope.success = true;\n collapseContent();\n };\n var serviceError = function serviceError(data) {\n // Remove on loading and handle error\n scope.success = false;\n collapseContent();\n };\n\n // Real Api Call from: AccountSelector/GetAccountSelector\n $rootScope.getService({}, '/api/AccountSelector/GetAccountSelector').then(function (response) {\n if (response == 'error') {\n serviceError(response);\n } else {\n serviceSuccess(response);\n }\n });\n var searchInput = angular.element('#searchAccount');\n searchInput.click(function () {\n $window.scrollTo(0, 0);\n });\n var collapseContent = function collapseContent() {\n $('.account-selector').slideDown(1000);\n };\n\n // view all accounts link click\n scope.attributionPush = function (category, action, label, event, link, $event) {\n $event.preventDefault();\n dataAttribution.pushData(category, action, label, event);\n window.location.href = link;\n };\n element.find('.acc-data').on('click', function (e) {\n e.stopPropagation();\n });\n }\n };\n}]);\napp.directive(\"fpCustomer\", function ($timeout) {\n return {\n restrict: 'E',\n templateUrl: '/Assets/site/js/templates/authenticated/fp-customer.html',\n require: '?ngModel',\n transclude: true,\n scope: {\n serviceOrder: '='\n },\n link: function link(scope, element, attrs, ngModel) {\n scope.telFormat = function (tel) {\n var regexObj = /^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;\n if (regexObj.test(tel)) {\n var parts = tel.match(regexObj);\n var phone = \"\";\n if (parts[1]) {\n phone += \"(\" + parts[1] + \") \";\n }\n phone += parts[2] + \"-\" + parts[3];\n return phone;\n } else {\n //invalid phone number\n return tel;\n }\n };\n }\n };\n});\n/*\r\n * duke.checkbox-list.js\r\n * Angular directive for checkboxlist fields\r\n */\n\napp.directive('checkboxList', function ($document) {\n return {\n restrict: 'A',\n scope: {\n onlyChecked: \"=?\"\n },\n require: 'ngModel',\n link: function link(scope, element, attrs, ngModel) {\n var checkboxListSelected = [];\n ngModel.$render = function () {\n if (!ngModel.$modelValue) {\n return;\n }\n ngModel.$setTouched();\n };\n angular.element(element.find(\"input\")).bind(\"click\", function () {\n ngModel.$setTouched();\n var model = angular.element(this).controller('ngModel');\n var label = angular.element(this).next().text();\n var checkboxBooleanValue = model.$viewValue;\n var temporalCheckbox = {\n id: this.id,\n value: model.$modelValue,\n text: label\n };\n if (checkboxBooleanValue) {\n model.$setViewValue(temporalCheckbox);\n checkboxListSelected.push(temporalCheckbox);\n } else {\n _.remove(checkboxListSelected, {\n id: this.id\n });\n }\n var checkboxArray = [];\n checkboxArray = element.find(\"input[type='checkbox']:checked\");\n var checkboxLength = checkboxArray.length;\n if (scope.onlyChecked) {\n if (checkboxLength == scope.onlyChecked) {\n element.find(\"input:checkbox:not(:checked)\").attr(\"disabled\", true);\n ngModel.$setViewValue(checkboxListSelected);\n } else if (checkboxLength < scope.onlyChecked) {\n element.find(\"input:checkbox:not(:checked)\").prop(\"disabled\", false);\n ngModel.$setViewValue(null);\n }\n } else {\n ngModel.$setViewValue(checkboxListSelected);\n }\n if (checkboxArray.length == 0) {\n ngModel.$setViewValue(null);\n }\n });\n }\n };\n});\n/*\r\n * duke.radio-button.js\r\n * Angular directive for radio buttons fields\r\n */\n\napp.directive(\"radioButton\", ['$sce', '$compile', function ($sce, $compile) {\n return {\n priority: 1001,\n restrict: \"E\",\n replace: true,\n scope: {\n myModel: \"=\",\n radioId: \"@\",\n radioGroupName: \"@\",\n checked: \"=\",\n innerValue: \"@\",\n text: \"@\",\n analytics: \"@\",\n onSelected: \"=\",\n disabledOn: \"=?\"\n },\n transclude: true,\n templateUrl: '/Assets/site/js/templates/authenticated/radio-button-auth.html',\n link: function link(scope, element, attrs) {\n element.removeAttr(\"id\");\n var radioInput = element.find(\".radio-input\");\n var model = angular.element(element.find(\".radio-input\")).controller('ngModel');\n var isRequired = element.attr(\"required\");\n if (isRequired == \"required\") {\n element.parent().addClass(\"required\");\n radioInput.attr(\"required\", \"required\");\n element.removeAttr(\"required\");\n $compile(radioInput)(scope);\n }\n if (scope.checked) {\n var input = element.find(\"input\");\n input.attr(\"checked\", \"true\");\n }\n scope.radioChange = function () {\n if (scope.onSelected) {\n scope.onSelected(scope.analytics);\n }\n };\n scope.$watch('checked', function (oldValue, newValue) {});\n scope.temporalRadioValue = {\n text: scope.text,\n value: scope.innerValue\n };\n if (scope.checked) {\n model.$setTouched();\n model.$setViewValue(scope.temporalRadioValue);\n }\n },\n controller: [\"$scope\", \"$element\", function ($scope, $element) {\n $scope.checked = $scope.checked;\n }]\n };\n}]);\n/* eslint-disable no-magic-numbers */\n/* eslint-disable max-len */\n/* eslint-disable id-length */\napp.factory('ccBNIAssetService', function () {\n return {\n contractAccountBannersPriorityMessageCodes: [10000100000, 10000200000, 10000300000, 10000400000, 10000500000, 10000600000, 10000700000, 10000800000, 1000100000, 11000100000, 11000200000, 11000300000, 11000400000, 11000500000, 11000600000, 11000700000, 11000800000, 12000100000, 12000200000, 12000300000, 12000400000, 12000500000, 12000600000, 12000700000, 12000800000, 13000100000, 13000200000, 13000300000, 13000400000, 13000500000, 13000600000, 13000700000, 13000800000, 14000100001, 14000100003, 14000100005, 14000100007, 14000100009, 14000100011, 14000100013, 14000200002, 14000200004, 14000200006, 14000200008, 14000200010, 14000200012, 14000200014, 15000100000, 15000100000, 15000100000, 15000200000, 15000300000, 15000400000, 16000100000, 16000200000, 16000300000, 17000100000, 17000200000, 17000300000, 17000400000, 18000100000]\n };\n});\n/* eslint-disable no-param-reassign */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-unused-vars */\n/* eslint-disable max-len */\napp.factory('FPAddendumService', function (FPAssetService, FPGenericHelperService, FPIndexedDbDataService, sessionStorageService) {\n var deleteCancelledReasonTypes = function deleteCancelledReasonTypes() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.cancelledReasonTypes);\n };\n var deleteDeclinedReasonTypes = function deleteDeclinedReasonTypes() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.declinedReasonTypes);\n };\n var deleteSRRepairTypes = function deleteSRRepairTypes() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.srRepairTypes);\n };\n var deleteSRResolutionTypes = function deleteSRResolutionTypes() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.srResolutionTypes);\n };\n var deleteSRStatusList = function deleteSRStatusList() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.srStatusList);\n };\n var deleteWOResolutionTypes = function deleteWOResolutionTypes() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.woResolutionTypes);\n };\n var deleteWOStatusList = function deleteWOStatusList() {\n sessionStorageService.delete(FPAssetService.storageKeys.addendum.woStatusList);\n };\n var getCancelledReasonTypes = function getCancelledReasonTypes() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.cancelledReasonTypes);\n return result || null;\n };\n var getDeclinedReasonTypes = function getDeclinedReasonTypes() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.declinedReasonTypes);\n return result || null;\n };\n var getSRRepairTypes = function getSRRepairTypes() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.srRepairTypes);\n return result || null;\n };\n var getSRResolutionTypes = function getSRResolutionTypes() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.srResolutionTypes);\n return result || null;\n };\n var getSRStatusList = function getSRStatusList() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.srStatusList);\n return result || null;\n };\n var getWOResolutionTypes = function getWOResolutionTypes() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.woResolutionTypes);\n return result || null;\n };\n var getWOStatusList = function getWOStatusList() {\n var result = sessionStorageService.get(FPAssetService.storageKeys.addendum.woStatusList);\n return result || null;\n };\n var setCancelledReasonTypes = function setCancelledReasonTypes(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.cancelledReasonTypes, list);\n };\n var setDeclinedReasonTypes = function setDeclinedReasonTypes(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.declinedReasonTypes, list);\n };\n var setSRRepairTypes = function setSRRepairTypes(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.srRepairTypes, list);\n };\n var setSRResolutionTypes = function setSRResolutionTypes(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.srResolutionTypes, list);\n };\n var setSRStatusList = function setSRStatusList(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.srStatusList, list);\n };\n var setWOResolutionTypes = function setWOResolutionTypes(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.woResolutionTypes, list);\n };\n var setWOStatusList = function setWOStatusList(list) {\n sessionStorageService.set(FPAssetService.storageKeys.addendum.woStatusList, list);\n };\n var parseFullAddendum = function parseFullAddendum(addendum) {\n var cancelledReasonTypes = getCancelledReasonTypes();\n if (cancelledReasonTypes) {\n deleteCancelledReasonTypes();\n }\n setCancelledReasonTypes(addendum.cancelledReasonTypes);\n var declinedReasonTypes = getDeclinedReasonTypes();\n if (declinedReasonTypes) {\n deleteDeclinedReasonTypes();\n }\n setDeclinedReasonTypes(addendum.declinedReasonTypes);\n var srRepairTypes = getSRRepairTypes();\n if (srRepairTypes) {\n deleteSRRepairTypes();\n }\n setSRRepairTypes(addendum.srRepairTypes);\n var srResolutionTypes = getSRResolutionTypes();\n if (srResolutionTypes) {\n deleteSRResolutionTypes();\n }\n setSRResolutionTypes(addendum.srResolutionTypes);\n var srStatusList = getSRStatusList();\n if (srStatusList) {\n deleteSRStatusList();\n }\n setSRStatusList(addendum.srStatusList);\n var woResolutionTypes = getWOResolutionTypes();\n if (woResolutionTypes) {\n deleteWOResolutionTypes();\n }\n setWOResolutionTypes(addendum.woResolutionTypes);\n var woStatusList = getWOStatusList();\n if (woStatusList) {\n deleteWOStatusList();\n }\n setWOStatusList(addendum.woStatusList);\n };\n var parseAddendumIndexedDb = function parseAddendumIndexedDb(addendum) {\n var promises = [];\n if (Object.prototype.hasOwnProperty.call(addendum, 'cancelledReasonTypes')) {\n if (addendum.cancelledReasonTypes.length > 0) {\n var cancelledReasonTypes = addendum.cancelledReasonTypes.filter(function (type) {\n return type.code != '';\n });\n if (cancelledReasonTypes.length > 0) {\n promises.push(FPIndexedDbDataService.putCancelledReasonTypes(cancelledReasonTypes).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'declinedReasonTypes')) {\n if (addendum.declinedReasonTypes.length > 0) {\n var declinedReasonTypes = addendum.declinedReasonTypes.filter(function (type) {\n return type.code != '';\n });\n if (declinedReasonTypes.length > 0) {\n promises.push(FPIndexedDbDataService.putDeclinedReasonTypes(declinedReasonTypes).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'srRepairTypes')) {\n if (addendum.srRepairTypes.length > 0) {\n var srRepairTypes = addendum.srRepairTypes.filter(function (type) {\n return type.code != '';\n });\n if (srRepairTypes.length > 0) {\n var repairTypes = FPGenericHelperService.generateIds(srRepairTypes);\n promises.push(FPIndexedDbDataService.putSRRepairTypes(repairTypes).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'srResolutionTypes')) {\n if (addendum.srResolutionTypes.length > 0) {\n var srResolutionTypes = addendum.srResolutionTypes.filter(function (type) {\n return type.code != '';\n });\n if (srResolutionTypes.length > 0) {\n var resolutionTypes = FPGenericHelperService.generateIds(srResolutionTypes);\n promises.push(FPIndexedDbDataService.putSRResolutionTypes(resolutionTypes).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'srStatusList')) {\n if (addendum.srStatusList.length > 0) {\n var srStatusList = addendum.srStatusList.filter(function (type) {\n return type.code != '';\n });\n if (srStatusList.length > 0) {\n promises.push(FPIndexedDbDataService.putSRStatusTypes(srStatusList).then(function (result) {}));\n promises.push(FPIndexedDbDataService.putSRStatusTypes(srStatusList).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'woResolutionTypes')) {\n if (addendum.woResolutionTypes.length > 0) {\n var woResolutionTypes = addendum.woResolutionTypes.filter(function (type) {\n return type.code != '';\n });\n if (woResolutionTypes.length > 0) {\n var _resolutionTypes = FPGenericHelperService.generateIds(woResolutionTypes);\n promises.push(FPIndexedDbDataService.putWOResolutionTypes(_resolutionTypes).then(function (result) {}));\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(addendum, 'woStatusList')) {\n if (addendum.woStatusList.length > 0) {\n var woStatusList = addendum.woStatusList.filter(function (type) {\n return type.code != '';\n });\n if (woStatusList.length > 0) {\n promises.push(FPIndexedDbDataService.putWOStatusTypes(woStatusList).then(function (result) {}));\n promises.push(FPIndexedDbDataService.putStatusTypes(woStatusList).then(function (result) {}));\n }\n }\n }\n return promises;\n };\n return {\n deleteCancelledReasonTypes: deleteCancelledReasonTypes,\n deleteDeclinedReasonTypes: deleteDeclinedReasonTypes,\n deleteSRRepairTypes: deleteSRRepairTypes,\n deleteSRResolutionTypes: deleteSRResolutionTypes,\n deleteSRStatusList: deleteSRStatusList,\n deleteWOResolutionTypes: deleteWOResolutionTypes,\n deleteWOStatusList: deleteWOStatusList,\n getCancelledReasonTypes: getCancelledReasonTypes,\n getDeclinedReasonTypes: getDeclinedReasonTypes,\n getSRRepairTypes: getSRRepairTypes,\n getSRResolutionTypes: getSRResolutionTypes,\n getSRStatusList: getSRStatusList,\n getWOResolutionTypes: getWOResolutionTypes,\n getWOStatusList: getWOStatusList,\n setCancelledReasonTypes: setCancelledReasonTypes,\n setDeclinedReasonTypes: setDeclinedReasonTypes,\n setSRRepairTypes: setSRRepairTypes,\n setSRResolutionTypes: setSRResolutionTypes,\n setSRStatusList: setSRStatusList,\n setWOResolutionTypes: setWOResolutionTypes,\n setWOStatusList: setWOStatusList,\n parseFullAddendum: parseFullAddendum,\n parseAddendumIndexedDb: parseAddendumIndexedDb\n };\n});\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-undef */\n/* eslint-disable max-len */\napp.factory('FPAlertsService', function (FPServiceOrderService) {\n var calculateCompleteOrders = function calculateCompleteOrders(serviceOrders) {\n // soStatus == 'DISPATCHED' & lastModifiedDate > 7 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n return FPServiceOrderService.isCompleteOrder(serviceOrder);\n });\n return orders.length;\n };\n var calculateContactOrders = function calculateContactOrders(serviceOrders) {\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate == NULL & lastModifiedDate < 3 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n return FPServiceOrderService.isContactOrder(serviceOrder);\n });\n return orders.length;\n };\n var calculateInvoiceOrders = function calculateInvoiceOrders(serviceOrders) {\n // soStatus == 'CONTRACTOR_REVIEWED' & lastModifiedDate > 14 Day\n var orders = serviceOrders.filter(function (serviceOrder) {\n return FPServiceOrderService.isInvoiceOrder(serviceOrder);\n });\n return orders.length;\n };\n var calculateNewOrders = function calculateNewOrders(serviceOrders) {\n // createdDate < 3 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n return FPServiceOrderService.isNewOrder(serviceOrder);\n });\n return orders.length;\n };\n var calculateScheduleOrders = function calculateScheduleOrders(serviceOrders) {\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate != NULL & lastModifiedDate > 30 days & scheduledStartDate == NULL\n var orders = serviceOrders.filter(function (serviceOrder) {\n return FPServiceOrderService.isScheduleOrder(serviceOrder);\n });\n return orders.length;\n };\n return {\n calculateCompleteOrders: calculateCompleteOrders,\n calculateContactOrders: calculateContactOrders,\n calculateInvoiceOrders: calculateInvoiceOrders,\n calculateNewOrders: calculateNewOrders,\n calculateScheduleOrders: calculateScheduleOrders\n };\n});\napp.service('FPApigeeApiConfigService', function (FPAssetService, FPCurrentUserService, sessionStorageService) {\n // Global Vars\n var deleteServiceHost = function deleteServiceHost() {\n sessionStorageService.delete(FPAssetService.storageKeys.serviceHost);\n };\n var getAcceptedOrdersUrl = function getAcceptedOrdersUrl(cdpUserId, includeLastModified) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.default + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.statuses + FPAssetService.urlTokens.acceptedOrdersStatuses;\n if (includeLastModified) {\n return url + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.includeLastModified + new Date.now() + FPAssetService.urlTokens.appendParameters + ts.getTime();\n }\n return url + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n };\n var getAddendumUrl = function getAddendumUrl(cdpUserId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.cdpUsers + cdpUserId + FPAssetService.urlTokens.addendum + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getApigeeAccessInfoUrl = function getApigeeAccessInfoUrl() {\n return FPAssetService.sitecoreEndpoints.GetApigeeAccessInfo;\n };\n var getCCAccessTokenUrl = function getCCAccessTokenUrl() {\n var serviceUrl = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.ccoauth;\n return serviceUrl;\n };\n var getCompanyDetailsUrl = function getCompanyDetailsUrl(cdpUserId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.contractor + cdpUserId + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getDefaultServiceOrderUrl = function getDefaultServiceOrderUrl(cdpUserId, serviceOrderId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.serviceOrderIds + serviceOrderId + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.default + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getDefaultServiceOrdersUrl = function getDefaultServiceOrdersUrl(cdpUserId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.default + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getFullServiceOrderUrl = function getFullServiceOrderUrl(cdpUserId, serviceOrderId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.serviceOrderIds + serviceOrderId + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.full + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getFullServiceOrdersUrl = function getFullServiceOrdersUrl(cdpUserId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.full + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var getInvoiceOrdersUrl = function getInvoiceOrdersUrl(cdpUserId, includeLastModified) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + cdpUserId + FPAssetService.urlTokens.serviceOrders + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.fields + FPAssetService.urlTokens.default + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.statuses + FPAssetService.urlTokens.invoiceOrdersStatuses;\n if (includeLastModified) {\n return url + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.includeLastModified + new Date.now() + FPAssetService.urlTokens.appendParameters + ts.getTime();\n }\n return url + FPAssetService.urlTokens.appendParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n };\n var getOAuthTokenUrl = function getOAuthTokenUrl() {\n var serviceUrl = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.oauth;\n return serviceUrl;\n };\n var getServiceHost = function getServiceHost() {\n if (assetService.apiConfig.useLocalHost) {\n setServiceHost(assetService.apigeeEnvs.tst);\n return assetService.apigeeEnvs.tst;\n } else {\n var serviceHost = sessionStorageService.get(assetService.storageKeys.serviceHost);\n return serviceHost || null;\n }\n };\n var getUserAccessUrl = function getUserAccessUrl() {\n return FPAssetService.sitecoreEndpoints.GetUserAccess;\n };\n var getUsersUrl = function getUsersUrl(cdpUserId) {\n var ts = new Date();\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.cdpUsers + cdpUserId + FPAssetService.urlTokens.users + FPAssetService.urlTokens.beginParameters + FPAssetService.urlTokens.timestamp + ts.getTime();\n return url;\n };\n var logExceptionUrl = function logExceptionUrl() {\n return FPAssetService.sitecoreEndpoints.LogException;\n };\n var patchServiceOrder = function patchServiceOrder() {\n var url = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders + FPCurrentUserService.getCdpUserId() + FPAssetService.urlTokens.serviceOrders;\n return url;\n };\n var setServiceHost = function setServiceHost(serviceHost) {\n sessionStorageService.set(FPAssetService.storageKeys.serviceHost, serviceHost);\n };\n return {\n deleteServiceHost: deleteServiceHost,\n getAcceptedOrdersUrl: getAcceptedOrdersUrl,\n getAddendumUrl: getAddendumUrl,\n getApigeeAccessInfoUrl: getApigeeAccessInfoUrl,\n getCCAccessTokenUrl: getCCAccessTokenUrl,\n getCompanyDetailsUrl: getCompanyDetailsUrl,\n getDefaultServiceOrderUrl: getDefaultServiceOrderUrl,\n getDefaultServiceOrdersUrl: getDefaultServiceOrdersUrl,\n getFullServiceOrderUrl: getFullServiceOrderUrl,\n getFullServiceOrdersUrl: getFullServiceOrdersUrl,\n getInvoiceOrdersUrl: getInvoiceOrdersUrl,\n getOAuthTokenUrl: getOAuthTokenUrl,\n getUsersUrl: getUsersUrl,\n getServiceHost: getServiceHost,\n getUserAccessUrl: getUserAccessUrl,\n logExceptionUrl: logExceptionUrl,\n patchServiceOrder: patchServiceOrder,\n setServiceHost: setServiceHost\n };\n});\napp.factory('FPAppService', function (FPAssetService, FPBroadcastService, sessionStorageService) {\n var deleteDataLoad = function deleteDataLoad() {\n sessionStorageService.delete(FPAssetService.storageKeys.dataLoad);\n };\n var initDataLoad = function initDataLoad() {\n var dataObj = {\n addendum: false,\n acceptedOrders: false,\n invoiceOrders: false,\n companyDetails: false,\n users: false\n };\n sessionStorageService.set(FPAssetService.storageKeys.dataLoad, dataObj);\n };\n var getDataLoad = function getDataLoad() {\n var dataObj = sessionStorageService.get(FPAssetService.storageKeys.dataLoad);\n return dataObj || null;\n };\n var setDataLoad = function setDataLoad(dataObj) {\n sessionStorageService.set(FPAssetService.storageKeys.dataLoad, dataObj);\n };\n var validateDataLoad = function validateDataLoad(dataObj) {\n var flag = false;\n Object.keys(dataObj).forEach(function (key, _index) {\n if (!dataObj[key] && !flag) {\n flag = true;\n }\n });\n if (flag) {\n return false;\n }\n FPBroadcastService.dataLoaded();\n deleteDataLoad();\n return true;\n };\n return {\n deleteDataLoad: deleteDataLoad,\n initDataLoad: initDataLoad,\n getDataLoad: getDataLoad,\n setDataLoad: setDataLoad,\n validateDataLoad: validateDataLoad\n };\n});\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-underscore-dangle */\napp.factory('FPCSVServiceOrders', function (FPAssetService, FPGenericHelperService, FPSitecoreServices, FPDataModelsDTOService, FPDateHelperService) {\n var vm = this;\n vm.serviceOrders = null;\n vm.currentUserRole = null;\n vm.isContractor = null;\n vm.filteredServiceOrders = [];\n function exportCSV(acceptedOrInvoiceOrders) {\n if (acceptedOrInvoiceOrders === FPAssetService.strings.ACCEPTED_ORDERS) {\n return getAcceptedOrders().then(function () {\n formatAndSaveAsCSV(acceptedOrInvoiceOrders);\n }, function (error) {});\n }\n\n // acceptedOrInvoiceOrders === FPAssetService.strings.ACCEPTED_INVOICE_ORDERS\n return getInvoiceOrders().then(function () {\n formatAndSaveAsCSV(acceptedOrInvoiceOrders);\n }, function (error) {});\n }\n function formatAndSaveAsCSV(acceptedOrInvoiceOrders) {\n var serviceOrdersFormatted = transformServiceOrders(vm.filteredServiceOrders, acceptedOrInvoiceOrders);\n var workOrders = serviceOrdersFormatted[0];\n var serviceRequests = serviceOrdersFormatted[1];\n if (workOrders.length > 0) {\n saveAsCSV(workOrders, 'WorkOrders');\n }\n if (serviceRequests.length > 0) {\n saveAsCSV(serviceRequests, 'ServiceRequests');\n }\n }\n function saveAsCSV(dataFormatted, fileName) {\n var csvFile = Papa.unparse(dataFormatted, {\n header: true\n });\n var blob = new Blob([csvFile], {\n type: 'text/plain;charset=utf-8'\n });\n saveAs(blob, \"\".concat(fileName, \".csv\"));\n }\n function parseWorkOrder(data) {\n return {\n 'Number ID': data.serviceOrderId,\n 'Date Assigned': FPDateHelperService.getDateFromFullDate(data.createdDate, ' '),\n 'Last Modified Date': FPDateHelperService.getDateFromFullDate(data.lastModifiedDate, ' '),\n Status: FPAssetService.status[data.soStatus].value,\n Program: data.programName,\n 'Work Order Type': data.soTypeName,\n 'Account Name': data.customer.name,\n 'Service Address': \"\".concat(data.serviceAddress.line1, \" \").concat(data.serviceAddress.city, \" \").concat(data.serviceAddress.state, \" \").concat(data.serviceAddress.postalCode),\n County: data.serviceAddress.county,\n Jurisdiction: data.serviceAddress.jurisdiction,\n Meter: FPGenericHelperService.printValueFromArrayPositionKey('meterId', data.serviceAddress.meterNumber, 0),\n Subdivision: data.serviceAddress.subDivision,\n 'Directions to Service Address': data.serviceAddress.directions,\n 'Contact Name': data.contactName,\n 'Contact For Appointment': data.customerContactHistory.contactForAppointment ? 'X' : '',\n 'Contact For Appointment Comments': data.customerContactHistory.contactForAppointmentComments,\n 'Best Time To Call': data.customerContactPreferences.bestTimeToCall,\n 'Primary Phone': FPGenericHelperService.telFormat(data.customer.primaryPhone),\n 'Alternate Phone': FPGenericHelperService.telFormat(data.customer.alternatePhone),\n 'Email Address': data.customer.primaryEmailAddress,\n 'Service Comments': data.serviceComments,\n 'Rush Job?': data.isRushOrder ? 'X' : '',\n Technician: data.assignedTechnician.name,\n 'Multiple Technician Required?': data.multipleTechnicianRequired ? 'X' : '',\n 'Other Technician': data.assignedOtherTechnician,\n 'Contractor Internal Invoice Number': data.contractorInternalRefNumber,\n 'Contractor Invoice Number': data.contractorInvoiceNumber,\n 'Duke Invoice Number': data.dukeInvoiceNumber,\n 'Schedule Start Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.scheduledStartDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.scheduledStartDate, ' ')),\n 'Schedule End Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.scheduledEndDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.scheduledEndDate, ' ')),\n 'Notify Customer When In Route': data.customerContactPreferences.notifyCustomerWhenInRoute ? 'X' : '',\n 'Return Trip Required?': data.returnTripRequired ? 'X' : '',\n 'Reschedule Start Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.rescheduledStartDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.rescheduledStartDate, ' ')),\n 'Reschedule End Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.rescheduledEndDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.rescheduledEndDate, ' ')),\n 'Number of Contact Attempt': data.customerContactHistory.noOfContactAttempts,\n 'First Attempt Date': FPDateHelperService.getDateFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\n 'First Attempt Hour': FPDateHelperService.getHourFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\n 'Preferred Customer Email Address': data.customerContactPreferences.preferredEmailAddress,\n 'Equipment Name': data.equipmentDetails.deviceName,\n 'Equipment Serial Number': data.equipmentDetails.deviceSerialNumber,\n 'Device Operational/Re-add to Inventory': data.equipmentDetails.deviceOperational ? 'X' : '',\n 'Replacement Required?': data.equipmentDetails.replacementNeeded ? 'X' : '',\n 'Replacement Equipment Type': data.equipmentDetails.replacementDeviceName,\n 'Replacement Equipment Serial Number': data.equipmentDetails.replacementDeviceSerialNo,\n 'Single Point Grounding': data.groundingDetails.singlePointGrounding ? 'X' : '',\n 'Repairs Needed': data.groundingDetails.groundingRepairsNeeded ? 'X' : '',\n 'Description of Work, Quantity, Parts': data.descriptionOfWorkQtyParts,\n 'Trip Fee': data.orderCostTimeDetails.tripFee.value,\n Labor: data.orderCostTimeDetails.laborCost.value,\n Material: data.orderCostTimeDetails.materialCost.value,\n 'Total Cost': data.orderCostTimeDetails.tripFee.value + data.orderCostTimeDetails.laborCost.value + data.orderCostTimeDetails.materialCost.value,\n 'Resolution Type': FPGenericHelperService.printValueFromObjectKey('name', data.resolutionDetails.resolutionType),\n 'Resolution Date': \"\".concat(FPDateHelperService.getDateFromFullDate(data.resolutionDetails.resolutionDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.resolutionDetails.resolutionDate, ' ')),\n 'Customer Received Survey?': data.customerContactHistory.surveyReceivedByCustomer ? 'X' : ''\n };\n }\n function parseServiceRequest(data) {\n return {\n 'Number ID': data.serviceOrderId,\n 'Date Assigned': FPDateHelperService.getDateFromFullDate(data.createdDate, ' '),\n 'Last Modified Date': FPDateHelperService.getDateFromFullDate(data.lastModifiedDate, ' '),\n Status: FPAssetService.status[data.soStatus].value,\n Program: data.programName,\n 'Service Request Type': data.soTypeName,\n 'Account Name': data.customer.name,\n 'Service Address': \"\".concat(data.serviceAddress.line1, \" \").concat(data.serviceAddress.city, \" \").concat(data.serviceAddress.state, \" \").concat(data.serviceAddress.postalCode),\n County: data.serviceAddress.county,\n Jurisdiction: data.serviceAddress.jurisdiction,\n Meter: FPGenericHelperService.printValueFromArrayPositionKey('meterId', data.serviceAddress.meterNumber, 0),\n Subdivision: data.serviceAddress.subDivision,\n 'Directions to Service Address': data.serviceAddress.directions,\n 'Contact Name': data.contactName,\n 'Contact For Appointment': data.customerContactHistory.contactForAppointment ? 'X' : '',\n 'Contact For Appointment Comments': data.customerContactHistory.contactForAppointmentComments,\n 'Best Time To Call': data.customerContactPreferences.bestTimeToCall,\n 'Primary Phone': FPGenericHelperService.telFormat(data.customer.primaryPhone),\n 'Alternate Phone': FPGenericHelperService.telFormat(data.customer.alternatePhone),\n 'Email Address': data.customer.primaryEmailAddress,\n 'Service Comments': data.serviceComments,\n 'Rush Job?': data.isRushOrder ? 'X' : '',\n Technician: data.assignedTechnician.name,\n 'Multiple Technician Required?': data.multipleTechnicianRequired ? 'X' : '',\n 'Other Technician': data.assignedOtherTechnician,\n 'Contractor Internal Invoice Number': data.contractorInternalRefNumber,\n 'Contractor Invoice Number': data.contractorInvoiceNumber,\n 'Duke Invoice Number': data.dukeInvoiceNumber,\n 'Schedule Start Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.scheduledStartDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.scheduledStartDate, ' ')),\n 'Schedule End Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.scheduledEndDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.scheduledEndDate, ' ')),\n 'Notify Customer When In Route': data.customerContactPreferences.notifyCustomerWhenInRoute ? 'X' : '',\n 'Return Trip Required?': data.returnTripRequired ? 'X' : '',\n 'Reschedule Start Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.rescheduledStartDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.rescheduledStartDate, ' ')),\n 'Reschedule End Time': \"\".concat(FPDateHelperService.getDateFromFullDate(data.rescheduledEndDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.rescheduledEndDate, ' ')),\n 'Number of Contact Attempt': data.customerContactHistory.noOfContactAttempts,\n 'First Attempt Date': FPDateHelperService.getDateFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\n 'First Attempt Hour': FPDateHelperService.getHourFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\n 'Preferred Customer Email Address': data.customerContactPreferences.preferredEmailAddress,\n 'Service Order Balance': data.serviceOrderBalance.value,\n 'Entitlement Balance': data.programEntitlementBalance.value,\n 'Covered Description of Work, Quantity, Parts': data.descriptionOfWorkQtyPartsCovered,\n 'Regular Labor Hours': data.orderCostTimeDetails.regularLaborHours,\n 'Regular Labor Cost': data.orderCostTimeDetails.regularLaborCost.value,\n 'Entitlement Labor Hours': data.orderCostTimeDetails.entitlementLaborHours,\n 'Entitlement Labor Cost': data.orderCostTimeDetails.entitlementLaborCost.value,\n 'Total Labor Cost': totalLaborCost(data.orderCostTimeDetails.regularLaborCost.value, data.orderCostTimeDetails.entitlementLaborCost.value),\n 'Parts Cost': data.orderCostTimeDetails.partsCost.value,\n 'Trip Fee': data.orderCostTimeDetails.tripFee.value,\n 'Total Cost': data.orderCostTimeDetails.totalLaborPartsCoveredCost.value,\n 'Not Covered Description of Work, Quantity, Parts': data.descriptionOfWorkQtyPartsNonCovered,\n 'Labor Not Covered': data.orderCostTimeDetails.laborCostNotCovered.value,\n 'Parts Not Covered': data.orderCostTimeDetails.partsCostNotCovered.value,\n 'Total Not Covered': data.orderCostTimeDetails.totalDueFromCustomer.value,\n 'Resolution Type': FPGenericHelperService.printValueFromObjectKey('name', data.resolutionDetails.resolutionType),\n 'Repair Type': data.repairType.name,\n 'Resolution Date': \"\".concat(FPDateHelperService.getDateFromFullDate(data.resolutionDetails.resolutionDate, ' '), \" \").concat(FPDateHelperService.getHourFromFullDate(data.resolutionDetails.resolutionDate, ' ')),\n 'Customer Received Survey?': data.customerContactHistory.surveyReceivedByCustomer ? 'X' : ''\n };\n }\n function transformServiceOrders(serviceOrders) {\n var workOrders = [];\n var serviceRequests = [];\n if (serviceOrders.length > 0) {\n _.map(serviceOrders, function (serviceOrder) {\n if (serviceOrder.woorSR === FPAssetService.woorSRType.SERVICE_REQUEST) {\n serviceRequests.push(parseServiceRequest(serviceOrder));\n } else {\n workOrders.push(parseWorkOrder(serviceOrder));\n }\n });\n }\n return [workOrders, serviceRequests];\n }\n function getAcceptedOrders() {\n return FPSitecoreServices.getAcceptedOrders().then(function (result) {\n if (result) {\n if (result.serviceOrders.length > 0) {\n vm.filteredServiceOrders = FPDataModelsDTOService.transformServiceOrders(result.serviceOrders, FPAssetService.storageKeys.toggleFlags.acceptedOrders);\n }\n }\n });\n }\n function getInvoiceOrders() {\n return FPSitecoreServices.getInvoiceOrders().then(function (result) {\n if (result) {\n if (result.serviceOrders.length > 0) {\n vm.filteredServiceOrders = FPDataModelsDTOService.transformServiceOrders(result.serviceOrders, FPAssetService.storageKeys.toggleFlags.invoiceOrders);\n }\n }\n });\n }\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost);\n }\n function totalCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost) + parseFloat(!partsCost ? '0.0' : partsCost) + parseFloat(!tripFee ? '0.0' : tripFee);\n }\n function totalOrderCost(tripFee, laborCost, materialCost) {\n return parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost);\n }\n return {\n exportCSV: exportCSV\n };\n});\napp.factory('FPDataModelsConfigService', function () {\n function cancelledReasonWsDTO(cancelReasonType, reasonComments) {\n this.cancelReasonType = cancelReasonType; // code name pair\n this.reasonComments = reasonComments;\n }\n function cdpUserWsDTO(badgeId, cdpId, name, phone) {\n this.badgeId = badgeId;\n this.cdpId = cdpId;\n this.name = name;\n this.phone = phone;\n }\n ;\n function customerContactHistoryDTO(noOfContactAttempts, firstAttemptDate, firstAttemptDateDukeCalendar, firstAttemptDateHour, contactComments, surveyReceivedByCustomer, customerPreferredSurveyOption) {\n this.noOfContactAttempts = noOfContactAttempts;\n this.firstAttemptDate = firstAttemptDate;\n this.firstAttemptDateDukeCalendar = firstAttemptDateDukeCalendar;\n this.firstAttemptDateHour = firstAttemptDateHour;\n this.contactComments = contactComments;\n this.surveyReceivedByCustomer = surveyReceivedByCustomer;\n this.customerPreferredSurveyOption = customerPreferredSurveyOption;\n }\n ;\n function customerContactPreferencesWsDTO(bestTimeToCallStart, bestTimeToCallStart, preferredEmailAddress, notifyCustomerWhenInRoute) {\n this.bestTimeToCallStart = bestTimeToCallStart;\n this.bestTimeToCallEnd = bestTimeToCallEnd;\n this.preferredEmailAddress = preferredEmailAddress;\n this.notifyCustomerWhenInRoute = notifyCustomerWhenInRoute;\n }\n ;\n function customerWsDTO(name, firstName, middleName, lastName, primaryPhone, alternatePhone, primaryEmailAddress) {\n this.name = name;\n this.firstName = firstName;\n this.middleName = middleName;\n this.lastName = lastName;\n this.primaryPhone = primaryPhone;\n this.alternatePhone = alternatePhone;\n this.primaryEmailAddress = primaryEmailAddress;\n }\n ;\n function declinedReasonWsDTO(declinedReasonType, reasonComments) {\n this.declineReasonType = declinedReasonType; // code name pair,\n this.reasonComments = reasonComments;\n }\n ;\n function deviceOptionsWsDTO(deviceName, deviceCode) {\n this.deviceName = deviceName;\n this.deviceCode = deviceCode;\n }\n ;\n function equipmentDetailsWsDTO(deviceCode, deviceName, deviceSerialNumber, deviceOperational, replacementNeeded, replacementDeviceName, replacementDeviceSerialNo) {\n this.deviceCode = deviceCode;\n this.deviceName = deviceName;\n this.deviceSerialNumber = deviceSerialNumber;\n this.deviceOperational = deviceOperational;\n this.replacementNeeded = replacementNeeded;\n this.replacementDeviceName = replacementDeviceName;\n this.replacementDeviceSerialNo = replacementDeviceSerialNo;\n }\n ;\n function equipmentOptionsWsDTO(options) {\n this.options = options; // deviceOptionsWsDTO\n }\n ;\n function flatServiceOrder(assignedOtherTechnician, assignedTechnician, cancelledReason, contactName, contractorInternalRefNumber, contractorInvoiceNumber, createdDate, customer, customerContactHistory, customerContactPreferences, declinedReason, descriptionOfWorkQtyParts, descriptionOfWorkQtyPartsCovered, descriptionOfWorkQtyPartsNonCovered, dukeInvoiceNumber, equipmentDetails, equipmentOptions, groundingDetails, invoiceReceivedDate, isRushOrder, lastModifiedDate, multipleTechnicianRequired, orderCostTimeDetails, program, programAnnualCoverageLimit, programEntitlementBalance, repairType, rescheduledEndDate, rescheduledStartDate, resolutionDetails, returnTripRequired, scheduledEndDate, scheduledStartDate, serviceComments, serviceOrderBalance, serviceOrderId, soStatus, soType, woorSR, serviceAddress, soDbStatus, toggleFlag) {\n this.assignedOtherTechnician = assignedOtherTechnician;\n this.assignedTechnician = assignedTechnician; // user\n this.cancelledReason = cancelledReason; // cancelledReasonWsDTO\n this.contactName = contactName;\n this.contractorInternalRefNumber = contractorInternalRefNumber;\n this.contractorInvoiceNumber = contractorInvoiceNumber;\n this.createdDate = createdDate;\n this.customer = customer; // customerWsDTO \n this.customerContactHistory = customerContactHistory; // customerContactHistoryDTO\n this.customerContactPreferences = customerContactPreferences; // customerContactPreferencesWsDTO\n this.declinedReason = declinedReason; // declinedReasonWsDTO\n this.descriptionOfWorkQtyParts = descriptionOfWorkQtyParts;\n this.descriptionOfWorkQtyPartsCovered = descriptionOfWorkQtyPartsCovered;\n this.descriptionOfWorkQtyPartsNonCovered = descriptionOfWorkQtyPartsNonCovered;\n this.dukeInvoiceNumber = dukeInvoiceNumber;\n this.equipmentDetails = equipmentDetails; // equipmentDetailsWsDTO\n this.equipmentOptions = equipmentOptions; // equipmentOptionsWsDTO\n this.groundingDetails = groundingDetails; // groundingDetailsWsDTO\n this.invoiceReceivedDate = invoiceReceivedDate;\n this.isRushOrder = isRushOrder;\n this.lastModifiedDate = lastModifiedDate;\n this.multipleTechnicianRequired = multipleTechnicianRequired;\n this.orderCostTimeDetails = orderCostTimeDetails; // orderCostTimeDetailsWsDTO\n this.program = program.code.toUpperCase(); // codeNamePair\n this.programName = program.name; // codeNamePair\n this.programAnnualCoverageLimit = programAnnualCoverageLimit; // priceWsDTO\n this.programEntitlementBalance = programEntitlementBalance; // priceWsDTO\n this.repairType = repairType; // codeNamePair\n this.rescheduledEndDate = rescheduledEndDate;\n this.rescheduledStartDate = rescheduledStartDate;\n this.resolutionDetails = resolutionDetails; // resolutionDetailsWsDTO\n this.returnTripRequired = returnTripRequired;\n this.scheduledEndDate = scheduledEndDate;\n this.scheduledStartDate = scheduledStartDate;\n this.serviceComments = serviceComments;\n this.serviceOrderBalance = serviceOrderBalance; // priceWsDTO\n this.serviceOrderId = serviceOrderId;\n this.soStatus = soStatus.code.toUpperCase(); // codeNamePair\n this.soStatusName = soStatus.name; // codeNamePair\n this.soType = soType.code.toUpperCase(); // codeNamePair\n this.soTypeName = soType.name; // codeNamePair\n this.woorSR = woorSR.toUpperCase();\n this.serviceAddress = serviceAddress; // serviceAddressWsDTO\n this.soDbStatus = soDbStatus;\n this.toggleFlag = toggleFlag;\n }\n function groundingDetailsWsDTO(singlePointGrounding, groundingRepairsNeeded) {\n this.singlePointGrounding = singlePointGrounding;\n this.groundingRepairsNeeded = groundingRepairsNeeded;\n }\n ;\n function nameValuePair(name, value) {\n this.name = name;\n this.value = value;\n }\n ;\n function codeNamePair(code, name) {\n this.code = code;\n this.name = name;\n }\n ;\n function serviceRequestResolutionType(code, name, product) {\n this.code = code;\n this.name = name;\n this.product = product;\n }\n function workOrderResolutionType(code, name, woType) {\n this.code = code;\n this.name = name;\n this.woType = woType;\n }\n function serviceRequestRepairType(code, name, product) {\n this.code = code;\n this.name = name;\n this.product = product;\n }\n function priceWsDTO(value) {\n value = value;\n }\n ;\n function resolutionDetailsWsDTO(resolutionType, resolutionDate, resolutionDateDukeCalendar) {\n this.resolutionType = resolutionType;\n this.resolutionDate = resolutionDate;\n this.resolutionDateDukeCalendar = resolutionDateDukeCalendar;\n }\n ;\n function serviceAddressWsDTO(line1, line2, postalCode, county, city, state, subDivision, meterNumber, jurisdiction, countryIso, directions) {\n this.line1 = line1;\n this.line2 = line2;\n this.postalCode = postalCode;\n this.county = county;\n this.city = city;\n this.state = state;\n this.subDivision = subDivision;\n this.meterNumber = meterNumber;\n this.jurisdiction = jurisdiction;\n this.countryIso = countryIso;\n this.directions = directions;\n }\n ;\n function serviceOrder(assignedOtherTechnician, assignedTechnician, cancelledReason, contactName, contractorInternalRefNumber, contractorInvoiceNumber, createdDate, customer, customerContactHistory, customerContactPreferences, declinedReason, descriptionOfWorkQtyParts, descriptionOfWorkQtyPartsCovered, descriptionOfWorkQtyPartsNonCovered, dukeInvoiceNumber, equipmentDetails, equipmentOptions, groundingDetails, invoiceReceivedDate, isRushOrder, lastModifiedDate, multipleTechnicianRequired, orderCostTimeDetails, program, programAnnualCoverageLimit, programEntitlementBalance, repairType, rescheduledEndDate, rescheduledStartDate, resolutionDetails, returnTripRequired, scheduledEndDate, scheduledStartDate, serviceComments, serviceOrderBalance, serviceOrderId, soStatus, soType, woorSR, serviceAddress, soDbStatus) {\n this.assignedOtherTechnician = assignedOtherTechnician;\n this.assignedTechnician = assignedTechnician; // user\n this.cancelledReason = cancelledReason; // cancelledReasonWsDTO\n this.contactName = contactName;\n this.contractorInternalRefNumber = contractorInternalRefNumber;\n this.contractorInvoiceNumber = contractorInvoiceNumber;\n this.createdDate = createdDate;\n this.customer = customer; // customerWsDTO \n this.customerContactHistory = customerContactHistory; // customerContactHistoryDTO\n this.customerContactPreferences = customerContactPreferences; // customerContactPreferencesWsDTO\n this.declinedReason = declinedReason; // declinedReasonWsDTO\n this.descriptionOfWorkQtyParts = descriptionOfWorkQtyParts;\n this.descriptionOfWorkQtyPartsCovered = descriptionOfWorkQtyPartsCovered;\n this.descriptionOfWorkQtyPartsNonCovered = descriptionOfWorkQtyPartsNonCovered;\n this.dukeInvoiceNumber = dukeInvoiceNumber;\n this.equipmentDetails = equipmentDetails; // equipmentDetailsWsDTO\n this.equipmentOptions = equipmentOptions; // equipmentOptionsWsDTO\n this.groundingDetails = groundingDetails; // groundingDetailsWsDTO\n this.invoiceReceivedDate = invoiceReceivedDate;\n this.isRushOrder = isRushOrder;\n this.lastModifiedDate = lastModifiedDate;\n this.multipleTechnicianRequired = multipleTechnicianRequired;\n this.orderCostTimeDetails = orderCostTimeDetails; // orderCostTimeDetailsWsDTO\n this.program = program; // codeNamePair\n this.programName = program.name;\n this.programAnnualCoverageLimit = programAnnualCoverageLimit; // priceWsDTO\n this.programEntitlementBalance = programEntitlementBalance; // priceWsDTO\n this.repairType = repairType; // codeNamePair\n this.rescheduledEndDate = rescheduledEndDate;\n this.rescheduledStartDate = rescheduledStartDate;\n this.resolutionDetails = resolutionDetails; // resolutionDetailsWsDTO\n this.returnTripRequired = returnTripRequired;\n this.scheduledEndDate = scheduledEndDate;\n this.scheduledStartDate = scheduledStartDate;\n this.serviceComments = serviceComments;\n this.serviceOrderBalance = serviceOrderBalance; // priceWsDTO\n this.serviceOrderId = serviceOrderId;\n this.soStatus = soStatus; // codeNamePair\n this.soStatusName = soStatus.name;\n this.soType = soType; // codeNamePair\n this.soTypeName = soType.name;\n this.woorSR = woorSR;\n this.serviceAddress = serviceAddress; // serviceAddressWsDTO\n this.soDbStatus = soDbStatus;\n }\n function user(badgeNumber, cdpId, effectiveDate, name, phone, role, status, toggleFlag) {\n this.badgeNumber = badgeNumber;\n this.cdpId = cdpId;\n this.effectiveDate = effectiveDate;\n this.name = name;\n this.phone = phone;\n this.role = role;\n this.status = status;\n this.toggleFlag = toggleFlag;\n }\n ;\n function orderCostTimeDetailsWsDTO(entitlementLaborHours, entitlementLaborCost, laborCostNotCovered, partsCost, partsCostNotCovered, regularLaborHours, regularLaborCost, totalDueFromCustomer, totalLaborCost, totalLaborPartsCoveredCost, tripFee, laborCost, materialCost, totalOrderCost) {\n this.entitlementLaborHours = entitlementLaborHours;\n this.entitlementLaborCost = entitlementLaborCost; // PriceWsDTO,\n this.laborCostNotCovered = laborCostNotCovered; // PriceWsDTO,\n this.partsCost = partsCost; // PriceWsDTO,\n this.partsCostNotCovered = partsCostNotCovered; // PriceWsDTO,\n this.regularLaborHours = regularLaborHours;\n this.regularLaborCost = regularLaborCost; // PriceWsDTO,\n this.totalDueFromCustomer = totalDueFromCustomer; // PriceWsDTO,\n this.totalLaborCost = totalLaborCost; // PriceWsDTO,\n this.totalLaborPartsCoveredCost = totalLaborPartsCoveredCost; // PriceWsDTO,\n this.tripFee = tripFee; // PriceWsDTO,\n this.laborCost = laborCost; // PriceWsDTO,\n this.materialCost = materialCost; // PriceWsDTO,\n this.totalOrderCost = totalOrderCost; // PriceWsDTO,\n }\n ;\n return {\n FullAddendum: {\n allContractorAdmins: [],\n allContractorTechnicians: [],\n cancelledReasonTypes: [],\n declinedReasonTypes: [],\n srRepairTypes: [],\n srResolutionTypes: [],\n srStatusList: [],\n woResolutionTypes: [],\n woStatusList: []\n },\n cancelledReasonWsDTO: cancelledReasonWsDTO,\n cdpUserWsDTO: cdpUserWsDTO,\n codeNamePair: codeNamePair,\n customerContactHistoryDTO: customerContactHistoryDTO,\n customerContactPreferencesWsDTO: customerContactPreferencesWsDTO,\n customerWsDTO: customerWsDTO,\n declinedReasonWsDTO: declinedReasonWsDTO,\n deviceOptionsWsDTO: deviceOptionsWsDTO,\n equipmentDetailsWsDTO: equipmentDetailsWsDTO,\n equipmentOptionsWsDTO: equipmentOptionsWsDTO,\n flatServiceOrder: flatServiceOrder,\n groundingDetailsWsDTO: groundingDetailsWsDTO,\n nameValuePair: nameValuePair,\n orderCostTimeDetailsWsDTO: orderCostTimeDetailsWsDTO,\n priceWsDTO: priceWsDTO,\n resolutionDetailsWsDTO: resolutionDetailsWsDTO,\n serviceAddressWsDTO: serviceAddressWsDTO,\n serviceOrder: serviceOrder,\n serviceRequestRepairType: serviceRequestRepairType,\n serviceRequestResolutionType: serviceRequestResolutionType,\n user: user,\n workOrderResolutionType: workOrderResolutionType\n };\n});\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable new-cap */\n/* eslint-disable no-param-reassign */\n/* eslint-disable id-length */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable max-len */\napp.factory('FPDataModelsDTOService', function (FPAssetService, FPDataModelsConfigService, FPDateHelperService, FPGenericHelperService, sessionStorageService) {\n // Global Vars\n\n var isInValidString = function isInValidString(value) {\n if (!value || value === '') {\n return true;\n }\n return false;\n };\n var deserializeServiceOrder = function deserializeServiceOrder(jsonObj) {\n var mergeFromStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var serviceOrder = null;\n var sessionServiceOrder = sessionStorageService.get(FPAssetService.storageKeys.currentServiceOrder);\n if (mergeFromStorage) {\n serviceOrder = _.merge({}, sessionServiceOrder, jsonObj);\n } else {\n serviceOrder = jsonObj;\n }\n if (_typeof(jsonObj.soStatus) === 'object') {\n serviceOrder.soStatus = jsonObj.soStatus;\n } else {\n var soStatusName = FPAssetService.status[jsonObj.soStatus].value;\n serviceOrder.soStatus = {\n name: soStatusName,\n code: jsonObj.soStatus\n };\n }\n if (_typeof(jsonObj.soType) === 'object') {\n serviceOrder.soType = jsonObj.soType;\n } else {\n serviceOrder.soType = {\n name: jsonObj.soTypeName,\n code: jsonObj.soType\n };\n }\n if (_typeof(jsonObj.program) === 'object') {\n serviceOrder.program = jsonObj.program;\n } else {\n serviceOrder.program = {\n name: jsonObj.programName,\n code: jsonObj.program\n };\n }\n return serviceOrder;\n };\n var patchInstallation = function patchInstallation(jsonObj) {\n var definedObj = {\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\n assignedTechnician: {\n cdpId: jsonObj.assignedTechnician.cdpId\n },\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\n customerContactHistory: {\n noOfContactAttempts: jsonObj.customerContactHistory.noOfContactAttempts,\n firstAttemptDate: FPDateHelperService.concatDate(jsonObj.customerContactHistory.firstAttemptDateDukeCalendar, jsonObj.customerContactHistory.firstAttemptDateHour),\n contactComments: isInValidString(jsonObj.customerContactHistory.contactComments) ? null : jsonObj.customerContactHistory.contactComments,\n surveyReceivedByCustomer: jsonObj.customerContactHistory.surveyReceivedByCustomer\n },\n customerContactPreferences: {\n preferredEmailAddress: isInValidString(jsonObj.customerContactPreferences.preferredEmailAddress) ? null : jsonObj.customerContactPreferences.preferredEmailAddress,\n notifyCustomerWhenInRoute: jsonObj.customerContactPreferences.notifyCustomerWhenInRoute\n },\n descriptionOfWorkQtyParts: isInValidString(jsonObj.descriptionOfWorkQtyParts) ? null : jsonObj.descriptionOfWorkQtyParts,\n equipmentDetails: {\n deviceCode: isInValidString(jsonObj.equipmentDetails.deviceCode) ? null : jsonObj.equipmentDetails.deviceCode,\n deviceName: isInValidString(jsonObj.equipmentDetails.deviceName) ? null : jsonObj.equipmentDetails.deviceName,\n deviceSerialNumber: isInValidString(jsonObj.equipmentDetails.deviceSerialNumber) ? null : jsonObj.equipmentDetails.deviceSerialNumber\n },\n groundingDetails: {\n singlePointGrounding: jsonObj.groundingDetails.singlePointGrounding,\n groundingRepairsNeeded: jsonObj.groundingDetails.groundingRepairsNeeded\n },\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\n orderCostTimeDetails: {\n tripFee: {\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value)\n },\n laborCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value)\n },\n materialCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.materialCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value)\n }\n },\n resolutionDetails: {\n resolutionType: {\n code: jsonObj.resolutionDetails.resolutionType.code\n },\n resolutionDate: FPDateHelperService.concatDate(jsonObj.resolutionDetails.resolutionDateDukeCalendar, '00:00')\n },\n rescheduledEndDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledEndDateHour),\n rescheduledStartDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledStartDateHour),\n returnTripRequired: jsonObj.returnTripRequired,\n serviceAddress: {\n state: '',\n meterNumber: [{\n meterId: isInValidString(jsonObj.serviceAddress.meterNumber) ? null : jsonObj.serviceAddress.meterNumber[0].meterId\n }]\n },\n scheduledEndDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledEndDateHour),\n scheduledStartDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledStartDateHour),\n serviceOrderId: jsonObj.serviceOrderId,\n soStatus: {\n code: FPGenericHelperService.getStatusCode(jsonObj)\n }\n };\n return definedObj;\n };\n var patchInspectReplace = function patchInspectReplace(jsonObj) {\n var definedObj = {\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\n assignedTechnician: {\n cdpId: jsonObj.assignedTechnician.cdpId\n },\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\n customerContactHistory: {\n noOfContactAttempts: jsonObj.customerContactHistory.noOfContactAttempts,\n firstAttemptDate: FPDateHelperService.concatDate(jsonObj.customerContactHistory.firstAttemptDateDukeCalendar, jsonObj.customerContactHistory.firstAttemptDateHour),\n contactComments: jsonObj.customerContactHistory.contactComments === '' ? null : jsonObj.customerContactHistory.contactComments,\n surveyReceivedByCustomer: jsonObj.customerContactHistory.surveyReceivedByCustomer\n },\n customerContactPreferences: {\n preferredEmailAddress: jsonObj.customerContactPreferences.preferredEmailAddress === '' ? null : jsonObj.customerContactPreferences.preferredEmailAddress,\n notifyCustomerWhenInRoute: jsonObj.customerContactPreferences.notifyCustomerWhenInRoute\n },\n descriptionOfWorkQtyParts: jsonObj.descriptionOfWorkQtyParts === '' ? null : jsonObj.descriptionOfWorkQtyParts,\n equipmentDetails: {\n deviceName: jsonObj.equipmentDetails.deviceName === '' ? null : jsonObj.equipmentDetails.deviceName,\n deviceSerialNumber: jsonObj.equipmentDetails.deviceSerialNumber === '' ? null : jsonObj.equipmentDetails.deviceSerialNumber,\n deviceOperational: jsonObj.equipmentDetails.deviceOperational,\n replacementNeeded: jsonObj.equipmentDetails.replacementNeeded,\n replacementDeviceName: jsonObj.equipmentDetails.replacementDeviceName === '' ? null : jsonObj.equipmentDetails.replacementDeviceName,\n replacementDeviceSerialNo: jsonObj.equipmentDetails.replacementDeviceSerialNo === '' ? null : jsonObj.equipmentDetails.replacementDeviceSerialNo\n },\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\n orderCostTimeDetails: {\n tripFee: {\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value)\n },\n laborCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value)\n },\n materialCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.materialCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value)\n }\n },\n resolutionDetails: {\n resolutionType: {\n code: jsonObj.resolutionDetails.resolutionType.code\n },\n resolutionDate: FPDateHelperService.concatDate(jsonObj.resolutionDetails.resolutionDateDukeCalendar, '00:00')\n },\n rescheduledEndDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledEndDateHour),\n rescheduledStartDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledStartDateHour),\n returnTripRequired: jsonObj.returnTripRequired,\n scheduledEndDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledEndDateHour),\n scheduledStartDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledStartDateHour),\n serviceOrderId: jsonObj.serviceOrderId,\n soStatus: {\n code: FPGenericHelperService.getStatusCode(jsonObj)\n }\n };\n return definedObj;\n };\n var patchRemoval = function patchRemoval(jsonObj) {\n var definedObj = {\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\n assignedTechnician: {\n cdpId: jsonObj.assignedTechnician.cdpId\n },\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\n customerContactHistory: {\n noOfContactAttempts: jsonObj.customerContactHistory.noOfContactAttempts,\n firstAttemptDate: FPDateHelperService.concatDate(jsonObj.customerContactHistory.firstAttemptDateDukeCalendar, jsonObj.customerContactHistory.firstAttemptDateHour),\n contactComments: isInValidString(jsonObj.customerContactHistory.contactComments) ? null : jsonObj.customerContactHistory.contactComments,\n surveyReceivedByCustomer: jsonObj.customerContactHistory.surveyReceivedByCustomer\n },\n customerContactPreferences: {\n preferredEmailAddress: isInValidString(jsonObj.customerContactPreferences.preferredEmailAddress) ? null : jsonObj.customerContactPreferences.preferredEmailAddress,\n notifyCustomerWhenInRoute: jsonObj.customerContactPreferences.notifyCustomerWhenInRoute\n },\n descriptionOfWorkQtyParts: isInValidString(jsonObj.descriptionOfWorkQtyParts) ? null : jsonObj.descriptionOfWorkQtyParts,\n equipmentDetails: {\n deviceName: isInValidString(jsonObj.equipmentDetails.deviceName) ? null : jsonObj.equipmentDetails.deviceName,\n deviceSerialNumber: isInValidString(jsonObj.equipmentDetails.deviceSerialNumber) ? null : jsonObj.equipmentDetails.deviceSerialNumber,\n deviceOperational: jsonObj.equipmentDetails.deviceOperational\n },\n groundingDetails: {\n singlePointGrounding: jsonObj.groundingDetails.singlePointGrounding,\n groundingRepairsNeeded: jsonObj.groundingDetails.groundingRepairsNeeded\n },\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\n orderCostTimeDetails: {\n tripFee: {\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value)\n },\n laborCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value)\n },\n materialCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.materialCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value)\n }\n },\n resolutionDetails: {\n resolutionType: {\n code: jsonObj.resolutionDetails.resolutionType.code\n },\n resolutionDate: FPDateHelperService.concatDate(jsonObj.resolutionDetails.resolutionDateDukeCalendar, '00:00')\n },\n rescheduledEndDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledEndDateHour),\n rescheduledStartDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledStartDateHour),\n returnTripRequired: jsonObj.returnTripRequired,\n scheduledEndDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledEndDateHour),\n scheduledStartDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledStartDateHour),\n serviceOrderId: jsonObj.serviceOrderId,\n soStatus: {\n code: FPGenericHelperService.getStatusCode(jsonObj)\n }\n };\n return definedObj;\n };\n var patchServiceRequest = function patchServiceRequest(jsonObj) {\n var definedObj = {\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\n assignedTechnician: {\n cdpId: jsonObj.assignedTechnician.cdpId\n },\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\n customerContactHistory: {\n noOfContactAttempts: jsonObj.customerContactHistory.noOfContactAttempts,\n firstAttemptDate: FPDateHelperService.concatDate(jsonObj.customerContactHistory.firstAttemptDateDukeCalendar, jsonObj.customerContactHistory.firstAttemptDateHour),\n contactComments: isInValidString(jsonObj.customerContactHistory.contactComments) ? null : jsonObj.customerContactHistory.contactComments,\n surveyReceivedByCustomer: jsonObj.customerContactHistory.surveyReceivedByCustomer\n },\n customerContactPreferences: {\n preferredEmailAddress: isInValidString(jsonObj.customerContactPreferences.preferredEmailAddress) ? null : jsonObj.customerContactPreferences.preferredEmailAddress,\n notifyCustomerWhenInRoute: jsonObj.customerContactPreferences.notifyCustomerWhenInRoute\n },\n descriptionOfWorkQtyPartsCovered: isInValidString(jsonObj.descriptionOfWorkQtyPartsCovered) ? null : jsonObj.descriptionOfWorkQtyPartsCovered,\n descriptionOfWorkQtyPartsNonCovered: isInValidString(jsonObj.descriptionOfWorkQtyPartsNonCovered) ? null : jsonObj.descriptionOfWorkQtyPartsNonCovered,\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\n orderCostTimeDetails: {\n tripFee: {\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value)\n },\n regularLaborCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.regularLaborCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.regularLaborCost.value)\n },\n regularLaborHours: isInValidString(jsonObj.orderCostTimeDetails.regularLaborHours) ? 0 : parseFloat(jsonObj.orderCostTimeDetails.regularLaborHours),\n entitlementLaborHours: isInValidString(jsonObj.orderCostTimeDetails.entitlementLaborHours) ? 0 : parseFloat(jsonObj.orderCostTimeDetails.entitlementLaborHours),\n entitlementLaborCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.entitlementLaborCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.entitlementLaborCost.value)\n },\n partsCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.partsCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.partsCost.value)\n },\n totalLaborPartsCoveredCost: {\n value: isInValidString(jsonObj.orderCostTimeDetails.totalLaborPartsCoveredCost.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.totalLaborPartsCoveredCost.value)\n },\n laborCostNotCovered: {\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCostNotCovered.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.laborCostNotCovered.value)\n },\n partsCostNotCovered: {\n value: isInValidString(jsonObj.orderCostTimeDetails.partsCostNotCovered.value) ? 0.0 : parseFloat(jsonObj.orderCostTimeDetails.partsCostNotCovered.value)\n }\n },\n repairType: {\n code: jsonObj.repairType.code\n },\n resolutionDetails: {\n resolutionType: {\n code: jsonObj.resolutionDetails.resolutionType.code\n },\n resolutionDate: FPDateHelperService.concatDate(jsonObj.resolutionDetails.resolutionDateDukeCalendar, '00:00')\n },\n rescheduledEndDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledEndDateHour),\n rescheduledStartDate: FPDateHelperService.concatDate(jsonObj.rescheduledStartDateDukeCalendar, jsonObj.rescheduledStartDateHour),\n returnTripRequired: jsonObj.returnTripRequired,\n scheduledEndDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledEndDateHour),\n scheduledStartDate: FPDateHelperService.concatDate(jsonObj.scheduledStartDateDukeCalendar, jsonObj.scheduledStartDateHour),\n serviceOrderId: jsonObj.serviceOrderId,\n soStatus: {\n code: FPGenericHelperService.getStatusCode(jsonObj)\n }\n };\n return definedObj;\n };\n var patchWrapper = function patchWrapper(collection) {\n var patchRequest = {\n serviceOrders: collection\n };\n return patchRequest;\n };\n var transformServiceOrder = function transformServiceOrder(so) {\n if (_typeof(so.assignedTechnician) !== 'object' || !so.assignedTechnician.hasOwnProperty('name')) {\n so.assignedTechnician = new FPDataModelsConfigService.user('', '', '', '', '', '', '', '');\n }\n if (_typeof(so.cancelledReason) !== 'object' || !so.cancelledReason.hasOwnProperty('cancelledReasonType')) {\n var cancelledReasonType = new FPDataModelsConfigService.codeNamePair('', '');\n so.cancelledReason = new FPDataModelsConfigService.cancelledReasonWsDTO(cancelledReasonType, '');\n }\n if (_typeof(so.customer) !== 'object' || !so.customer.hasOwnProperty('name')) {\n so.customer = new FPDataModelsConfigService.customerWsDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.customerContactHistory) !== 'object' || !so.customerContactHistory.hasOwnProperty('firstAttemptDate')) {\n so.customerContactHistory = new FPDataModelsConfigService.customerContactHistoryDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.customerContactPreferences) !== 'object' || !so.customerContactPreferences.hasOwnProperty('bestTimeToCall')) {\n so.customerContactPreferences = new FPDataModelsConfigService.customerContactPreferencesWsDTO('', '', '', '');\n }\n if (_typeof(so.declinedReason) !== 'object' || !so.declinedReason.hasOwnProperty('declineReasonType')) {\n var declinedReasonType = new FPDataModelsConfigService.codeNamePair('', '');\n so.declinedReason = new FPDataModelsConfigService.declinedReasonWsDTO(declinedReasonType, '');\n }\n if (_typeof(so.equipmentDetails) !== 'object' || !so.equipmentDetails.hasOwnProperty('deviceCode')) {\n so.equipmentDetails = new FPDataModelsConfigService.equipmentDetailsWsDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.equipmentOptions) !== 'object' || !so.equipmentOptions.hasOwnProperty('options')) {\n var options = [];\n var deviceOptions = new FPDataModelsConfigService.deviceOptionsWsDTO('', '');\n options.push(deviceOptions);\n so.equipmentOptions = new FPDataModelsConfigService.equipmentOptionsWsDTO(options);\n }\n if (_typeof(so.groundingDetails) !== 'object' || !so.groundingDetails.hasOwnProperty('groundingRepairsNeeded')) {\n so.groundingDetails = new FPDataModelsConfigService.groundingDetailsWsDTO('', '');\n }\n if (so.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST) {\n if (_typeof(so.orderCostTimeDetails) !== 'object' || !so.orderCostTimeDetails.hasOwnProperty('partsCost')) {\n var entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var partsCost = new FPDataModelsConfigService.priceWsDTO(0);\n var partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(0);\n var totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(0);\n var tripFee = new FPDataModelsConfigService.priceWsDTO(0);\n var laborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var materialCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(0, entitlementLaborCost, laborCostNotCovered, partsCost, partsCostNotCovered, 0, regularLaborCost, totalDueFromCustomer, totalLaborCost, totalLaborPartsCoveredCost, tripFee, laborCost, materialCost, totalOrderCost);\n }\n } else if (_typeof(so.orderCostTimeDetails) !== 'object' || !so.orderCostTimeDetails.hasOwnProperty('materialCost')) {\n var _entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var _partsCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var _regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _tripFee = new FPDataModelsConfigService.priceWsDTO(0);\n var _laborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _materialCost = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(0, _entitlementLaborCost, _laborCostNotCovered, _partsCost, _partsCostNotCovered, 0, _regularLaborCost, _totalDueFromCustomer, _totalLaborCost, _totalLaborPartsCoveredCost, _tripFee, _laborCost, _materialCost, _totalOrderCost);\n }\n if (_typeof(so.program) !== 'object' || !so.program.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.program = new FPDataModelsConfigService.codeNamePair(so.program, so.programName);\n }\n if (_typeof(so.programAnnualCoverageLimit) !== 'object' || !so.programAnnualCoverageLimit.hasOwnProperty('value')) {\n so.programAnnualCoverageLimit = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.programEntitlementBalance) !== 'object' || !so.programEntitlementBalance.hasOwnProperty('value')) {\n so.programEntitlementBalance = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.repairType) !== 'object' || !so.repairType.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.repairType = new FPDataModelsConfigService.codeNamePair('', '');\n }\n if (_typeof(so.resolutionDetails) !== 'object' || !so.resolutionDetails.hasOwnProperty('resolutionType')) {\n var resolutionType = new FPDataModelsConfigService.codeNamePair('', '');\n so.resolutionDetails = new FPDataModelsConfigService.resolutionDetailsWsDTO(resolutionType, '', '');\n }\n if (_typeof(so.serviceAddress) !== 'object' || !so.serviceAddress.hasOwnProperty('city')) {\n so.serviceAddress = new FPDataModelsConfigService.serviceAddressWsDTO('', '', '', '', '', '', '', '', '', '', '');\n }\n if (_typeof(so.serviceOrderBalance) !== 'object' || !so.serviceOrderBalance.hasOwnProperty('value')) {\n so.serviceOrderBalance = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.soStatus) !== 'object' || !so.soStatus.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.soStatus = new FPDataModelsConfigService.codeNamePair(so.soStatus, so.soStatusName);\n }\n if (_typeof(so.soType) !== 'object' || !so.soType.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.soType = new FPDataModelsConfigService.codeNamePair(so.soType, so.soTypeName);\n }\n var newServiceOrder = new FPDataModelsConfigService.serviceOrder(so.assignedOtherTechnician, so.assignedTechnician, so.cancelledReason, so.contactName, so.contractorInternalRefNumber, so.contractorInvoiceNumber, so.createdDate, so.customer, so.customerContactHistory, so.customerContactPreferences, so.declinedReason, so.descriptionOfWorkQtyParts, so.descriptionOfWorkQtyPartsCovered, so.descriptionOfWorkQtyPartsNonCovered, so.dukeInvoiceNumber, so.equipmentDetails, so.equipmentOptions, so.groundingDetails, so.invoiceReceivedDate, so.isRushOrder, so.lastModifiedDate, so.multipleTechnicianRequired, so.orderCostTimeDetails, so.program, so.programAnnualCoverageLimit, so.programEntitlementBalance, so.repairType, so.rescheduledEndDate, so.rescheduledStartDate, so.resolutionDetails, so.returnTripRequired, so.scheduledEndDate, so.scheduledStartDate, so.serviceComments, so.serviceOrderBalance, so.serviceOrderId, so.soStatus, so.soType, so.woorSR, so.serviceAddress, so.soDbStatus, so.toggleFlag);\n return newServiceOrder;\n };\n var transformServiceOrders = function transformServiceOrders(serviceOrders, toggleFlag) {\n var dataSet = [];\n var soToggleFlag = sessionStorageService.get(toggleFlag);\n\n // const allUsers = sessionStorageService.get(FPAssetService.storageKeys.widgetsData.users);\n _.forEach(serviceOrders, function (so) {\n if (_typeof(so.assignedTechnician) !== 'object' || !so.assignedTechnician.hasOwnProperty('name')) {\n so.assignedTechnician = new FPDataModelsConfigService.user('', '', '', '', '', '', '', '');\n }\n if (_typeof(so.cancelledReason) !== 'object' || !so.cancelledReason.hasOwnProperty('cancelledReasonType')) {\n var cancelledReasonType = new FPDataModelsConfigService.codeNamePair('', '');\n so.cancelledReason = new FPDataModelsConfigService.cancelledReasonWsDTO(cancelledReasonType, '');\n }\n if (_typeof(so.customer) !== 'object' || !so.customer.hasOwnProperty('name')) {\n so.customer = new FPDataModelsConfigService.customerWsDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.customerContactHistory) !== 'object' || !so.customerContactHistory.hasOwnProperty('firstAttemptDate')) {\n so.customerContactHistory = new FPDataModelsConfigService.customerContactHistoryDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.customerContactPreferences) !== 'object' || !so.customerContactPreferences.hasOwnProperty('bestTimeToCall')) {\n so.customerContactPreferences = new FPDataModelsConfigService.customerContactPreferencesWsDTO('', '', '', '');\n }\n if (_typeof(so.declinedReason) !== 'object' || !so.declinedReason.hasOwnProperty('declineReasonType')) {\n var declinedReasonType = new FPDataModelsConfigService.codeNamePair('', '');\n so.declinedReason = new FPDataModelsConfigService.declinedReasonWsDTO(declinedReasonType, '');\n }\n if (_typeof(so.equipmentDetails) !== 'object' || !so.equipmentDetails.hasOwnProperty('deviceCode')) {\n so.equipmentDetails = new FPDataModelsConfigService.equipmentDetailsWsDTO('', '', '', '', '', '', '');\n }\n if (_typeof(so.equipmentOptions) !== 'object' || !so.equipmentOptions.hasOwnProperty('options')) {\n var options = [];\n var deviceOptions = new FPDataModelsConfigService.deviceOptionsWsDTO('', '');\n options.push(deviceOptions);\n so.equipmentOptions = new FPDataModelsConfigService.equipmentOptionsWsDTO(options);\n }\n if (_typeof(so.groundingDetails) !== 'object' || !so.groundingDetails.hasOwnProperty('groundingRepairsNeeded')) {\n so.groundingDetails = new FPDataModelsConfigService.groundingDetailsWsDTO('', '');\n }\n if (so.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST) {\n if (_typeof(so.orderCostTimeDetails) !== 'object' || !so.orderCostTimeDetails.hasOwnProperty('partsCost')) {\n var entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var partsCost = new FPDataModelsConfigService.priceWsDTO(0);\n var partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\n var regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(0);\n var totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(0);\n var tripFee = new FPDataModelsConfigService.priceWsDTO(0);\n var laborCost = new FPDataModelsConfigService.priceWsDTO(0);\n var materialCost = new FPDataModelsConfigService.priceWsDTO(0);\n var totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(0, entitlementLaborCost, laborCostNotCovered, partsCost, partsCostNotCovered, 0, regularLaborCost, totalDueFromCustomer, totalLaborCost, totalLaborPartsCoveredCost, tripFee, laborCost, materialCost, totalOrderCost);\n }\n } else if (_typeof(so.orderCostTimeDetails) !== 'object' || !so.orderCostTimeDetails.hasOwnProperty('materialCost')) {\n var _entitlementLaborCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _laborCostNotCovered2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _partsCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _partsCostNotCovered2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _regularLaborCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalDueFromCustomer2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalLaborCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalLaborPartsCoveredCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _tripFee2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _laborCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _materialCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n var _totalOrderCost2 = new FPDataModelsConfigService.priceWsDTO(0);\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(0, _entitlementLaborCost2, _laborCostNotCovered2, _partsCost2, _partsCostNotCovered2, 0, _regularLaborCost2, _totalDueFromCustomer2, _totalLaborCost2, _totalLaborPartsCoveredCost2, _tripFee2, _laborCost2, _materialCost2, _totalOrderCost2);\n }\n if (_typeof(so.program) !== 'object' || !so.program.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.program = new FPDataModelsConfigService.codeNamePair('', '');\n }\n if (_typeof(so.programAnnualCoverageLimit) !== 'object' || !so.programAnnualCoverageLimit.hasOwnProperty('value')) {\n so.programAnnualCoverageLimit = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.programEntitlementBalance) !== 'object' || !so.programEntitlementBalance.hasOwnProperty('value')) {\n so.programEntitlementBalance = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.repairType) !== 'object' || !so.repairType.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.repairType = new FPDataModelsConfigService.codeNamePair('', '');\n }\n if (_typeof(so.resolutionDetails) !== 'object' || !so.resolutionDetails.hasOwnProperty('resolutionType')) {\n var resolutionType = new FPDataModelsConfigService.codeNamePair('', '');\n so.resolutionDetails = new FPDataModelsConfigService.resolutionDetailsWsDTO(resolutionType, '', '');\n }\n if (_typeof(so.serviceAddress) !== 'object' || !so.serviceAddress.hasOwnProperty('city')) {\n so.serviceAddress = new FPDataModelsConfigService.serviceAddressWsDTO('', '', '', '', '', '', '', '', '', '', '');\n }\n if (_typeof(so.serviceOrderBalance) !== 'object' || !so.serviceOrderBalance.hasOwnProperty('value')) {\n so.serviceOrderBalance = new FPDataModelsConfigService.priceWsDTO(0);\n }\n if (_typeof(so.soStatus) !== 'object' || !so.soStatus.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.soStatus = new FPDataModelsConfigService.codeNamePair('', '');\n }\n if (_typeof(so.soType) !== 'object' || !so.soType.hasOwnProperty('name') || !so.program.hasOwnProperty('code')) {\n so.soType = new FPDataModelsConfigService.codeNamePair('', '');\n }\n var newServiceOrder = new FPDataModelsConfigService.flatServiceOrder(so.assignedOtherTechnician, so.assignedTechnician, so.cancelledReason, so.contactName, so.contractorInternalRefNumber, so.contractorInvoiceNumber, so.createdDate, so.customer, so.customerContactHistory, so.customerContactPreferences, so.declinedReason, so.descriptionOfWorkQtyParts, so.descriptionOfWorkQtyPartsCovered, so.descriptionOfWorkQtyPartsNonCovered, so.dukeInvoiceNumber, so.equipmentDetails, so.equipmentOptions, so.groundingDetails, so.invoiceReceivedDate, so.isRushOrder, so.lastModifiedDate, so.multipleTechnicianRequired, so.orderCostTimeDetails, so.program, so.programAnnualCoverageLimit, so.programEntitlementBalance, so.repairType, so.rescheduledEndDate, so.rescheduledStartDate, so.resolutionDetails, so.returnTripRequired, so.scheduledEndDate, so.scheduledStartDate, so.serviceComments, so.serviceOrderBalance, so.serviceOrderId, so.soStatus, so.soType, so.woorSR, so.serviceAddress, so.soDbStatus, soToggleFlag);\n dataSet.push(newServiceOrder);\n });\n return dataSet;\n };\n var validateFullAddendum = function validateFullAddendum(jsonObj) {\n var definedObj = FPDataModelsConfigService.FullAddendum;\n return _.merge({}, definedObj, jsonObj);\n };\n return {\n deserializeServiceOrder: deserializeServiceOrder,\n patchInstallation: patchInstallation,\n patchInspectReplace: patchInspectReplace,\n patchRemoval: patchRemoval,\n patchServiceRequest: patchServiceRequest,\n patchWrapper: patchWrapper,\n transformServiceOrder: transformServiceOrder,\n transformServiceOrders: transformServiceOrders,\n validateFullAddendum: validateFullAddendum\n };\n});\n/* eslint-disable max-len */\n/* eslint-disable id-length */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-undef */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-use-before-define */\napp.factory('FPDateHelperService', function () {\n var addDays = function addDays(date, days) {\n var newDate = new Date(date);\n newDate.setDate(newDate.getDate() + days);\n return getDateFromFullDate(new Date(newDate));\n };\n var addZeroDate = function addZeroDate(number) {\n return number < 10 ? \"0\".concat(number) : number;\n };\n var concatDate = function concatDate(date, time) {\n if (date && time) {\n // Returns YYYY-MM-DDTHH:MM:SS-05:00\n var splittedDate = date.replace(/\\s/g, '').split('/');\n var splittedTime = time.replace(/\\s/g, '').split(':');\n var year = splittedDate[2];\n var month = splittedDate[0];\n var date = splittedDate[1];\n var hour = splittedTime[0];\n var minutes = splittedTime[1];\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minutes, \":00-05:00\");\n }\n return null;\n };\n var conversionToStandardTime = function conversionToStandardTime(value) {\n if (!value) {\n return null;\n }\n return moment(value, 'HH:mm').format('hh:mm a');\n };\n var dateConversion = function dateConversion(value) {\n var newValue = \"\".concat(value, \":00\");\n return newValue;\n };\n var getDateFromFullDate = function getDateFromFullDate(date, defaultValueToReturn) {\n if (!date) {\n if (!defaultValueToReturn) {\n return null;\n }\n return defaultValueToReturn;\n }\n\n // Returns MM/DD/YYYY format date\n var formattedDate = new Date(date);\n formattedDate.setHours(formattedDate.getHours() + (formattedDate.getTimezoneOffset() / 60 - 5));\n var dd = formattedDate.getDate();\n var mm = formattedDate.getMonth() + 1;\n var yyyy = formattedDate.getFullYear();\n dd = addZeroDate(dd);\n mm = addZeroDate(mm);\n return \"\".concat(mm, \"/\").concat(dd, \"/\").concat(yyyy);\n };\n var getHourFromFullDate = function getHourFromFullDate(date, defaultValueToReturn) {\n if (!date) {\n if (!defaultValueToReturn) {\n return null;\n }\n return defaultValueToReturn;\n }\n // Returns HH:MM format hour\n var formattedDate = new Date(date);\n formattedDate.setHours(formattedDate.getHours() + (formattedDate.getTimezoneOffset() / 60 - 5));\n var HH = formattedDate.getHours();\n var MM = formattedDate.getMinutes();\n HH = addZeroDate(HH);\n MM = addZeroDate(MM);\n return \"\".concat(HH, \":\").concat(MM);\n };\n return {\n addDays: addDays,\n addZeroDate: addZeroDate,\n concatDate: concatDate,\n conversionToStandardTime: conversionToStandardTime,\n dateConversion: dateConversion,\n getDateFromFullDate: getDateFromFullDate,\n getHourFromFullDate: getHourFromFullDate\n };\n});\napp.factory('FPGenericHelperService', function (FPAssetService) {\n // Global Vars\n var convertArraytoDukeDropDownValues = function convertArraytoDukeDropDownValues(arrayList) {\n var newSet = _.map(arrayList, function (item) {\n return {\n value: item,\n text: item\n };\n });\n return newSet;\n };\n var convertArrayToString = function convertArrayToString(arrayList, property) {\n if (arrayList) {\n var stringArray = [];\n var stringList = null;\n _.forEach(arrayList, function (item) {\n stringArray.push(item[property]);\n });\n stringList = stringArray.join(',');\n return stringList || null;\n }\n return null;\n };\n var createDropdownList = function createDropdownList(arraySource) {\n var valueKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value';\n var textKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'text';\n var dropdownList = [];\n if (arraySource.length > 0) {\n arraySource.forEach(function (element) {\n dropdownList.push({\n value: element[valueKey],\n text: element[textKey]\n });\n });\n } else {\n dropdownList.push({\n value: '',\n text: ''\n });\n }\n return dropdownList;\n };\n var formatCurrency = function formatCurrency(value) {\n if (value || value === 0) {\n var valueAsString = String(value);\n var valueAsNumber = Number(valueAsString);\n var fixedValue = valueAsNumber.toFixed(2);\n return fixedValue;\n }\n return '0.00';\n };\n var generateIds = function generateIds(list) {\n var listWithIds = list.map(function (item, index) {\n var newItem = item;\n newItem.id = index;\n return newItem;\n });\n return listWithIds;\n };\n var generateRandomNumbers = function generateRandomNumbers(size) {\n var add = 1;\n var max = 12 - add;\n if (size > max) {\n return generate(max) + generate(size - max);\n }\n max = Math.pow(10, size + add);\n var min = max / 10;\n var number = Math.floor(Math.random() * (max - min + 1)) + min;\n return \"\".concat(number).substring(add);\n };\n var getStatusObject = function getStatusObject(obj) {\n var filteredObj = Object.prototype.hasOwnProperty.call(obj.soStatus, 'code') ? _.find(FPAssetService.serviceOrderStatus, function (order) {\n return order.code.toUpperCase() === obj.soStatus.code.toUpperCase();\n }) : _.find(FPAssetService.serviceOrderStatus, function (order) {\n return order.code.toUpperCase() === obj.soStatus.toUpperCase();\n });\n return filteredObj || null;\n };\n var getStatusCode = function getStatusCode(obj) {\n var filteredObj = Object.prototype.hasOwnProperty.call(obj.soStatus, 'code') ? _.find(FPAssetService.serviceOrderStatus, function (order) {\n return order.code.toUpperCase() === obj.soStatus.code.toUpperCase();\n }) : _.find(FPAssetService.serviceOrderStatus, function (order) {\n return order.code.toUpperCase() === obj.soStatus.toUpperCase();\n });\n return filteredObj ? filteredObj.code : null;\n };\n var intersectionObjects2 = function intersectionObjects2(a, b, areEqualFunction) {\n var results = [];\n var _loop = function _loop() {\n var aElement = a[i];\n var existsInB = _.some(b, function (bElement) {\n return areEqualFunction(bElement, aElement);\n });\n if (existsInB) {\n results.push(aElement);\n }\n };\n for (var i = 0; i < a.length; i++) {\n _loop();\n }\n return results;\n };\n var intersectionObjects = function intersectionObjects() {\n var results = arguments[0];\n var lastArgument = arguments[arguments.length - 1];\n var arrayCount = arguments.length;\n var areEqualFunction = _.isEqual;\n if (typeof lastArgument === 'function') {\n areEqualFunction = lastArgument;\n arrayCount--;\n }\n for (var i = 1; i < arrayCount; i++) {\n var array = arguments[i];\n results = intersectionObjects2(results, array, areEqualFunction);\n if (results.length === 0) break;\n }\n return results;\n };\n var setSelectedProp = function setSelectedProp(list, propToSearch, propValueToSearch) {\n var newList = angular.copy(list);\n var itemIndex = _.findIndex(newList, function (props) {\n return props[propToSearch] === propValueToSearch;\n });\n if (itemIndex != -1) {\n newList[itemIndex].selected = true;\n return newList;\n }\n return newList;\n };\n var telFormat = function telFormat(tel) {\n var regexObj = /^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;\n if (regexObj.test(tel)) {\n var parts = tel.match(regexObj);\n var phone = '';\n if (parts[1]) {\n phone += \"(\".concat(parts[1], \") \");\n }\n phone += \"\".concat(parts[2], \"-\").concat(parts[3]);\n return phone;\n }\n // invalid phone number\n return tel;\n };\n var printValueFromArrayPositionKey = function printValueFromArrayPositionKey(key, array, position) {\n if (!Array.isArray(array)) {\n return '';\n }\n return array[position] ? array[position][key] : '';\n };\n var printValueFromObjectKey = function printValueFromObjectKey(key, obj) {\n if (obj === Object(obj) && Object.prototype.toString.call(obj) !== '[object Array]') {\n return obj[key] ? obj[key] : '';\n }\n return '';\n };\n return {\n convertArraytoDukeDropDownValues: convertArraytoDukeDropDownValues,\n convertArrayToString: convertArrayToString,\n createDropdownList: createDropdownList,\n formatCurrency: formatCurrency,\n generateIds: generateIds,\n generateRandomNumbers: generateRandomNumbers,\n getStatusObject: getStatusObject,\n getStatusCode: getStatusCode,\n intersectionObjects: intersectionObjects,\n setSelectedProp: setSelectedProp,\n telFormat: telFormat,\n printValueFromArrayPositionKey: printValueFromArrayPositionKey,\n printValueFromObjectKey: printValueFromObjectKey\n };\n});\napp.factory('FPGroupingPagerService', function () {\n // service definition\n var _pager = {\n totalRows: 0,\n currentPage: 0,\n pageSizeByRows: 0,\n totalPages: 0,\n startPage: 0,\n endPage: 0,\n startRow: 0,\n endRow: 0,\n pages: 0\n };\n\n // service implementation\n var _pagerObj = function _pagerObj(totalRows, currentPage, pageSizeByRows) {\n // default to first page\n _pager.currentPage = currentPage || 1;\n\n // default page size is 12\n _pager.pageSizeByRows = pageSizeByRows || 4;\n\n //default total items\n _pager.totalRows = totalRows;\n\n // calculate total pages\n _pager.totalPages = Math.ceil(_pager.totalRows / _pager.pageSizeByRows);\n if (_pager.totalPages <= 10) {\n // less than 10 total pages so show all\n _pager.startPage = 1;\n _pager.endPage = _pager.totalPages;\n } else {\n // more than 10 total pages so calculate start and end pages\n if (_pager.currentPage <= 6) {\n _pager.startPage = 1;\n _pager.endPage = 10;\n } else if (_pager.currentPage + 4 >= _pager.totalPages) {\n _pager.startPage = _pager.totalPages - 9;\n _pager.endPage = _pager.totalPages;\n } else {\n _pager.startPage = _pager.currentPage - 5;\n _pager.endPage = _pager.currentPage + 4;\n }\n }\n\n // calculate start and end item indexes\n _pager.startRow = (_pager.currentPage - 1) * _pager.pageSizeByRows;\n _pager.endRow = Math.min(_pager.startRow + _pager.pageSizeByRows - 1, _pager.totalRows - 1);\n\n // create an array of pages to ng-repeat in the pager control\n _pager.pages = _.range(_pager.startPage, _pager.endPage + 1);\n\n // return object with all pager properties required by the view\n return _pager;\n };\n var setPager = function setPager(pager) {\n _pager = pager;\n };\n var getPager = function getPager() {\n return _pager;\n };\n var createPager = function createPager(_totalRows, _currentPage, _pageSizeByRows) {\n var result = _pagerObj(_totalRows, _currentPage, _pageSizeByRows);\n return result;\n };\n return {\n createPager: createPager,\n setPager: setPager,\n getPager: getPager\n };\n});\n/* eslint-disable no-magic-numbers */\n/* eslint-disable consistent-return */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable id-length */\n\napp.factory('FPIndexedDbDataService', function ($q, $log, assetService, FPAssetService, sessionStorageService) {\n var _db = null;\n var ensureDb = function ensureDb() {\n if (_db === null) {\n _db = new Dexie('ServiceOrdersDb');\n _db.version(1).stores({\n companyOverview: 'name,jurisdiction,fieldCoordinator,email,contactNumber,billingAddress,*billingAddress.id',\n users: 'cdpId,badgeNumber,effectiveDate,email,name,phone,role,status',\n acceptedOrders: '&serviceOrderId,assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,*contractorInvoiceNumber,createdDate,customer,*customer.name,customerContactHistory,customerContactPreferences,declinedReason,dukeInvoiceNumber,isRushOrder,multipleTechnicianRequired,orderCostTimeDetails,*program,programName,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduleStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceAddress,*serviceAddress.postalCode,serviceComments,serviceOrderBalance,*soStatus,soStatusName,*soType,soTypeName,woorSR,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,equipmentDetails,groundingDetails,toggleFlag',\n invoiceOrders: '&serviceOrderId,assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,*contractorInvoiceNumber,createdDate,customer,*customer.name,customerContactHistory,customerContactPreferences,declinedReason,dukeInvoiceNumber,isRushOrder,multipleTechnicianRequired,orderCostTimeDetails,*program,programName,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduleStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceAddress,*serviceAddress.postalCode,serviceComments,serviceOrderBalance,*soStatus,soStatusName,*soType,soTypeName,woorSR,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,equipmentDetails,groundingDetails,toggleFlag',\n cancelledReasonTypes: 'code,name',\n declinedReasonTypes: 'code,name',\n srRepairTypes: 'id,code,name,product',\n srResolutionTypes: 'id,code,name,product',\n srStatusTypes: 'code,name',\n woResolutionTypes: 'id,code,name,woType',\n woStatusTypes: 'code,name',\n statusTypes: 'code,name'\n });\n return $q(function (resolve, reject) {\n _db.open().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n }\n };\n var cleanAcceptedOrders = function cleanAcceptedOrders() {\n var toggleFlag = sessionStorageService.get(FPAssetService.storageKeys.toggleFlags.acceptedOrders) === '1' ? 0 : 1;\n return $q(function (resolve, reject) {\n _db.acceptedOrders.where(FPAssetService.filterCol.toggleFlag).equals(toggleFlag).delete().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var cleanInvoiceOrders = function cleanInvoiceOrders() {\n var toggleFlag = sessionStorageService.get(FPAssetService.storageKeys.toggleFlags.invoiceOrders) === '1' ? 0 : 1;\n return $q(function (resolve, reject) {\n _db.invoiceOrders.where(FPAssetService.filterCol.toggleFlag).equals(toggleFlag).delete().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearAcceptedOrders = function clearAcceptedOrders() {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearCancelledReasonTypes = function clearCancelledReasonTypes() {\n return $q(function (resolve, reject) {\n _db.cancelledReasonTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearCompanyOverview = function clearCompanyOverview() {\n return $q(function (resolve, reject) {\n _db.companyOverview.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearDeclinedReasonTypes = function clearDeclinedReasonTypes() {\n return $q(function (resolve, reject) {\n _db.declinedReasonTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearInvoiceOrders = function clearInvoiceOrders() {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearStatusTypes = function clearStatusTypes() {\n return $q(function (resolve, reject) {\n _db.statusTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearSRResolutionTypes = function clearSRResolutionTypes() {\n return $q(function (resolve, reject) {\n _db.srResolutionTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearSRRepairTypes = function clearSRRepairTypes() {\n return $q(function (resolve, reject) {\n _db.srRepairTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearSRStatusTypes = function clearSRStatusTypes() {\n return $q(function (resolve, reject) {\n _db.srStatusTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearUsers = function clearUsers() {\n return $q(function (resolve, reject) {\n _db.users.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearWOResolutionTypes = function clearWOResolutionTypes() {\n return $q(function (resolve, reject) {\n _db.woResolutionTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var clearWOStatusTypes = function clearWOStatusTypes() {\n return $q(function (resolve, reject) {\n _db.woStatusTypes.clear().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var deleteAcceptedOrder = function deleteAcceptedOrder(serviceOrderId) {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.delete(serviceOrderId).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var deleteAcceptedOrders = function deleteAcceptedOrders(serviceOrderIds) {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.bulkDelete(serviceOrderIds).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var deleteDb = function deleteDb() {\n return $q(function (resolve, reject) {\n _db.delete().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var deleteInvoiceOrder = function deleteInvoiceOrder(serviceOrderId) {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.delete(serviceOrderId).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var deleteInvoiceOrders = function deleteInvoiceOrders(serviceOrderIds) {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.bulkDelete(serviceOrderIds).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var filterInvoiceOrders = function filterInvoiceOrders(filterCol, filterList) {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.where(filterCol).anyOfIgnoreCase(filterList).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getAcceptedOrders = function getAcceptedOrders() {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getInvoiceOrders = function getInvoiceOrders() {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getCancelledReasonTypes = function getCancelledReasonTypes() {\n return $q(function (resolve, reject) {\n _db.cancelledReasonTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getCompanyOverview = function getCompanyOverview() {\n return $q(function (resolve, reject) {\n _db.companyOverview.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getDeclinedReasonTypes = function getDeclinedReasonTypes() {\n return $q(function (resolve, reject) {\n _db.declinedReasonTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRRepairTypes = function getSRRepairTypes() {\n return $q(function (resolve, reject) {\n _db.srRepairTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRRepairTypesByProduct = function getSRRepairTypesByProduct(productFilter) {\n return $q(function (resolve, reject) {\n _db.srRepairTypes.where(FPAssetService.filterCol.product).equals(productFilter).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRResolutionTypes = function getSRResolutionTypes() {\n return $q(function (resolve, reject) {\n _db.srResolutionTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRResolutionTypesByProduct = function getSRResolutionTypesByProduct(productFilter) {\n return $q(function (resolve, reject) {\n _db.srResolutionTypes.where(FPAssetService.filterCol.product).equals(productFilter).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRStatusList = function getSRStatusList() {\n return $q(function (resolve, reject) {\n _db.srStatusTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getSRStatusByStatusCode = function getSRStatusByStatusCode(statusCode) {\n return $q(function (resolve, reject) {\n _db.srStatusTypes.where(FPAssetService.filterCol.code).equals(statusCode).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getUsers = function getUsers() {\n return $q(function (resolve, reject) {\n _db.users.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getWOResolutionTypes = function getWOResolutionTypes() {\n return $q(function (resolve, reject) {\n _db.woResolutionTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getWOResolutionTypesByWOType = function getWOResolutionTypesByWOType(woTypeFilter) {\n return $q(function (resolve, reject) {\n _db.woResolutionTypes.where(FPAssetService.filterCol.woType).equals(woTypeFilter).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getWOStatusByStatusCode = function getWOStatusByStatusCode(statusCode) {\n return $q(function (resolve, reject) {\n _db.woStatusTypes.where('code').equals(statusCode).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getWOStatusList = function getWOStatusList() {\n return $q(function (resolve, reject) {\n _db.woStatusTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var getStatusList = function getStatusList() {\n return $q(function (resolve, reject) {\n _db.statusTypes.toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n reject(error);\n });\n });\n };\n var getStatusByStatusCode = function getStatusByStatusCode(statusCode) {\n return $q(function (resolve, reject) {\n _db.statusTypes.where(FPAssetService.filterCol.code).equals(statusCode).toArray().then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putCancelledReasonTypes = function putCancelledReasonTypes(cancelledReasonTypes) {\n return $q(function (resolve, reject) {\n _db.cancelledReasonTypes.bulkPut(cancelledReasonTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putCompanyOverview = function putCompanyOverview(companyOverview) {\n return $q(function (resolve, reject) {\n _db.companyOverview.bulkPut(companyOverview).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putDeclinedReasonTypes = function putDeclinedReasonTypes(declinedReasonTypes) {\n return $q(function (resolve, reject) {\n _db.declinedReasonTypes.bulkPut(declinedReasonTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putAcceptedOrder = function putAcceptedOrder(serviceOrder) {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.put(serviceOrder).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putAcceptedOrders = function putAcceptedOrders(serviceOrders) {\n return $q(function (resolve, reject) {\n _db.acceptedOrders.bulkPut(serviceOrders).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putInvoiceOrder = function putInvoiceOrder(serviceOrder) {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.put(serviceOrder).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putInvoiceOrders = function putInvoiceOrders(serviceOrders) {\n return $q(function (resolve, reject) {\n _db.invoiceOrders.bulkPut(serviceOrders).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putSRRepairTypes = function putSRRepairTypes(srRepairTypes) {\n return $q(function (resolve, reject) {\n _db.srRepairTypes.bulkPut(srRepairTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putSRResolutionTypes = function putSRResolutionTypes(srResolutionTypes) {\n return $q(function (resolve, reject) {\n _db.srResolutionTypes.bulkPut(srResolutionTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putSRStatusTypes = function putSRStatusTypes(srStatusTypes) {\n return $q(function (resolve, reject) {\n _db.srStatusTypes.bulkPut(srStatusTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putUsers = function putUsers(users) {\n return $q(function (resolve, reject) {\n _db.users.bulkPut(users).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putWOResolutionTypes = function putWOResolutionTypes(woResolutionTypes) {\n return $q(function (resolve, reject) {\n _db.woResolutionTypes.bulkPut(woResolutionTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putWOStatusTypes = function putWOStatusTypes(woStatusTypes) {\n return $q(function (resolve, reject) {\n _db.woStatusTypes.bulkPut(woStatusTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n var putStatusTypes = function putStatusTypes(statusTypes) {\n return $q(function (resolve, reject) {\n _db.statusTypes.bulkPut(statusTypes).then(function (result) {\n resolve(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n reject(error);\n });\n });\n };\n return {\n ensureDb: ensureDb,\n cleanAcceptedOrders: cleanAcceptedOrders,\n cleanInvoiceOrders: cleanInvoiceOrders,\n clearAcceptedOrders: clearAcceptedOrders,\n clearCancelledReasonTypes: clearCancelledReasonTypes,\n clearCompanyOverview: clearCompanyOverview,\n clearDeclinedReasonTypes: clearDeclinedReasonTypes,\n clearInvoiceOrders: clearInvoiceOrders,\n clearStatusTypes: clearStatusTypes,\n clearSRResolutionTypes: clearSRResolutionTypes,\n clearSRRepairTypes: clearSRRepairTypes,\n clearSRStatusTypes: clearSRStatusTypes,\n clearUsers: clearUsers,\n clearWOResolutionTypes: clearWOResolutionTypes,\n clearWOStatusTypes: clearWOStatusTypes,\n deleteAcceptedOrder: deleteAcceptedOrder,\n deleteAcceptedOrders: deleteAcceptedOrders,\n deleteDb: deleteDb,\n deleteInvoiceOrder: deleteInvoiceOrder,\n deleteInvoiceOrders: deleteInvoiceOrders,\n filterInvoiceOrders: filterInvoiceOrders,\n getAcceptedOrders: getAcceptedOrders,\n getInvoiceOrders: getInvoiceOrders,\n getCancelledReasonTypes: getCancelledReasonTypes,\n getCompanyOverview: getCompanyOverview,\n getDeclinedReasonTypes: getDeclinedReasonTypes,\n getSRRepairTypes: getSRRepairTypes,\n getSRRepairTypesByProduct: getSRRepairTypesByProduct,\n getSRResolutionTypes: getSRResolutionTypes,\n getSRResolutionTypesByProduct: getSRResolutionTypesByProduct,\n getStatusByStatusCode: getStatusByStatusCode,\n getSRStatusByStatusCode: getSRStatusByStatusCode,\n getSRStatusList: getSRStatusList,\n getUsers: getUsers,\n getWOResolutionTypes: getWOResolutionTypes,\n getWOResolutionTypesByWOType: getWOResolutionTypesByWOType,\n getWOStatusList: getWOStatusList,\n getWOStatusByStatusCode: getWOStatusByStatusCode,\n getStatusList: getStatusList,\n putAcceptedOrder: putAcceptedOrder,\n putAcceptedOrders: putAcceptedOrders,\n putCancelledReasonTypes: putCancelledReasonTypes,\n putCompanyOverview: putCompanyOverview,\n putDeclinedReasonTypes: putDeclinedReasonTypes,\n putInvoiceOrder: putInvoiceOrder,\n putInvoiceOrders: putInvoiceOrders,\n putSRRepairTypes: putSRRepairTypes,\n putSRResolutionTypes: putSRResolutionTypes,\n putSRStatusTypes: putSRStatusTypes,\n putUsers: putUsers,\n putWOResolutionTypes: putWOResolutionTypes,\n putWOStatusTypes: putWOStatusTypes,\n putStatusTypes: putStatusTypes\n };\n});\napp.factory('FPInviteUserFactory', function ($q, FPAssetService, apiService) {\n var getServiceUser = function getServiceUser(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: FPAssetService.errors.unknownError.reason,\n message: FPAssetService.errors.unknownError.message,\n status: FPAssetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getServiceNewUser = function getServiceNewUser(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: FPAssetService.errors.unknownError.reason,\n message: FPAssetService.errors.unknownError.message,\n status: FPAssetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getServiceUser: getServiceUser,\n getServiceNewUser: getServiceNewUser\n };\n});\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-undef */\n/* eslint-disable max-len */\napp.factory('FPInvoiceService', function (FPAssetService) {\n var calculateTotalLaborPartsCoveredCost = function calculateTotalLaborPartsCoveredCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost) + parseFloat(!partsCost ? '0.0' : partsCost) + parseFloat(!tripFee ? '0.0' : tripFee);\n };\n var calculateTotalCost = function calculateTotalCost(tripFee, laborCost, materialCost) {\n return parseFloat(!tripFee ? '0.0' : tripFee) + parseFloat(!laborCost ? '0.0' : laborCost) + parseFloat(!materialCost ? '0.0' : materialCost);\n };\n var takeStatus = function takeStatus(serviceOrders) {\n return FPAssetService.status[serviceOrders[0].soStatus].label;\n };\n var applyGrouping = function applyGrouping(serviceOrders) {\n var groupSets = [];\n var groupInvoicesInformation = _.groupBy(serviceOrders, function (serviceOrder) {\n return serviceOrder.contractorInvoiceNumber;\n });\n Object.keys(groupInvoicesInformation).forEach(function (contractorInvoiceNo) {\n var invoiceTotal = 0;\n _.forEach(groupInvoicesInformation[contractorInvoiceNo], function (invoice) {\n if (invoice.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST) {\n var totalLaborPartsCoveredCost = !invoice.orderCostTimeDetails.totalLaborPartsCoveredCost.value || invoice.orderCostTimeDetails.totalLaborPartsCoveredCost.value === '' ? 0 : calculateTotalLaborPartsCoveredCost(invoice.orderCostTimeDetails.regularLaborCost.value, invoice.orderCostTimeDetails.entitlementLaborCost.value, invoice.orderCostTimeDetails.partsCost.value, invoice.orderCostTimeDetails.tripFee.value);\n invoiceTotal += parseFloat(totalLaborPartsCoveredCost);\n } else {\n var totalOrderCostValue = !invoice.orderCostTimeDetails.totalOrderCost.value || invoice.orderCostTimeDetails.totalOrderCost.value === '' ? 0 : calculateTotalCost(invoice.orderCostTimeDetails.tripFee.value, invoice.orderCostTimeDetails.laborCost.value, invoice.orderCostTimeDetails.materialCost.value);\n invoiceTotal += parseFloat(totalOrderCostValue);\n }\n });\n groupSets.push({\n contractorInvoiceNumber: contractorInvoiceNo,\n serviceOrders: groupInvoicesInformation[contractorInvoiceNo],\n invoiceTotal: invoiceTotal,\n orderCount: groupInvoicesInformation[contractorInvoiceNo].length,\n status: takeStatus(groupInvoicesInformation[contractorInvoiceNo]),\n lastModifiedDate: groupInvoicesInformation[contractorInvoiceNo][0].lastModifiedDate\n });\n });\n return groupSets;\n };\n return {\n applyGrouping: applyGrouping,\n takeStatus: takeStatus\n };\n});\napp.factory('FPModalService', function ($modal, FPAssetService) {\n var cancelModal = function cancelModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.CANCEL_WORK_ORDER.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.CANCEL_WORK_ORDER.windowTemplateUrl,\n backdrop: true,\n windowClass: 'right fade',\n controller: FPAssetService.modalsObj.CANCEL_WORK_ORDER.controller,\n controllerAs: 'vm'\n });\n };\n var saveChangesModal = function saveChangesModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.SAVE_CHANGES.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.SAVE_CHANGES.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.SAVE_CHANGES.backdrop,\n windowClass: FPAssetService.modalsObj.SAVE_CHANGES.windowClass,\n controller: FPAssetService.modalsObj.SAVE_CHANGES.controller,\n controllerAs: FPAssetService.modalsObj.SAVE_CHANGES.controllerAs\n });\n };\n var assignWorkOrderModal = function assignWorkOrderModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.backdrop,\n windowClass: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.windowClass,\n controller: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.controller,\n controllerAs: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.controllerAs\n });\n };\n var scheduleWorkOrderModal = function scheduleWorkOrderModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.backdrop,\n windowClass: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.windowClass,\n controller: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.controller,\n controllerAs: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.controllerAs\n });\n };\n var dispatchModal = function dispatchModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.DISPATCH.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.DISPATCH.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.DISPATCH.backdrop,\n windowClass: FPAssetService.modalsObj.DISPATCH.windowClass,\n controller: FPAssetService.modalsObj.DISPATCH.controller,\n controllerAs: FPAssetService.modalsObj.DISPATCH.controllerAs\n });\n };\n var workCompleteModal = function workCompleteModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.WORK_COMPLETE.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.WORK_COMPLETE.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.WORK_COMPLETE.backdrop,\n windowClass: FPAssetService.modalsObj.WORK_COMPLETE.windowClass,\n controller: FPAssetService.modalsObj.WORK_COMPLETE.controller,\n controllerAs: FPAssetService.modalsObj.WORK_COMPLETE.controllerAs\n });\n };\n var reviewModal = function reviewModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.REVIEW.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.REVIEW.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.REVIEW.backdrop,\n windowClass: FPAssetService.modalsObj.REVIEW.windowClass,\n controller: FPAssetService.modalsObj.REVIEW.controller,\n controllerAs: FPAssetService.modalsObj.REVIEW.controllerAs\n });\n };\n var readyForInvoiceModal = function readyForInvoiceModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.READY_FOR_INVOICE.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.READY_FOR_INVOICE.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.READY_FOR_INVOICE.backdrop,\n windowClass: FPAssetService.modalsObj.READY_FOR_INVOICE.windowClass,\n controller: FPAssetService.modalsObj.READY_FOR_INVOICE.controller,\n controllerAs: FPAssetService.modalsObj.READY_FOR_INVOICE.controllerAs\n });\n };\n var bundleWorkOrderModal = function bundleWorkOrderModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.templateUrl,\n windowTemplateUrl: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.windowTemplateUrl,\n backdrop: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.backdrop,\n windowClass: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.windowClass,\n controller: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.controller,\n controllerAs: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.controllerAs\n });\n };\n var declineModal = function declineModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.DECLINE.templateUrl,\n backdrop: FPAssetService.modalsObj.DECLINE.backdrop,\n windowClass: FPAssetService.modalsObj.DECLINE.windowClass,\n controller: FPAssetService.modalsObj.DECLINE.controller,\n controllerAs: FPAssetService.modalsObj.DECLINE.controllerAs\n });\n };\n var acceptWorkOrderModal = function acceptWorkOrderModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.templateUrl,\n backdrop: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.backdrop,\n windowClass: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.windowClass,\n controller: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.controller,\n controllerAs: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.controllerAs\n });\n };\n var multiDispatchModal = function multiDispatchModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.MULTI_DISPATCH.templateUrl,\n backdrop: FPAssetService.modalsObj.MULTI_DISPATCH.backdrop,\n windowClass: FPAssetService.modalsObj.MULTI_DISPATCH.windowClass,\n controller: FPAssetService.modalsObj.MULTI_DISPATCH.controller,\n controllerAs: FPAssetService.modalsObj.MULTI_DISPATCH.controllerAs\n });\n };\n var inviteUserModal = function inviteUserModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.INVITE_USER.templateUrl,\n backdrop: FPAssetService.modalsObj.INVITE_USER.backdrop,\n windowClass: FPAssetService.modalsObj.INVITE_USER.windowClass,\n controller: FPAssetService.modalsObj.INVITE_USER.controller,\n controllerAs: FPAssetService.modalsObj.INVITE_USER.controllerAs\n });\n };\n var userAdministrationModal = function userAdministrationModal() {\n $modal.open({\n templateUrl: FPAssetService.modalsObj.USER_ADMINISTRATION.templateUrl,\n backdrop: FPAssetService.modalsObj.USER_ADMINISTRATION.backdrop,\n windowClass: FPAssetService.modalsObj.USER_ADMINISTRATION.windowClass,\n controller: FPAssetService.modalsObj.USER_ADMINISTRATION.controller,\n controllerAs: FPAssetService.modalsObj.USER_ADMINISTRATION.controllerAs\n });\n };\n return {\n cancelModal: cancelModal,\n saveChangesModal: saveChangesModal,\n assignWorkOrderModal: assignWorkOrderModal,\n scheduleWorkOrderModal: scheduleWorkOrderModal,\n dispatchModal: dispatchModal,\n workCompleteModal: workCompleteModal,\n reviewModal: reviewModal,\n readyForInvoiceModal: readyForInvoiceModal,\n bundleWorkOrderModal: bundleWorkOrderModal,\n declineModal: declineModal,\n acceptWorkOrderModal: acceptWorkOrderModal,\n multiDispatchModal: multiDispatchModal,\n inviteUserModal: inviteUserModal,\n userAdministrationModal: userAdministrationModal\n };\n});\napp.factory('FPPagerService', function (sessionStorageService) {\n // service definition\n var _pager = {\n totalItems: 0,\n currentPage: 0,\n pageSize: 0,\n totalPages: 0,\n startPage: 0,\n endPage: 0,\n startIndex: 0,\n endIndex: 0,\n pages: 0\n };\n var _getPager = function _getPager(storageKey) {\n var pager = sessionStorageService.get(storageKey);\n return pager ? pager : null;\n };\n var _setPager = function _setPager(pager, storageKey) {\n sessionStorageService.set(storageKey, pager);\n };\n\n // service implementation\n var _pagerObj = function _pagerObj(storageKey, totalItems, currentPage, pageSize) {\n var pager = _getPager(storageKey);\n if (!pager) {\n pager = angular.copy(_pager);\n }\n\n // default to first page\n pager.currentPage = currentPage || 1;\n\n // default page size is 12\n pager.pageSize = pageSize || 12;\n\n //default total items\n pager.totalItems = totalItems;\n\n // calculate total pages\n pager.totalPages = Math.ceil(pager.totalItems / pager.pageSize);\n var startPage, endPage;\n if (pager.totalPages <= 10) {\n // less than 10 total pages so show all\n pager.startPage = 1;\n pager.endPage = pager.totalPages;\n } else {\n // more than 10 total pages so calculate start and end pages\n if (pager.currentPage <= 6) {\n pager.startPage = 1;\n pager.endPage = 10;\n } else if (pager.currentPage + 4 >= pager.totalPages) {\n pager.startPage = pager.totalPages - 9;\n pager.endPage = pager.totalPages;\n } else {\n pager.startPage = pager.currentPage - 5;\n pager.endPage = pager.currentPage + 4;\n }\n }\n\n // calculate start and end item indexes\n pager.startIndex = (pager.currentPage - 1) * pager.pageSize;\n pager.endIndex = Math.min(pager.startIndex + pager.pageSize - 1, pager.totalItems - 1);\n\n // create an array of pages to ng-repeat in the pager control\n pager.pages = _.range(pager.startPage, pager.endPage + 1);\n\n // return object with all pager properties required by the view\n _setPager(pager, storageKey);\n return pager;\n };\n var createPager = function createPager(_storageKey, _totalItems, _currentPage, _pageSize) {\n var result = _pagerObj(_storageKey, _totalItems, _currentPage, _pageSize);\n return result;\n };\n return {\n createPager: createPager\n };\n});\napp.factory('FPPdfFactory', function (FPPdfService) {\n var _openServiceOrder = function _openServiceOrder(serviceOrder) {\n return FPPdfService.open(serviceOrder);\n };\n var _printServiceOrder = function _printServiceOrder(serviceOrder) {\n return FPPdfService.print(serviceOrder);\n };\n var _downloadServiceOrder = function _downloadServiceOrder(serviceOrder, fileName) {\n return FPPdfService.download(serviceOrder, fileName);\n };\n return {\n _openServiceOrder: _openServiceOrder,\n _printServiceOrder: _printServiceOrder,\n _downloadServiceOrder: _downloadServiceOrder\n };\n});\napp.factory(\"FPPdfService\", function (FPAssetService, FPPdfServiceRequest, FPPdfWorkOrderInstallation, FPPdfWorkOrderRemoval, FPPdfWorkOrderInspectionReplacement) {\n var getPdfContent = function getPdfContent(serviceOrder) {\n if (serviceOrder.woorSR === FPAssetService.woorSRType.SERVICE_REQUEST) {\n return FPPdfServiceRequest._getPdfContentServiceRequest(serviceOrder);\n } else {\n switch (serviceOrder[FPAssetService.fieldNames.SO_TYPE]) {\n case FPAssetService.soType.INSTALLATION.code:\n return FPPdfWorkOrderInstallation._getPdfContentWorkOrderInstallation(serviceOrder);\n case FPAssetService.soType.REMOVAL.code:\n return FPPdfWorkOrderRemoval._getPdfContentWorkOrderRemoval(serviceOrder);\n case FPAssetService.soType.INSPECTION_REPLACEMENT.code:\n return FPPdfWorkOrderInspectionReplacement._getPdfContentWorkOrderInspectionReplacement(serviceOrder);\n }\n }\n };\n var open = function open(serviceOrder) {\n pdfMake.createPdf(getPdfContent(serviceOrder)).open();\n };\n var print = function print(serviceOrder) {\n pdfMake.createPdf(getPdfContent(serviceOrder)).print();\n };\n var download = function download(serviceOrder, fileName) {\n pdfMake.createPdf(getPdfContent(serviceOrder)).download(fileName);\n };\n return {\n open: open,\n print: print,\n download: download\n };\n});\napp.factory('FPServiceOrderService', function (assetService) {\n var canBeAssigned = function canBeAssigned(serviceOrder) {\n return !serviceOrder.assignedTechnician.cdpId;\n };\n var canBeDispatched = function canBeDispatched(serviceOrder) {\n return serviceOrder.soStatus === assetService.status.SCHEDULED.code;\n };\n var canBeInvoiced = function canBeInvoiced(serviceOrder) {\n return serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code && serviceOrder.assignedTechnician.cdpId && !serviceOrder.contractorInvoiceNumber;\n };\n var isCompleteOrder = function isCompleteOrder(serviceOrder) {\n if (serviceOrder.scheduledStartDate) {\n var scheduledStartDate = moment(serviceOrder.scheduledStartDate);\n var today = moment();\n if (today.isAfter(scheduledStartDate)) {\n return serviceOrder.soStatus === assetService.status.DISPATCHED.code;\n }\n }\n return false;\n };\n var isContactOrder = function isContactOrder(serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') > 3 && serviceOrder.soStatus === assetService.status.ACCEPTED.code && !serviceOrder.customerContactHistory.firstAttemptDate) {\n if (serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER) {\n return serviceOrder.customerContactHistory.contactForAppointment;\n }\n return true;\n }\n }\n return false;\n };\n var isInvoiceOrder = function isInvoiceOrder(serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') >= 14) {\n return serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code;\n }\n }\n return false;\n };\n var isNewOrder = function isNewOrder(serviceOrder) {\n if (serviceOrder.createdDate) {\n var createdDate = moment(serviceOrder.createdDate);\n var today = moment();\n return today.diff(createdDate, 'days') <= 3;\n }\n return false;\n };\n var isScheduleOrder = function isScheduleOrder(serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') >= 30 && serviceOrder.soStatus === assetService.status.ACCEPTED.code && serviceOrder.customerContactHistory.firstAttemptDate && !serviceOrder.scheduledStartDate) {\n if (serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER) {\n return serviceOrder.customerContactHistory.contactForAppointment;\n }\n return true;\n }\n }\n return false;\n };\n return {\n canBeAssigned: canBeAssigned,\n canBeDispatched: canBeDispatched,\n canBeInvoiced: canBeInvoiced,\n isCompleteOrder: isCompleteOrder,\n isContactOrder: isContactOrder,\n isInvoiceOrder: isInvoiceOrder,\n isNewOrder: isNewOrder,\n isScheduleOrder: isScheduleOrder\n };\n});\n/* eslint-disable no-undef */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable id-length */\n/* eslint-disable no-underscore-dangle */\napp.factory('FPServiceOrdersFactory', function ($q, FPAssetService, errorHandlingService, apiService, FPBroadcastService, sessionStorageService, FPTokenFactory) {\n var _deleteAppViewsLoad = function _deleteAppViewsLoad() {\n sessionStorageService.delete(FPAssetService.storageKeys.appViewsLoad);\n };\n var _deleteSelectedOrders = function _deleteSelectedOrders() {\n sessionStorageService.delete(FPAssetService.storageKeys.selectedWorkOrders);\n };\n var _deletedSelectedOrder = function _deletedSelectedOrder() {\n sessionStorageService.delete(FPAssetService.storageKeys.selectedWorkOrder);\n };\n var _getAppViewsLoad = function _getAppViewsLoad() {\n var viewsObj = sessionStorageService.get(FPAssetService.storageKeys.appViewsLoad);\n return viewsObj || null;\n };\n var _getAddendum = function _getAddendum() {\n var serviceOrder = sessionStorageService.get(FPAssetService.storageKeys.selectedWorkOrder);\n return serviceOrder ? serviceOrder.addendum : null;\n };\n var _getHeader = function _getHeader() {\n var token = FPTokenFactory.getToken();\n var headers = FPAssetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n var _getSelectedOrder = function _getSelectedOrder() {\n var serviceOrder = sessionStorageService.get(FPAssetService.storageKeys.selectedWorkOrder);\n return serviceOrder || null;\n };\n var _getSelectedOrders = function _getSelectedOrders() {\n var serviceOrders = sessionStorageService.get(FPAssetService.storageKeys.selectedWorkOrders);\n return serviceOrders || null;\n };\n var _getServiceOrders = function _getServiceOrders() {\n var serviceOrders = sessionStorageService.get(FPAssetService.storageKeys.serviceOrders);\n return serviceOrders || null;\n };\n var _setAppViewsLoad = function _setAppViewsLoad(viewsObj) {\n sessionStorageService.set(FPAssetService.storageKeys.appViewsLoad, viewsObj);\n };\n var _setSelectedOrder = function _setSelectedOrder(selectedOrder) {\n sessionStorageService.set(FPAssetService.storageKeys.selectedWorkOrder, selectedOrder);\n };\n var _setSelectedOrders = function _setSelectedOrders(selectedOrders) {\n sessionStorageService.set(FPAssetService.storageKeys.selectedWorkOrders, selectedOrders);\n };\n var _setServiceOrders = function _setServiceOrders(serviceOrders) {\n sessionStorageService.set(FPAssetService.storageKeys.serviceOrders, serviceOrders);\n };\n var calculateCompleteOrders = function calculateCompleteOrders(serviceOrders) {\n // soStatus == 'DISPATCHED' & lastModifiedDate > 7 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') >= 7) {\n return serviceOrder.soStatus === FPAssetService.status.DISPATCHED.code;\n }\n }\n return false;\n });\n return orders.length;\n };\n var calculateContactOrders = function calculateContactOrders(serviceOrders) {\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate == NULL & lastModifiedDate < 3 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') <= 3) {\n return serviceOrder.soStatus === FPAssetService.status.ACCEPTED.code && !serviceOrder.customerContactHistory.firstAttemptDate;\n }\n }\n return false;\n });\n return orders.length;\n };\n var calculateInvoiceOrders = function calculateInvoiceOrders(serviceOrders) {\n // soStatus == 'CONTRACTOR_REVIEWED' & lastModifiedDate > 14 Day\n var orders = serviceOrders.filter(function (serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') >= 14) {\n return serviceOrder.soStatus === FPAssetService.status.CONTRACTOR_REVIEWED.code;\n }\n }\n return false;\n });\n return orders.length;\n };\n var calculateNewOrders = function calculateNewOrders(serviceOrders) {\n // createdDate < 3 days\n var orders = serviceOrders.filter(function (serviceOrder) {\n if (serviceOrder.createdDate) {\n var createdDate = moment(serviceOrder.createdDate);\n var today = moment();\n return today.diff(createdDate, 'days') <= 3;\n }\n return false;\n });\n return orders.length;\n };\n var calculateScheduleOrders = function calculateScheduleOrders(serviceOrders) {\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate != NULL & lastModifiedDate > 30 days & scheduledStartDate == NULL\n var orders = serviceOrders.filter(function (serviceOrder) {\n if (serviceOrder.lastModifiedDate) {\n var lastModifiedDate = moment(serviceOrder.lastModifiedDate);\n var today = moment();\n if (today.diff(lastModifiedDate, 'days') >= 30) {\n return serviceOrder.soStatus === FPAssetService.status.ACCEPTED.code && serviceOrder.customerContactHistory.firstAttemptDate && !serviceOrder.scheduledStartDate;\n }\n }\n return false;\n });\n return orders.length;\n };\n var getAddendum = function getAddendum(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getServiceOrder = function getServiceOrder(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getServiceOrders = function getServiceOrders(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getAllUsers = function getAllUsers(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getCompanyDetails = function getCompanyDetails(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getDefaultCompanyInvoicesWidget = function getDefaultCompanyInvoicesWidget(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getUserRoles = function getUserRoles(url) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var patchServiceOrders = function patchServiceOrders(url, serviceOrder) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.patchDataAsync(url, serviceOrder, header, true).then(function (result) {\n _setSelectedOrder(serviceOrder);\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var postServiceOrders = function postServiceOrders(url, serviceOrder) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.postDataAsync(url, serviceOrder, header).then(function (result) {\n _setSelectedOrder(serviceOrder);\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var putServiceOrders = function putServiceOrders(url, serviceOrder) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.putDataAsync(url, serviceOrder, header).then(function (result) {\n _setSelectedOrder(serviceOrder);\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var updateServiceOrder = function updateServiceOrder(serviceOrder) {\n var sessionServiceOrder = _getSelectedOrder();\n var workingServiceOrder = _.merge({}, sessionServiceOrder, serviceOrder);\n _setSelectedOrder(workingServiceOrder);\n FPBroadcastService.triggerServiceOrderUpdate();\n };\n var validateAppLoad = function validateAppLoad(viewsObj) {\n var flag = false;\n Object.keys(viewsObj).forEach(function (key, _index) {\n if (!viewsObj[key] && !flag) {\n flag = true;\n }\n });\n if (flag) {\n return false;\n }\n FPBroadcastService.appLoaded();\n _deleteAppViewsLoad();\n return true;\n };\n return {\n _deleteAppViewsLoad: _deleteAppViewsLoad,\n _deleteSelectedOrders: _deleteSelectedOrders,\n _deleteSelectedOrder: _deletedSelectedOrder,\n _getAppViewsLoad: _getAppViewsLoad,\n _getAddendum: _getAddendum,\n _getSelectedOrder: _getSelectedOrder,\n _getSelectedOrders: _getSelectedOrders,\n _getServiceOrders: _getServiceOrders,\n _setAppViewsLoad: _setAppViewsLoad,\n _setSelectedOrder: _setSelectedOrder,\n _setSelectedOrders: _setSelectedOrders,\n _setServiceOrders: _setServiceOrders,\n calculateCompleteOrders: calculateCompleteOrders,\n calculateContactOrders: calculateContactOrders,\n calculateInvoiceOrders: calculateInvoiceOrders,\n calculateNewOrders: calculateNewOrders,\n calculateScheduleOrders: calculateScheduleOrders,\n getAddendum: getAddendum,\n getCompanyDetails: getCompanyDetails,\n getDefaultCompanyInvoicesWidget: getDefaultCompanyInvoicesWidget,\n getServiceOrder: getServiceOrder,\n getServiceOrders: getServiceOrders,\n getAllUsers: getAllUsers,\n getUserRoles: getUserRoles,\n patchServiceOrders: patchServiceOrders,\n postServiceOrders: postServiceOrders,\n putServiceOrders: putServiceOrders,\n updateServiceOrder: updateServiceOrder,\n validateAppLoad: validateAppLoad\n };\n});\napp.factory('FPTokenFactory', function (FPApigeeApiConfigService, FPApiConfigService, FPSitecoreServices) {\n // const clientUsername = '3A5Jkv6S1SUcPJ4KF03ON4QQKZrZvxvy';\n // const clientSecret = '1zqXc0GB3z3kfrgd';\n\n var clientUsername = '5Qp8ySKwjDw5FIcvCOR8bSlYD1EeiMwz';\n var clientSecret = '41OAfTlMuGFU8lME';\n\n // const clientUsername = 'I1t1irgqvRAUJnwgbqg1fMhFcjCQC1sT';\n // const clientSecret = 'LDtVmqF3Q1WlN1ho';\n\n var tokenRequest = function tokenRequest() {\n var token = null;\n var getAccessTokenUrl = FPApiConfigService.getAccessTokenUrl();\n $.ajax({\n url: \"\".concat(getAccessTokenUrl),\n type: 'GET',\n dataType: 'json',\n async: false,\n success: function success(data) {\n token = data;\n },\n error: function error(xhr, status, _error) {\n FPSitecoreServices.logException(_error);\n }\n });\n return token;\n };\n var oAuthTokenRequest = function oAuthTokenRequest() {\n var token = null;\n var getCCAccessTokenUrl = FPApigeeApiConfigService.getOAuthTokenUrl();\n $.ajax({\n url: \"\".concat(getCCAccessTokenUrl),\n type: 'POST',\n dataType: 'json',\n data: {\n grant_type: 'client_credentials'\n },\n async: false,\n beforeSend: function beforeSend(xhr) {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n xhr.setRequestHeader('Authorization', \"Basic \".concat(btoa(\"\".concat(clientUsername, \":\").concat(clientSecret))));\n xhr.setRequestHeader('CacheControl', 'no-cache');\n xhr.setRequestHeader('ID', 'test');\n },\n success: function success(data) {\n token = data.access_token;\n },\n error: function error(xhr, status, _error2) {\n FPSitecoreServices.logException(_error2);\n }\n });\n return token;\n };\n var ccTokenRequest = function ccTokenRequest() {\n var token = null;\n var getCCAccessTokenUrl = FPApigeeApiConfigService.getCCAccessTokenUrl();\n $.ajax({\n url: \"\".concat(getCCAccessTokenUrl),\n type: 'POST',\n dataType: 'json',\n data: {\n grant_type: 'client_credentials'\n },\n async: false,\n beforeSend: function beforeSend(xhr) {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n xhr.setRequestHeader('Authorization', \"Basic \".concat(btoa(\"\".concat(clientUsername, \":\").concat(clientSecret))));\n xhr.setRequestHeader('CacheControl', 'no-cache');\n xhr.setRequestHeader('ID', 'test');\n },\n success: function success(data) {\n token = data.access_token;\n },\n error: function error(xhr, status, _error3) {\n FPSitecoreServices.logException(_error3);\n }\n });\n return token;\n };\n var getToken = function getToken() {\n var token = tokenRequest();\n return token;\n };\n var getCCToken = function getCCToken() {\n var token = ccTokenRequest();\n return token;\n };\n var getOAuthToken = function getOAuthToken() {\n var token = oAuthTokenRequest();\n return token;\n };\n return {\n getToken: getToken,\n getCCToken: getCCToken,\n getOAuthToken: getOAuthToken\n };\n});\n/* eslint-disable no-undef */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable id-length */\n/* eslint-disable no-underscore-dangle */\napp.factory('FPUserService', function ($q, FPAssetService, apiService, sessionStorageService, FPTokenFactory) {\n var _getHeader = function _getHeader() {\n var token = FPTokenFactory.getToken();\n var headers = FPAssetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n var deleteUsers = function deleteUsers() {\n sessionStorageService.delete(FPAssetService.storageKeys.appViewsLoad);\n };\n var getUsers = function getUsers() {\n sessionStorageService.get(FPAssetService.storageKeys.widgetsData.users);\n };\n var setUsers = function setUsers(users) {\n sessionStorageService.set(FPAssetService.storageKeys.widgetsData.users, users);\n };\n var postUser = function postUser(url, user) {\n var header = _getHeader();\n return $q(function (resolve, reject) {\n apiService.postDataAsync(url, user, header).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.length > 0) {\n reject({\n reason: error[0].reason,\n message: error[0].message,\n status: error[0].type\n });\n } else if (error.data) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: FPAssetService.errors.unknownError.reason,\n message: FPAssetService.errors.unknownError.message,\n status: FPAssetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n deleteUsers: deleteUsers,\n getUsers: getUsers,\n setUsers: setUsers,\n postUser: postUser\n };\n});\napp.factory('installmentpaymentplansandeligibilityservice', function ($q, apiConfigService, apiApigeeConfigService, assetService, apiService, errorHandlingService, tokenFactory) {\n var dataTransformation = function dataTransformation(object) {\n var dtoObj = {\n Source: 'SEW',\n Action: 'GET',\n BusinessPartner: '',\n ReqCA: {\n results: [{\n ContractAccount: object,\n Extensions: {},\n PaymentPlan: {\n results: [{}]\n },\n Messages: {}\n }]\n }\n };\n return dtoObj;\n };\n var getHeader = function getHeader() {\n var token = tokenFactory.getCCToken();\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n var ainstalmentPaymentPlansAndEligibilityCheck = function ainstalmentPaymentPlansAndEligibilityCheck(data) {\n var header = getHeader();\n var targetEndpointUrl = apiApigeeConfigService.post.instalmentPaymentPlansAndEligibilityCheck();\n var requestPayload = dataTransformation(data);\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var instalmentPaymentPlansAndEligibilityCheck = function instalmentPaymentPlansAndEligibilityCheck(data) {\n var header = assetService.apiHeaders.authorization;\n var targetEndpointUrl = apiConfigService.post.instalmentPaymentPlansAndEligibilityCheck();\n var datamodel = JSON.stringify(dataTransformation(data));\n var requestPayload = JSON.stringify({\n request: datamodel\n });\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n return {\n apigee: {\n instalmentPaymentPlansAndEligibilityCheck: ainstalmentPaymentPlansAndEligibilityCheck\n },\n sitecore: {\n instalmentPaymentPlansAndEligibilityCheck: instalmentPaymentPlansAndEligibilityCheck\n }\n };\n});\napp.factory('installmentpaymentplansextensionsandeligibilityservice', function ($q, apiConfigService, apiApigeeConfigService, assetService, apiService, errorHandlingService, tokenFactory) {\n var dataTransformation = function dataTransformation(object) {\n var dtoObj = {\n Source: 'SEW',\n Action: 'GET',\n RequestedBy: Object.prototype.hasOwnProperty.call(object, 'requestedBy') ? object.requestedBy : '',\n RequestedOn: moment().format('YYYY-MM-DDTHH:mm:ss'),\n RequestedTime: \"PT\".concat(moment().format('hh'), \"H\").concat(moment().format('mm'), \"M\").concat(moment().format('ss'), \"S\"),\n ContractAccount: object.hasOwnProperty('accountNumber') ? object.accountNumber : '',\n TypeOfCharge: object.hasOwnProperty('TypeOfCharge') ? object.TypeOfCharge : '',\n TotalAmount: '',\n IPMessage: {},\n IPTypes: {\n results: [{\n InstallmentPlanType: object.hasOwnProperty('planType') ? object.planType : '',\n IPTypesInfo: {\n results: []\n }\n }]\n }\n };\n return dtoObj;\n };\n var getHeader = function getHeader() {\n var token = tokenFactory.getCCToken();\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n var ainstallmentpaymentplansextensionsandeligibilityservice = function ainstallmentpaymentplansextensionsandeligibilityservice(data) {\n var header = getHeader();\n var targetEndpointUrl = apiApigeeConfigService.post.getinstallmentpaymentplansextensionsandeligibilityservice();\n var requestPayload = dataTransformation(data);\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var installmentpaymentplansextensionsandeligibilityservice = function installmentpaymentplansextensionsandeligibilityservice(data) {\n var header = assetService.apiHeaders.authorization;\n var targetEndpointUrl = apiConfigService.post.getinstallmentpaymentplansextensionsandeligibilityservice();\n var datamodel = JSON.stringify(dataTransformation(data));\n var requestPayload = JSON.stringify({\n request: datamodel\n });\n return $q(function (resolve, reject) {\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n return {\n apigee: {\n installmentpaymentplansextensionsandeligibilityservice: ainstallmentpaymentplansextensionsandeligibilityservice\n },\n sitecore: {\n installmentpaymentplansextensionsandeligibilityservice: installmentpaymentplansextensionsandeligibilityservice\n }\n };\n});\napp.factory('acceptedOrdersPollingWebWorkerService', function ($q, $log, assetService, FPBroadcastService, FPIndexedDbDataService, tokenFactory) {\n var self = this;\n self.cachedServiceOrders = [];\n self.putOrders = [];\n self.promises = [];\n self.callWebWorker = callWebWorker;\n var getHeader = function getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function putAcceptedOrders(serviceOrders) {\n return FPIndexedDbDataService.putAcceptedOrders(serviceOrders).then(function () {});\n }\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.pollingWebworkerMedium;\n var headers = getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\n putAcceptedOrders(e.data.data.serviceOrders).then(function () {\n FPBroadcastService.triggerRefreshAcceptedOrders();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n defer.resolve(e.data.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('invoiceOrdersPollingWebWorkerService', function ($q, $log, assetService, FPBroadcastService, FPIndexedDbDataService, tokenFactory) {\n var self = this;\n self.cachedServiceOrders = [];\n self.putOrders = [];\n self.promises = [];\n self.callWebWorker = callWebWorker;\n var getHeader = function getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function putInvoiceOrders(serviceOrders) {\n return FPIndexedDbDataService.putInvoiceOrders(serviceOrders).then(function () {});\n }\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.pollingWebworkerLong;\n var headers = getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\n putInvoiceOrders(e.data.data.serviceOrders).then(function () {\n FPBroadcastService.triggerRefreshInvoiceOrders();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n defer.resolve(e.data.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('serviceOrderPollingWebWorkerService', function ($log, $q, assetService, FPBroadcastService, FPIndexedDbDataService, tokenFactory) {\n var self = this;\n self.cachedServiceOrders = [];\n self.putOrders = [];\n self.promises = [];\n self.callWebWorker = callWebWorker;\n var getHeader = function getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function putAcceptedOrders(serviceOrders) {\n return FPIndexedDbDataService.putAcceptedOrders(serviceOrders).then(function () {});\n }\n function putInvoiceOrders(serviceOrders) {\n return FPIndexedDbDataService.putInvoiceOrders(serviceOrders).then(function () {});\n }\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.pollingWebworker;\n var headers = getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\n if (assetService.status[e.data.data.serviceOrders[0].soStatus.code].id < 9) {\n putAcceptedOrders(e.data.data.serviceOrders).then(function () {\n FPBroadcastService.triggerRefreshAcceptedOrders();\n FPBroadcastService.triggerServiceOrderUpdate();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n putInvoiceOrders(e.data.data.serviceOrders).then(function () {\n FPBroadcastService.triggerRefreshInvoiceOrders();\n FPBroadcastService.triggerServiceOrderUpdate();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n defer.resolve(e.data.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('acceptedOrdersWebWorkerService', function ($q, tokenFactory, assetService) {\n var self = this;\n self.callWebWorker = callWebWorker;\n var _getHeader = function _getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.webworker;\n var headers = _getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n defer.resolve(e.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('addendumWebWorkerService', function ($q, tokenFactory, assetService) {\n var self = this;\n self.callWebWorker = callWebWorker;\n var _getHeader = function _getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.webworker;\n var headers = _getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n defer.resolve(e.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('companyDetailsWebWorkerService', function ($q, tokenFactory, assetService) {\n var self = this;\n self.callWebWorker = callWebWorker;\n var _getHeader = function _getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.webworker;\n var headers = _getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n defer.resolve(e.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('invoiceOrdersWebWorkerService', function ($q, tokenFactory, assetService) {\n var self = this;\n self.callWebWorker = callWebWorker;\n var _getHeader = function _getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.webworker;\n var headers = _getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n defer.resolve(e.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\napp.factory('usersWebWorkerService', function ($q, tokenFactory, assetService) {\n var self = this;\n self.callWebWorker = callWebWorker;\n var _getHeader = function _getHeader() {\n var token = null;\n if (assetService.apiConfig.useLocalHost) {\n token = tokenFactory.getCCToken();\n } else {\n token = tokenFactory.getToken();\n }\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n function callWebWorker(apiUrl) {\n var workerUrl = assetService.webworkersUrl.webworker;\n var headers = _getHeader();\n var worker = new Worker(workerUrl);\n var defer = $q.defer();\n worker.onmessage = function (e) {\n defer.resolve(e.data);\n };\n worker.onerror = function (e) {\n console.log(e.message, e);\n };\n worker.postMessage({\n url: apiUrl,\n headers: headers\n }); // Send data to our worker.\n\n return defer.promise;\n }\n return self;\n});\n/* eslint-disable no-use-before-define */\napp.controller('CCViewAllAccounts', CCViewAllAccounts);\nCCViewAllAccounts.$inject = ['assetService', 'broadcastService', '$modalInstance', 'sessionStorageService'];\nfunction CCViewAllAccounts(assetService, broadcastService, $modalInstance, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n\n /* --------------Global Vars-----------------------*/\n var vm = this;\n vm.accountSel = '';\n vm.allAccountsStorage = {};\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.selectOneAccount = selectOneAccount;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n vm.allAccountsStorage = sessionStorageService.get(assetService.storageKeys.accountSelector);\n }\n function saveData() {\n sessionStorageService.set(assetService.storageKeys.accountSelector, vm.allAccountsStorage);\n }\n function selectOneAccount(accNumber) {\n vm.allAccountsStorage.selectedFromModal = accNumber;\n saveData();\n closeModal();\n broadcastService.modalChangeAccount();\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\napp.factory('CCAddAccountFactory', function ($q, assetService, apiService, sessionStorageService) {\n var setAddAccount = function setAddAccount(move) {\n sessionStorageService.set(assetService.storageKeys.move, move);\n };\n var getAddAccount = function getAddAccount() {\n var dataMove = sessionStorageService.get(assetService.storageKeys.move);\n return dataMove || null;\n };\n var getAddAccountMultiple = function getAddAccountMultiple(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getAddAccountSingle = function getAddAccountSingle(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n setAddAccount: setAddAccount,\n getAddAccount: getAddAccount,\n getAddAccountMultiple: getAddAccountMultiple,\n getAddAccountSingle: getAddAccountSingle\n };\n});\napp.controller('HowToPay', HowToPay);\nHowToPay.$inject = ['$scope', '$state', '$window', 'assetService', 'sessionStorageService', 'speedpayService', 'getLoggedInUserDetailsService', 'commongaTaggingService', 'responseNotificationsService', '$rootScope', 'broadcastService'];\nfunction HowToPay($scope, $state, $window, assetService, sessionStorageService, speedpayService, getLoggedInUserDetailsService, commongaTaggingService, responseNotificationsService, $rootScope, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _active = 'active';\n var selectedAddressData = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.balanceStorage = {};\n vm.buttonContinue = true;\n vm.ebillEnrollment = false;\n vm.enrolledStatus = '';\n vm.howToPaySpinner = true;\n vm.PB_BigPadding = false;\n vm.PB_ClickEnroll = undefined;\n vm.PB_Description = assetService.strings.EASILY_ENROLL;\n vm.PB_LinkText = undefined;\n vm.PB_ManageButton = undefined;\n vm.PB_ToggleComponent = true;\n vm.singleAccount = false;\n vm.mainBtnActivate = true;\n vm.currentUser = {};\n vm.disableBankAccount = false;\n vm.disableSpeedPay = false;\n vm.showContinue = true;\n vm.accountLength = '';\n vm.formToPaySpinner = false;\n vm.user = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.enrolledNotif = enrolledNotif;\n vm.formatTotalAmount = formatTotalAmount;\n vm.nextPage = nextPage;\n vm.speedpayRedirect = speedpayRedirect;\n vm.prevPage = prevPage;\n vm.jurisdictionsContent = jurisdictionsContent;\n\n /* --------------Function Definitions-----------------------*/\n function enrolledNotif() {\n // Should call a service to enroll or unenroll from Paperless\n vm.enrolledStatus = vm.enrolledStatus === '' ? _active : '';\n }\n function formatTotalAmount(amount) {\n return $scope.$parent.formatTotalAmount(amount);\n }\n function speedpayRedirect() {\n pushVPV('/vpv/de/page/pay-bill/clickthrough/pay-my-bill/credit-debit-echeck-with-speedpay');\n // Speedpay process\n var zipcode = vm.accountLength.length > 1 ? '' : vm.user.zipCode;\n vm.altId = $rootScope.altId;\n vm.alternateId = vm.altId.filter(function (item) {\n return item.AccountNum == vm.accountBalRegSession.contractAccountNumber;\n });\n var alternateAccountId = vm.alternateId[0].AlternateAccountID;\n speedpayService.getSpeedpayUrl({\n UserID: vm.currentUser.cdpId,\n login: vm.accountBalRegSession.contractAccountNumber,\n password: zipcode,\n returnUrl: window.location.origin + $scope.url.dashboard,\n speedpayAuth: 'auth',\n speedpayAltID: alternateAccountId,\n action: assetService.strings.START\n }).then(function (url) {\n window.location.href = url;\n });\n }\n function nextPage() {\n vm.formToPaySpinner = true;\n if (vm.accountLength !== null && vm.accountLength.length > 1 && vm.accountLength.length <= 20) {\n if (!$rootScope.fromBillsPage) {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/choose-account-to-pay/na/multiple');\n broadcastService.loadBills();\n } else {\n $rootScope.fromBillsPage = false;\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/choose-account-to-pay/na/multiple');\n storeAndGo(assetService.balanceRouteStates.BILLS);\n }\n } else {\n storeAndGo(assetService.balanceRouteStates.FORM_TO_PAY);\n }\n jurisdictionsContent();\n }\n function jurisdictionsContent() {\n $rootScope.deProgress = $scope.url.jurisdictions[0];\n $rootScope.deCarolinas = $scope.url.jurisdictions[1];\n $rootScope.deFlorida = $scope.url.jurisdictions[2];\n $rootScope.deKentucky = $scope.url.jurisdictions[3];\n $rootScope.deOhio = $scope.url.jurisdictions[4];\n $rootScope.deIndiana = $scope.url.jurisdictions[5];\n }\n function prevPage() {\n storeAndGo(assetService.balanceRouteStates.BILLS);\n }\n function storeAndGo(state) {\n // emit Variable, emit value and state\n // Add data to Storage before $emit\n //vm.balanceStorage.payMethodSelected = vm.newPayMethodSelected;\n // sessionStorageService.set(\n // assetService.storageKeys.balanceStorage,\n // vm.balanceStorage,\n // );\n\n $state.go(state);\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n $window.scrollTo(0, 0);\n pushVPV('vpv/de/page/pay-bill/load/pay-my-bill/payment-type');\n // LOAD sessionStorageService\n vm.messagePriority = '';\n sessionStorageService.delete('filterAmountLength');\n sessionStorageService.set('savedOtherAmount', false);\n sessionStorageService.delete('lengthError');\n var _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n vm.accountLength = sessionStorageService.get(assetService.storageKeys.accountLength);\n vm.accountBalRegSession = sessionStorageService.get(assetService.storageKeys.accountBalRegSession);\n if (vm.accountBalRegSession !== null || vm.accountBalRegSession !== undefined) {\n if (vm.accountBalRegSession.noCardsInd === 'T') {\n vm.disableSpeedPay = true;\n } else if (vm.accountBalRegSession.noCheckDraftInd === 'T') {\n vm.disableBankAccount = true;\n } else if (vm.accountBalRegSession.cashOnly === 'T') {\n window.location.href = $scope.url.dashboard;\n }\n }\n if (vm.accountLength !== null && vm.accountLength.length < 2) {\n if (vm.balanceStorage.billsQuantity < 2) {\n vm.singleAccount = true;\n } else {\n vm.singleAccount = false;\n }\n vm.user = vm.accountLength[0];\n }\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('SuccessPay', SuccessPay);\nSuccessPay.$inject = ['$sce', '$filter', '$scope', 'assetService', 'broadcastService', 'sessionStorageService', 'commongaTaggingService', 'responseNotificationsService', 'getAccountBalanceForRegularAccountService', '$stateParams', 'ccSitecoreGenericCachingService', 'commonService', '$rootScope'];\nfunction SuccessPay($sce, $filter, $scope, assetService, broadcastService, sessionStorageService, commongaTaggingService, responseNotificationsService, getAccountBalanceForRegularAccountService, $stateParams, ccSitecoreGenericCachingService, commonService, $rootScope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.balanceStorage = {};\n vm.accountForPay = {};\n vm.totalAmount = 0;\n vm.lastFourDigits = '';\n vm.bankAccount = '';\n vm.loadingSpinner = true;\n vm.balanceStorage.displayDate = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.formatTotalAmount = formatTotalAmount;\n vm.formatLastFourDigits = formatLastFourDigits;\n vm.virtualPagePush = virtualPagePush;\n\n /* --------------Function Definitions-----------------------*/\n\n function formatTotalAmount(amount, subscript) {\n var formattedAmount = String(amount).split('.');\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n if (subscript) {\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n } else {\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1]));\n }\n }\n function formatLastFourDigits(number) {\n var lastDigits = String(number).slice(12, 16);\n return lastDigits;\n }\n\n // function deleteDataFromSitecoreCache(payload) {\n // return ccSitecoreGenericCachingService\n // .removeFromSitecoreCache(payload)\n // .then(\n // response => response,\n // () => {},\n // );\n // }\n\n // function printData() {\n // window.print();\n // }\n\n function getAccountBalanceForRegularAccount(accountData) {\n vm.loadingSpinner = true;\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(accountData).then(function (result) {\n vm.loadingSpinner = false;\n if (result.getAccountAndBillingInfoResList.length > 0) {\n if (vm.balanceStorage.selectedAccounts.length > 0) {\n vm.balanceStorage.selectedAccounts.forEach(function (index) {\n var contractAccount = index.accountNumber;\n var temp = [];\n temp = result.getAccountAndBillingInfoResList.filter(function (element) {\n return element.contractAccountNumber == contractAccount;\n });\n index.message = temp[0].messageList[0].message;\n index.messagePriority = temp[0].messageList[0].messagePriority;\n });\n }\n }\n }, function (error) {\n vm.loadingSpinner = false;\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n }\n function load() {\n vm.loadingSpinner = true;\n vm.accountNickName = $rootScope.accountNickName === undefined || $rootScope.accountNickName === '' ? 'Account' : $rootScope.accountNickName;\n vm.accountNumber = $rootScope.accountNumber;\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n var currentDate = new Date();\n var currESTDate = currentDate.toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n vm.balanceStorage.displayDate = moment(currESTDate).format('MM/DD/YYYY');\n vm.bankDetails = $rootScope.bankData;\n var selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var accountSelected = selectedAddressData.accountSelected;\n var data = {\n businessPartnerId: accountSelected.relatedBp ? accountSelected.relatedBp : accountSelected.primaryBp,\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber\n };\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n var accountData = {\n accountList: [{\n contractAccountNumber: vm.balanceStorage.globalSelectedAccount.accountNumber\n }]\n };\n var promises = [getAccountBalanceForRegularAccount(accountData)];\n //vm.totalAmount = 0;\n vm.balanceStorage.selectedAccounts.forEach(function (ele) {\n vm.totalAmount = ele.confirmationCode ? ele.totalDonationAmount ? vm.totalAmount + Number(ele.totalDonationAmount) : vm.totalAmount + Number(ele.billAmount) : vm.totalAmount + 0;\n });\n commonService.executePromises(promises).then(function () {\n if (vm.balanceStorage.selectedAccounts) {\n sessionStorageService.set(assetService.events.care, vm.balanceStorage.selectedAccounts[0].accountNumber);\n }\n $rootScope.paymentSpinner = false;\n vm.loadingSpinner = false;\n // deleteDataFromSitecoreCache({ Key: vm.cacheId }).then(\n // result => {},\n // error => {},\n // );\n });\n }\n\n // initialice CARE\n $scope.$on(assetService.events.careLoad, function (event, data) {\n initCare();\n });\n function initCare() {\n if (sessionStorageService.get(assetService.events.care)) {\n broadcastService.care(sessionStorageService.get(assetService.events.care));\n }\n }\n function virtualPagePush() {\n // const arrayElements = Array.prototype.slice.call(arguments);\n // const accountsSelected = $scope.$parent.selectedAccountsAmount;\n // const accountText =\n // accountsSelected === 1 ? 'single account' : 'multiple account';\n // arrayElements.splice(1, 0, accountText);\n // commongaTaggingService.virtualPagePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-inner-declarations */\napp.controller('ActivityShellController', ActivityShellController);\nActivityShellController.$inject = ['apiApigeeConfigService', 'assetService', '$scope', 'sessionStorageService'];\nfunction ActivityShellController(apiApigeeConfigService, assetService, $scope, sessionStorageService) {\n /* -----------------------Scope Vars---------------------------*/\n var globalAccountInfo = {};\n /* -----------------------Global Vars---------------------------*/\n var vm = this;\n\n /* --------------Function Definitions------------------------*/\n function loading(value) {\n vm.loadingSpinner = value;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.loadingSpinner = true;\n load();\n });\n function load() {\n vm.prepaid = globalAccountInfo.hasOwnProperty('accountSelected') ? globalAccountInfo.accountSelected.prepaid : true;\n }\n /* -------------------------Scope On------------------------- */\n /* --------------Function Declarations-----------------------*/\n var init = init;\n\n /* ---------------Initialization-------------------*/\n init = function init() {};\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-inner-declarations */\napp.controller('BalanceActivityController', BalanceActivityController);\nBalanceActivityController.$inject = ['apiApigeeConfigService', 'assetService', '$scope', 'sessionStorageService', 'balanceActivityService', 'dateHelperService', 'BPACSVService', 'prepaidService', 'commongaTaggingService', 'commonService', 'componentStateHandler', 'getPaymentHistoryService'];\nfunction BalanceActivityController(apiApigeeConfigService, assetService, $scope, sessionStorageService, balanceActivityService, dateHelperService, bpacsvService, prepaidService, commongaTaggingService, commonService, componentStateHandler, getPaymentHistoryService) {\n /* -----------------------Scope Vars---------------------------*/\n\n /* -----------------------Global Vars---------------------------*/\n var vm = this;\n vm.init = init;\n var pageCase = 'balance';\n var globalAccountInfo = {};\n var fileName = prepaidService.strings.ExportedData;\n var globalSelectedAccount = {};\n var _dailyUsage = prepaidService.strings.DAILY_USAGE;\n var _payment = prepaidService.strings.PAYMENT;\n var _pending = prepaidService.strings.PENDING;\n vm.loadingSpinner = true;\n var noOfDays = '365';\n vm.attributePush = attributePush;\n vm.taggingElements = {\n workflow: '',\n headline: '',\n buttonText: '',\n addedSpec: ''\n };\n vm.balanceActivity = {\n dailyUsage: [],\n payment: [],\n paymentFees: [],\n fullPayment: []\n };\n vm.dropdownOptions = [{\n value: '',\n text: assetService.strings.TEXT_ALLACTIVITY\n }, {\n text: _dailyUsage,\n value: _dailyUsage\n }, {\n text: _payment,\n value: _payment\n }];\n vm.minusTableHeaders = [{\n column: assetService.strings.DATE,\n sortAsc: true\n }, {\n column: assetService.strings.TYPE,\n sortAsc: true\n }, {\n column: assetService.strings.AMOUNT,\n sortAsc: true\n }];\n vm.keyDates = [];\n vm.usageDates = [];\n vm.payDates = [];\n vm.lastDate = 0;\n vm.dateLis = [];\n vm.limit = 7;\n vm.activitiesLimit = 7; // Initial displayed rows in Table\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\n vm.orderPos = 0;\n vm.sortAsc = true;\n vm.filteredByCategory = '';\n vm.filterName = '';\n vm.showPrevWeek = false;\n vm.workFlow = '';\n vm.headline = '';\n vm.buttonText = '';\n var dailyUsageDetails = null;\n var paymentHistoryDetails = null;\n var paymentDetails = null;\n\n /* Function definitions */\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function loading(value) {\n vm.loadingSpinner = value;\n }\n function sortByColumn(value) {\n vm.orderBy = vm.minusTableHeaders[value].column;\n vm.orderPos = value;\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\n }\n function activateDetails(item) {\n item.active = !item.active;\n }\n function load() {\n loading(true);\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.prepaid = globalAccountInfo.hasOwnProperty('accountSelected') ? globalAccountInfo.prepaid : true;\n var balanceActivityRequest = {\n contractAccountId: vm.contractAccountId,\n prepaid: vm.prepaid,\n numberOfDays: noOfDays\n };\n commonService.executePromises([getPaymentHistory({\n businessPartner: _globalAccountInfo.bpNumber,\n contractAccountId: _globalAccountInfo.accountSelected.accountNum\n }), getBalanceActivity({\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n numberOfDays: noOfDays\n })]).then(function (result) {\n setModels();\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function setModels() {\n //populate daily usage\n if (dailyUsageDetails) {\n vm.balanceActivity.dailyUsage = _.map(dailyUsageDetails, function (item) {\n return {\n type: _dailyUsage,\n dailyElectricUsage: Math.trunc(item.TotalKwh),\n dailyElectricCost: item.DailyUsageAmount,\n date: moment(item.ToDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(item.ToDateStr).toDate(),\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\n amount: item.DailyUsageAmount,\n pendingText: ''\n };\n });\n }\n\n // Populate Payment fees details\n if (paymentDetails) {\n paymentDetails.forEach(function (paymentDetailsFees) {\n if (paymentDetailsFees.Description === 'RETURN_CHECK_FEE' || paymentDetailsFees.Description === 'LATE_PAYMENT_FEE' || paymentDetailsFees.Description === 'NEW_SERVICE_FEE') {\n var paymentItemFees = {\n type: _payment,\n status: paymentDetailsFees.Description,\n confirmationNumber: '',\n date: moment(paymentDetailsFees.PostingDate).format('MM/DD/YYYY'),\n dateForSort: moment(paymentDetailsFees.PostingDate).toDate(),\n paymentMetod: '',\n amount: parseFloat(paymentDetailsFees.Amount)\n };\n vm.balanceActivity.paymentFees.push(paymentItemFees);\n }\n });\n }\n\n //populate payment history\n if (paymentHistoryDetails) {\n paymentHistoryDetails.forEach(function (paymentHistory) {\n if (paymentHistory.Payment_Status === 'PENDING' || paymentHistory.Payment_Status === 'COMPLETED' || paymentHistory.Payment_Status === 'RETURNED') {\n var paymentItem = {\n type: _payment,\n status: paymentHistory.Payment_Status,\n confirmationNumber: paymentHistory.Confirmation_Code,\n date: moment(paymentHistory.PaymentDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(paymentHistory.PaymentDateStr).toDate(),\n paymentMetod: paymentHistory.Payment_Method,\n payment: paymentHistory.Payment_Amount,\n deferredBalance: 0,\n amount: parseFloat(paymentHistory.Payment_Amount),\n pendingText: paymentHistory.Payment_Status === 'PENDING' ? _pending : ''\n };\n vm.balanceActivity.payment.push(paymentItem);\n }\n });\n }\n var dataToMerge = [vm.balanceActivity.dailyUsage, vm.balanceActivity.payment, vm.balanceActivity.paymentFees];\n vm.balance = _.spread(_.union)(dataToMerge);\n vm.balance.forEach(function (element) {\n var numberOfWeek = dateHelperService.getWeekNumber(element.date);\n var year = new Date(element.date).getFullYear();\n element.dateId = year * 100 + numberOfWeek;\n });\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(function (activity) {\n return activity.dateId;\n });\n vm.dateLis.sort(function (first, second) {\n return second - first;\n });\n vm.filterWeek();\n loading(false);\n }\n function getBalanceActivity(request) {\n return balanceActivityService.sitecore.balanceActivity(request).then(function (result) {\n dailyUsageDetails = result.d.Balactivitytodailyusage.results;\n paymentDetails = result.d.BalActivityToCharges_Nav.results;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function getPaymentHistory(request) {\n return getPaymentHistoryService.sitecore.getPaymentHistory(request).then(function (result) {\n paymentHistoryDetails = result.d.Req_Inp.results[0].Inp_Res.results;\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function exportCSV() {\n if (vm.filteredByCategory == '') {\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'addedSpec:' + $('#hdn-dd').attr('subhead'), 'buttonText:' + $('#hdn-dd').attr('button'));\n } else {\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'addedSpec:' + $('#hdn-dd').attr('subhead'), 'buttonText:' + vm.filterName);\n }\n var sortedData = vm.balanceList.slice().sort(function (a, b) {\n return b.dateForSort - a.dateForSort;\n });\n bpacsvService.exportToCSV(pageCase, sortedData, fileName);\n }\n function printData() {\n if (vm.filteredByCategory == '') {\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'addedSpec:' + $('#hdn-dd').attr('subhead2'), 'buttonText:' + $('#hdn-dd').attr('button'));\n } else {\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'addedSpec:' + $('#hdn-dd').attr('subhead2'), 'buttonText:' + vm.filterName);\n }\n window.print();\n }\n function filterWeek() {\n vm.balanceActivity.fullPayment = _.filter(vm.balance, function (element) {\n return element.type === 'Payment';\n });\n vm.usageDateLis = _.uniq(vm.balanceActivity.dailyUsage, assetService.strings.dateId).map(function (activity) {\n return activity.dateId;\n });\n vm.usageDateLis.sort(function (first, second) {\n return second - first;\n });\n vm.usageDateList = _.uniq(vm.usageDateLis);\n vm.payDateLis = _.uniq(vm.balanceActivity.fullPayment, assetService.strings.dateId).map(function (activity) {\n return activity.dateId;\n });\n vm.payDateLis.sort(function (first, second) {\n return second - first;\n });\n vm.payDateList = _.uniq(vm.payDateLis);\n vm.dateList = _.uniq(vm.dateLis);\n if (vm.filterName === '' || vm.filterName === 'All Activity') {\n if (vm.keyDates.length < vm.dateList.length) {\n vm.keyDates.push(vm.dateList[vm.keyDates.length]);\n vm.balanceList = _.filter(vm.balance, function (actvity) {\n var find = false;\n vm.keyDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.activitiesLimit = vm.balanceList.length;\n vm.fullList = vm.dateList;\n vm.presentList = vm.keyDates;\n }\n } else if (vm.filterName && vm.filterName === 'Daily Usage') {\n if (vm.usageDates.length < vm.usageDateList.length) {\n vm.usageDates.push(vm.usageDateList[vm.usageDates.length]);\n vm.balanceList = _.filter(vm.balanceActivity.dailyUsage, function (actvity) {\n var find = false;\n vm.usageDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.activitiesLimit = vm.balanceList.length;\n vm.onlyUsageList = vm.balanceList;\n vm.fullList = vm.balanceActivity.dailyUsage;\n vm.presentList = vm.onlyUsageList;\n }\n } else if (vm.filterName && vm.filterName === 'Payment') {\n if (vm.payDates.length < vm.payDateList.length) {\n vm.payDates.push(vm.payDateList[vm.payDates.length]);\n vm.balanceList = _.filter(vm.balanceActivity.fullPayment, function (actvity) {\n var find = false;\n vm.payDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.activitiesLimit = vm.balanceList.length;\n vm.onlyPaymentList = vm.balanceList;\n vm.fullList = vm.balanceActivity.fullPayment;\n vm.presentList = vm.onlyPaymentList;\n }\n }\n }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.loadingSpinner = true;\n load();\n });\n $scope.$on('dropdown', function (index, data) {\n vm.filterName = data.valueName;\n attributePush('workFlow:' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'buttonText:' + vm.taggingElements.buttonText, 'addedSpec:' + data.valueName);\n vm.filteredByCategory = data.value;\n if (vm.filterName && vm.filterName === 'Daily Usage') {\n vm.balanceList = [];\n vm.usageDates = [];\n vm.usageDates.push(vm.usageDateList[0]);\n vm.balanceList = _.filter(vm.balanceActivity.dailyUsage, function (actvity) {\n var find = false;\n vm.usageDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.usages = vm.balanceList;\n vm.fullList = vm.balanceActivity.dailyUsage;\n vm.presentList = vm.usages;\n } else if (vm.filterName && vm.filterName === 'Payment') {\n vm.balanceList = [];\n vm.payDates = [];\n vm.payDates.push(vm.payDateList[0]);\n vm.balanceList = _.filter(vm.balanceActivity.fullPayment, function (actvity) {\n var find = false;\n vm.payDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.payments = vm.balanceList;\n vm.fullList = vm.balanceActivity.fullPayment;\n vm.presentList = vm.payments;\n } else {\n vm.balanceList = [];\n vm.keyDates = [];\n vm.keyDates.push(vm.dateList[0]);\n vm.balanceList = _.filter(vm.balance, function (actvity) {\n var find = false;\n vm.keyDates.forEach(function (element) {\n if (!find) find = actvity.dateId === element;\n });\n return find;\n });\n vm.fullList = vm.dateList;\n vm.presentList = vm.keyDates;\n }\n });\n\n /* --------------Function Declarations-----------------------*/\n\n vm.activateDetails = activateDetails;\n vm.sortByColumn = sortByColumn;\n vm.filterWeek = filterWeek;\n vm.exportCSV = exportCSV;\n vm.printData = printData;\n\n /* ---------------Initialization-------------------*/\n function populateGATagging(obj) {\n vm.workFlow = obj.workFlow;\n vm.headline = obj.headline;\n vm.buttonText = obj.buttonText;\n }\n function balanceActivity(dataObj) {\n return balanceActivityService.sitecore.balanceActivity(dataObj).then(function (result) {\n if (result) {\n vm.balanceActivity.dailyUsage = _.map(result.d.Balactivitytodailyusage.results, function (item) {\n return {\n type: _dailyUsage,\n dailyElectricUsage: Math.trunc(item.TotalKwh),\n dailyElectricCost: item.DailyUsageAmount,\n date: moment(item.FromDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(item.FromDateStr).toDate(),\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\n amount: item.DailyUsageAmount\n };\n });\n vm.balanceActivity.payment = _.map(result.d.Balactivitytopaymenthistory.results, function (item) {\n return {\n type: _payment,\n confirmationNumber: prepaidService.strings.MOCK_CONF_NUM,\n date: moment(item.PaymentDateStr).format('MM/DD/YYYY'),\n dateForSort: moment(item.PaymentDateStr).toDate(),\n paymentMetod: prepaidService.strings.MOCK_PAYMENT_METOD,\n payment: item.PrepaidAmount,\n deferredBalance: item.DeferredAmount,\n amount: parseFloat(item.PrepaidAmount) + parseFloat(item.DeferredAmount)\n };\n });\n var dataToMerge = [vm.balanceActivity.dailyUsage, vm.balanceActivity.payment];\n vm.balance = _.spread(_.union)(dataToMerge);\n vm.balance.forEach(function (element) {\n var numberOfWeek = dateHelperService.getWeekNumber(element.date);\n var year = new Date(element.date).getFullYear();\n element.dateId = year * 100 + numberOfWeek;\n });\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(function (activity) {\n return activity.dateId;\n });\n vm.dateLis.sort(function (first, second) {\n return second - first;\n });\n vm.filterWeek();\n loading(false);\n }\n });\n }\n function init(workflow, headline, buttonText, addedSpec) {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.taggingElements.workflow = workflow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.buttonText = buttonText;\n vm.taggingElements.addedSpec = addedSpec;\n load();\n }\n\n //init();\n}\napp.controller('BillingAndPaymentActivityController', BillingAndPaymentActivityController);\nBillingAndPaymentActivityController.$inject = ['$log', '$scope', '$window', 'assetService', 'BPACSVService', 'commonService', 'getLoggedInUserDetailsService', 'invoiceImageService', 'invoiceTransformImageService', 'getInvoiceDetailsService', 'getInvoiceListService', 'getPaymentHistoryService', 'modalService', 'sessionStorageService', 'accountSearchService', 'getAccountBalanceForRegularAccountService', 'commongaTaggingService', 'ccBPAInvoiceSelectorService', '$rootScope', '$timeout', 'getBillingSummaryService'];\nfunction BillingAndPaymentActivityController($log, $scope, $window, assetService, bpacsvService, commonService, getLoggedInUserDetailsService, invoiceImageService, invoiceTransformImageService, getInvoiceDetailsService, getInvoiceListService, getPaymentHistoryService, modalService, sessionStorageService, accountSearchService, getAccountBalanceForRegularAccountService, commongaTaggingService, ccBPAInvoiceSelectorService, $rootScope, $timeout, getBillingSummaryService) {\n /* -----------------------Scope Vars---------------------------*/\n var dataObj = {};\n var dueDate = assetService.strings.SORTBY_DATEFORSORT;\n var fileName = 'ExportedData';\n var bpName = '';\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var globalSelectedAccountEmail = '';\n var invoiceDetailsData = [];\n var invoiceListData = [];\n var invoiceCommonListData = [];\n var mergedData = [];\n var pageCase = 'bill';\n var paramObj = {};\n var paymentsData = [];\n var paymentsListData = [];\n var invoiceListDataModified = [];\n var paymentDescription = {};\n var windowReference = null;\n var isSafari = navigator.vendor.match(/apple/i) && !navigator.userAgent.match(/crios/i) && !navigator.userAgent.match(/fxios/i) && !navigator.userAgent.match(/Opera|OPT\\//);\n\n /* -----------------------Global Vars---------------------------*/\n var vm = this;\n vm.init = init;\n vm.paymentMethod = [];\n vm.accountSearch = {};\n vm.activeDetails = [];\n vm.activeError = [];\n vm.currentUser = {};\n vm.contractAccountId = null;\n vm.emptyState = false;\n vm.dropdownOptions = [{\n value: '',\n text: assetService.strings.TEXT_ALLACTIVITY\n }, {\n value: assetService.strings.TYPE_BILL,\n text: assetService.strings.TEXT_BILLS\n }, {\n value: assetService.strings.TYPE_PAYMENT,\n text: assetService.strings.TEXT_PAYMENTS\n }];\n vm.filteredByCategory = '';\n vm.limit = 13; // Initial displayed rows in Table\n vm.loadingSpinner = true;\n vm.mergedData = null;\n vm.minusTableHeaders = [{\n column: assetService.strings.SORTBY_DATEFORSORT,\n sortAsc: true\n }, {\n column: assetService.strings.SORTBY_DESC,\n sortAsc: true\n }, {\n column: assetService.strings.SORTBY_DUEAMOUNT,\n sortAsc: true\n }];\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\n vm.orderPos = 0;\n vm.sortAsc = true;\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.hasGasAccount = false;\n vm.hasElectricMeter = false;\n vm.editPayment = editPayment;\n vm.cancelPayment = cancelPayment;\n vm.editOnetimePayment = editOnetimePayment;\n vm.cancelOnetimePayment = cancelOnetimePayment;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.hideAccount = hideAccount;\n vm.closeToast = closeToast;\n vm.showEditPaymentToastEvents = showEditPaymentToastEvents;\n vm.showToast = false;\n vm.contributionProgram = [];\n vm.data = {\n messageOption: '',\n //vm.sessionData.messageOption;\n option: '',\n //vm.sessionData.option;\n show: ''\n };\n vm.dropdownSelected = assetService.strings.TEXT_ALLACTIVITY;\n vm.isClosed = false;\n var _fadeInOut = assetService.strings.FADEINOUT;\n /* --------------Function Definitions------------------------*/\n function loading(value) {\n vm.loadingSpinner = value;\n }\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function hasUsage() {\n vm.hasGasAccount = globalSelectedAccount.isGasAccount ? true : false;\n vm.hasElectricMeter = globalSelectedAccount.isElectricMeter ? true : false;\n vm.isClosed = globalSelectedAccount.status == 'Closed' ? true : false;\n }\n function closeToast() {\n vm.data.show = 'fade-out';\n vm.showToast = false;\n }\n function editPayment(index) {\n var itemId = vm.mergedData[index].itemId;\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment, 'billingAndPaymentAcivity');\n }\n function cancelPayment(index) {\n var itemId = vm.mergedData[index].itemId;\n var contractAccountID = vm.contractAccountId;\n var businessPartnerId = vm.businessPartnerId;\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment, itemId);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.contractAccountID, contractAccountID);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.businessPartnerId, businessPartnerId);\n modalService.cancelPayment();\n }\n function editOnetimePayment(item) {\n var itemId = item;\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment, itemId);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.editScheduledPayment, item);\n }\n function cancelOnetimePayment(item) {\n var itemId = item.itemId;\n var contractAccountID = vm.contractAccountId;\n var businessPartnerId = vm.businessPartnerId;\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment, itemId);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.contractAccountID, contractAccountID);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.businessPartnerId, businessPartnerId);\n ccBPAInvoiceSelectorService.setInvoiceObject(item);\n modalService.cancelOnetimePayment();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function viewBillAttributePush() {\n //let subheadlineValue = 'view-bill-|-bill-generated-successfully';\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'buttonText:' + $('#hdn-dd').attr('labelPDF'));\n }\n function pdfNotFoundAttibutePush() {\n attributePush('workFlow:' + $('#hdn-dd').attr('eventCategoryPDF'), 'headline:' + $('#hdn-dd').attr('businessFunction'), 'subheadline:' + $('#hdn-dd').attr('labelPDF'), 'buttonText:' + 'not-set', 'addedSpec:' + assetService.sitecoreEndpoints.InvoiceImage, 'addedEvent:' + $('#hdn-dd').attr('eventActionPDF'));\n virtualPagePush($('#hdn-dd').attr('businessFunction'), $('#hdn-dd').attr('businessFunction'), $('#hdn-dd').attr('labelPDF'), 'error', 'not set');\n }\n function emptyPageAttibutePush() {\n attributePush('headline:' + $('#hdn-dd').attr('eventCategoryLoad'), 'workFlow:' + $('#hdn-dd').attr('businessFunction'), 'subheadline:' + $('#hdn-dd').attr('evenActionLoad'));\n }\n function sortByColumn(value) {\n vm.orderBy = vm.minusTableHeaders[value].column;\n vm.orderPos = value;\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\n }\n function showError(value, rule) {\n if (rule !== 0) {\n vm.activeError[value] = true;\n } else {\n for (var index = 0; index < vm.activeError.length; index++) {\n vm.activeError[index] = false;\n }\n }\n }\n function activateDetails(item) {\n vm.mergedData.forEach(function (data) {\n data.active = data != item ? false : item.active;\n });\n if (!item.active) {\n if (item.type === assetService.strings.TYPE_BILL) {\n dataObj.invoiceId = item.itemId;\n var detailsPromise = [getDetails(dataObj)];\n commonService.executePromises(detailsPromise).then(function () {\n elemDetails = invoiceDetailsData;\n // invoiceDetailsData.forEach(elemDetails => {\n item.prevAmountDue = Number(elemDetails.PastDueAmt);\n item.paymentReceived = Number(elemDetails.PaymentRecieved);\n item.currentCharges = Number(elemDetails.CurrentCharges);\n item.totalAmountDue = Number(invoiceCommonListData[0].totalAmountDue);\n item.totalElectricUsage = Number(elemDetails.TotalKwhqt);\n item.avgDailyElectricCost = Number(elemDetails.DailyKwhCost);\n item.totalGasUsage = Number(elemDetails.TotCcfqt);\n item.avgDailyGasCost = Number(elemDetails.DailyCcfCost);\n // });\n });\n }\n }\n item.active = !item.active;\n }\n function getDetails(dataObj) {\n return getBillingSummaryService.sitecore.getBillingSummary(dataObj).then(function (result) {\n invoiceCommonListData = invoiceListData.filter(function (listElement) {\n return listElement.itemId == dataObj.invoiceId;\n });\n paymentsListData = paymentsData.filter(function (payments) {\n return payments.dueAmount == invoiceCommonListData[0].dueAmount;\n });\n invoiceDetailsData = _.map(result.d.InvoiceDetails, function (details) {\n return {\n active: true,\n invID: details.InvoiceId,\n prevAmountDue: details.PastDueAmt ? Number(details.PastDueAmt) : '',\n // Waiting to be added to the JSON response\n paymentReceived: details.PaymentRecieved ? Number(details.PaymentRecieved) : '',\n // Waiting to be added to the JSON response\n currentCharges: details.CurrentCharges ? Number(details.CurrentCharges) : '',\n totalAmountDue: invoiceCommonListData[0].totalAmountDue ? Number(invoiceCommonListData[0].totalAmountDue) : '',\n // Waiting to be added to the JSON response\n totalElectricUsage: details.TotalKwhqt,\n avgDailyElectricCost: details.DailyKwhCost,\n totalGasUsage: details.TotCcfqt,\n avgDailyGasCost: details.DailyCcfCost\n // ...details, //Checking if is necesary to attach the whole info.\n };\n });\n invoiceDetailsData = result.d.InvoiceDetails;\n });\n }\n function printData() {\n var attributeElement = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(attributeElement);\n window.print();\n }\n function BPToExport(mergedData) {\n vm.loadingSpinner = true;\n var mergedBillData = _.filter(mergedData, function (item) {\n if (item.type === assetService.strings.TYPE_BILL) {\n return item;\n }\n });\n var counter = 0;\n mergedData.forEach(function (elem, index) {\n if (elem.type === assetService.strings.TYPE_BILL) {\n dataObj.invoiceId = elem.itemId;\n return getBillingSummaryService.sitecore.getBillingSummary(dataObj).then(function (result) {\n var elemDetails = result.d.InvoiceDetails;\n elem.totalElectricUsage = Number(elemDetails.TotalKwhqt);\n elem.avgDailyElectricCost = Number(elemDetails.DailyKwhCost);\n elem.totalGasUsage = Number(elemDetails.TotCcfqt);\n elem.avgDailyGasCost = Number(elemDetails.DailyCcfCost);\n elem.currentCharges = Number(elemDetails.CurrentCharges);\n elem.prevAmountDue = Number(elemDetails.PastDueAmt);\n elem.paymentReceived = Number(elemDetails.PaymentRecieved);\n if (counter == mergedBillData.length - 1) {\n if (!globalSelectedAccount.prepaid) {\n var dataToMerge = [invoiceListData, paymentsData];\n mergedData = _.spread(_.union)(dataToMerge);\n vm.mergedData = _.orderBy(mergedData, [dueDate], ['desc', 'asc']);\n } else {\n vm.mergedData = _.orderBy(paymentsData, [dueDate], ['desc', 'asc']);\n }\n $timeout(function () {\n vm.loadingSpinner = false;\n bpacsvService.exportToCSV(pageCase, vm.mergedData, fileName, vm.contributionProgram[0]);\n }, 1000);\n }\n counter = counter + 1;\n });\n }\n });\n }\n function hideAccount(value) {\n var convertedValue = value;\n if (convertedValue && !isNaN(convertedValue)) {\n var stringLength = convertedValue.length,\n visibleDigits = 4;\n if (stringLength > visibleDigits) {\n convertedValue = convertedValue.slice(-visibleDigits);\n }\n convertedValue = \"*****\".concat(convertedValue);\n }\n return convertedValue;\n }\n function load() {\n $window.scrollTo(0, 0);\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment, 'billing-And-Payment-Acivity');\n vm.contractAccountId = globalAccountInfo.hasOwnProperty('accountSelected') ? globalSelectedAccount.accountNum : '';\n var relatedBPInSession = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n vm.zipCode = globalAccountInfo.hasOwnProperty('accountSelected') ? globalAccountInfo.accountSelected.zipCode : '';\n if (globalAccountInfo.accountSelected && globalAccountInfo.accountSelected.relatedBP) vm.businessPartnerId = globalAccountInfo.accountSelected.relatedBP;else if (relatedBPInSession) vm.businessPartnerId = relatedBPInSession;else {\n console.warn('[WARNING] Related BP is unavailable. Using primary BP.');\n vm.businessPartnerId = globalAccountInfo.hasOwnProperty('accountSelected') ? globalSelectedAccount.bpNumber : '';\n }\n vm.EmailID = globalSelectedAccountEmail;\n dataObj = {\n contractAccountId: vm.contractAccountId,\n businessPartner: vm.businessPartnerId,\n invoiceId: null,\n EmailID: vm.EmailID,\n userId: vm.currentUser.cdpId,\n requestedBy: vm.currentUser.emailId,\n //Get RequestedBy Value\n zipCode: vm.zipCode\n };\n getRole();\n var promises = [getBills(), getPayments(), getAccountBalance({\n accountList: [{\n contractAccountNumber: dataObj.contractAccountId,\n zipCode: dataObj.zipCode\n }]\n }), accountSearch()];\n commonService.executePromises(promises).then(function () {\n if (!globalSelectedAccount.prepaid) {\n var dataToMerge = [invoiceListData, paymentsData];\n mergedData = _.spread(_.union)(dataToMerge);\n vm.mergedData = _.orderBy(mergedData, [dueDate], ['desc', 'asc']);\n } else {\n vm.mergedData = _.orderBy(paymentsData, [dueDate], ['desc', 'asc']);\n }\n if (vm.mergedData.length === 0) {\n vm.emptyState = true;\n emptyPageAttibutePush();\n } else {\n vm.emptyState = false;\n }\n vm.allActivityData = vm.mergedData;\n hasUsage();\n loading(false);\n });\n }\n function showPDFModal() {\n pdfNotFoundAttibutePush();\n modalService.pdfNotFound();\n }\n function accountSearch() {\n return accountSearchService.sitecore.cacheAccountSearch({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.accountSearch = {\n installationNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].InstallationNumber,\n meterNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].MeterNumber,\n meterType: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].MeterType,\n division: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].Division\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getAccountBalance(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n if (result.getAccountAndBillingInfoResList[0].messageList.length > 0 && result.getAccountAndBillingInfoResList[0].messageList[0].messageCode !== '80 ' && result.getAccountAndBillingInfoResList[0].messageList[0].messageCode !== 'PO') {\n var response = _.map(result.getAccountAndBillingInfoResList[0].messageList, function (msg) {\n return {\n displayCPIMessage: true,\n message: msg.message\n };\n });\n vm.displayCPIMessage = response[0].displayCPIMessage;\n vm.message = response[0].message;\n }\n var accountSelected = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == globalAccountInfo.accountSelected.accountNum;\n });\n var infoResList = accountSelected[0];\n var _dueAmount = infoResList.totalDueDlrs ? infoResList.totalDueDlrs : '0.00';\n sessionStorageService.set('fullDueAmount', _dueAmount);\n bpName = result.getAccountAndBillingInfoResList[0].businessCustName;\n vm.paynowStatus = result.getAccountAndBillingInfoResList[0].cashOnly === 'T' ? false : true;\n return _dueAmount;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getDocument(item) {\n if (isSafari) {\n windowReference = window.open();\n windowReference.document.body.innerHTML = 'Please wait...';\n }\n var invoiceId = item.archieveId;\n paramObj = {\n documentNumber: invoiceId\n };\n return invoiceImageService.sitecore.invoceImage(paramObj).then(function (result) {\n if (result && result.MessageReply && result.MessageReply.replyCode && result.MessageReply.replyCode != '') {\n var hexValue = result.MessageReply.replyCode;\n if (hexValue && item.isImageAvailable) {\n var hexToBase64 = function hexToBase64(str) {\n return btoa(str.match(/\\w{2}/g).map(function (a) {\n return String.fromCharCode(parseInt(a, 16));\n }).join(''));\n };\n var base64Value = hexToBase64(hexValue);\n var byteCharacters = atob(base64Value);\n var byteNumbers = new Array(byteCharacters.length);\n for (var i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n var byteArray = new Uint8Array(byteNumbers);\n var file = new Blob([byteArray], {\n type: 'application/pdf'\n });\n var fileURL = URL.createObjectURL(file);\n viewBillAttributePush();\n if (isSafari) {\n windowReference.location = fileURL;\n } else {\n window.open(fileURL);\n }\n }\n //viewBillAttributePush();\n } else {\n if (isSafari) {\n windowReference.close();\n }\n showPDFModal();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function getBills() {\n return getInvoiceListService.sitecore.getInvoiceList(dataObj).then(function (result) {\n invoiceListData = _.map(result.d.Inp_Req.results[0].Account_Invoice.results, function (invoice) {\n return {\n itemId: invoice.InvId,\n archieveId: invoice.InvArchieveId,\n active: false,\n payBillVisible: false,\n dateForSort: invoice.InvDateStr,\n dueDate: moment(invoice.InvDateStr).format('MM/DD/YY'),\n type: assetService.strings.TYPE_BILL,\n description: \"\".concat(moment(invoice.BillStartDate).utc().format('MMM DD'), \" to \").concat(moment(invoice.BillEndDate).utc().format('MMM DD'), \" Bill (\").concat(invoice.BillDays, \"Days)\"),\n // Blocked, waiting to be added to the JSON response\n dueAmount: Number(invoice.InvAmt),\n errorFlag: invoice.PastDueFlg,\n // Details to be reassigned on next GET DETAILS\n prevAmountDue: Number(invoice.PastDueAmt),\n //pastamountdue\n paymentReceived: -Number(invoice.TotalAmount),\n currentCharges: Number(invoice.Charges),\n totalAmountDue: Number(invoice.InvAmt),\n totalElectricUsage: Number(invoice.totalElectricUsage),\n avgDailyElectricCost: Number(invoice.avgDailyElectricCost),\n totalGasUsage: Number(invoice.totalGasUsage),\n avgDailyGasCost: Number(invoice.avgDailyGasCost),\n bpName: vm.currentUser.emailId,\n accountNumber: globalSelectedAccount.accountNum,\n address: globalAccountInfo.accountSelected.address,\n billDays: Number(invoice.BillDays),\n billDate: \"\".concat(moment(invoice.BillStartDate).utc().format('MMM DD'), \" to \").concat(moment(invoice.BillEndDate).utc().format('MMM DD')),\n isImageAvailable: invoice.IsImageAvlbl\n\n //totalAmountPaid : Number(invoice.totalAmountPaid)\n // ...invoice, //Checking if is necesary to attach the whole info.\n };\n });\n if (invoiceListData.length > 0) {\n invoiceListDataModified = invoiceListData;\n invoiceListDataModified = _.orderBy(invoiceListDataModified, [dueDate], ['desc', 'asc']);\n invoiceListDataModified[0].payBillVisible = true;\n invoiceListData = invoiceListDataModified;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function exportCSV() {\n BPToExport(invoiceListData);\n }\n function getPayments() {\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(function (result) {\n paymentsData = _.map(result.d.Req_Inp.results[0].Inp_Res.results, function (payment) {\n return {\n itemId: payment.Payment_Doc,\n active: false,\n dateForSort: payment.Payment_Status == 'SCHEDULED' ? payment.Payment_Due_Date : payment.Payment_Date,\n paymentDateLabel: payment.Payment_Status == 'SCHEDULED' ? 'Payment Created:' : 'Payment Date:',\n paymentDate: payment.Payment_Status == 'SCHEDULED' ? moment(payment.Payment_Due_Date).utc().format('MM/DD/YY') : moment(payment.Payment_Date).utc().format('MM/DD/YY'),\n dueDate: payment.Payment_Status == 'SCHEDULED' ? moment(payment.Payment_Due_Date).utc().format('MM/DD/YY') : moment(payment.Payment_Date).utc().format('MM/DD/YY'),\n // Same as paymentDate\n type: assetService.strings.TYPE_PAYMENT,\n description: payment.Payment_Desc ? \"\".concat(payment.Payment_Desc) : '',\n dueAmount: payment.Payment_Status == 'RETURNED' ? Number(payment.Payment_Amount) : -Number(payment.Payment_Amount),\n // Same as paymentAmount\n confirmNumber: payment.Confirmation_Code,\n paymentMethod: paymentDescription[payment.Payment_Method] ? paymentDescription[payment.Payment_Method] : '',\n routingNumber: payment.Routing_No,\n accountNumber: payment.Payment_Account ? \"- Bank Account \".concat(hideAccount(payment.Payment_Account)) : '',\n accountNumberExpand: payment.Payment_Account,\n paymentStatus: payment.Payment_Status,\n contributionMethod: payment.ContributionProg,\n energyNeighborFund: payment.ContributionAmount,\n isConrtributionEligible: payment.ContributionProg && payment.ContributionAmount ? true : false,\n totalAmountPaid: payment.Payment_Amount,\n kubra: payment.Confirmation_Code !== '' ? true : false,\n oneTimePayment: payment.Confirmation_Code && payment.Payment_Status == 'SCHEDULED' ? true : false,\n excludedContributionAmount: payment.ExcludedContributionAmount,\n contributionStatus: payment.ContributionAmount !== '' ? true : false\n // ...payment, //Checking if is necesary to attach the whole info.\n };\n });\n if (paymentsData) {\n paymentsData.forEach(function (item) {\n if (item.dateForSort && _.includes(item.dateForSort, \"/Date(\")) {\n var dateString = item.dateForSort.substring(6);\n var currentTime = new Date(parseInt(dateString));\n var month = currentTime.getMonth() + 1;\n var day = currentTime.getDate() + 1;\n var year = currentTime.getFullYear();\n if (day && day === 32) {\n day = 01;\n month = month + 1;\n if (month && month === 13) {\n month = 01;\n year = year + 1;\n }\n }\n var date = month + \"/\" + day + \"/\" + year;\n var getTheDate = moment(date).utc().format('YYYY-MM-DD');\n item.dateForSort = getTheDate;\n }\n });\n }\n vm.contributionProgram = _.filter(paymentsData, function (item) {\n if (item.isConrtributionEligible) {\n return item.contributionMethod;\n }\n });\n paymentsData = _.filter(paymentsData, function (item) {\n if (item.paymentStatus != 'CANCELLED') {\n return item;\n }\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n // function showEditPaymentToast() {\n // if (vm.fromEditScheduledpayment) {\n // if (vm.data.option == 'success') {\n // setTimeout(function() {\n // vm.data.show = 'fade-out';\n // vm.showToast = false;\n // vm.fromEditScheduledpayment = false;\n // sessionStorageService.set(\n // assetService.storageKeys.billingAndPaymentActivity.showToast,\n // false,\n // );\n // }, 12000);\n // }\n // }\n // }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on('dropdown', function (index, data) {\n vm.dropdownSelected = data.valueName;\n vm.filteredByCategory = data.value;\n vm.limit = 13;\n attributePush('workFlow:' + $('#hdn-dd').attr('businessFunction'), 'headline:' + $('#hdn-dd').attr('headLine'), 'addedSpec:' + data.valueName, 'buttonText:' + $('#hdn-dd').attr('addedSpec'));\n if (data && data.valueName && data.valueName === 'Bills') {\n vm.mergedData = invoiceListData;\n } else if (data && data.valueName && data.valueName === 'Payments') {\n vm.mergedData = paymentsData;\n } else {\n vm.mergedData = vm.allActivityData;\n }\n //showToast();\n });\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\n }\n vm.loadingSpinner = true;\n init();\n });\n function showEditPaymentToastEvents() {\n var windowTitle = document.title;\n if (vm.data.option == 'success') {\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + windowTitle);\n virtualPagePush('toast-notification', windowTitle, vm.data.messageOption, 'impression', vm.data.option);\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = 'fade-out';\n vm.showToast = false;\n }, 12000);\n } else if (vm.data.option == 'error') {\n vm.showToast = true;\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + windowTitle);\n virtualPagePush('toast-notification', windowTitle, vm.data.messageOption, 'impression', vm.data.option);\n }\n }\n $scope.$on(assetService.events.reloadBillingAndPaymentAct, function () {\n vm.loadingSpinner = true;\n vm.fromCancelpayment = true;\n vm.fromCancelOnetimepayment = true;\n var windowTitle = document.title;\n init();\n if (vm.data.option == 'success') {\n attributePush('workFlow:' + $('#hdn-toast').attr('businessFunction'), 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + windowTitle);\n virtualPagePush($('#hdn-toast').attr('businessFunction'), windowTitle, vm.data.messageOption, 'impression', vm.data.option);\n setTimeout(function () {\n //document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\n vm.data.show = 'fade-out';\n vm.showToast = false;\n }, 12000);\n } else if (vm.data.option == 'error') {\n vm.showToast = true;\n attributePush('workFlow:' + $('#hdn-toast').attr('businessFunction'), 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + windowTitle);\n virtualPagePush($('#hdn-toast').attr('businessFunction'), windowTitle, vm.data.messageOption, 'impression', vm.data.option);\n }\n });\n\n /* --------------Function Declarations-----------------------*/\n vm.activateDetails = activateDetails;\n vm.exportCSV = exportCSV;\n vm.getDocument = getDocument;\n vm.loading = loading;\n vm.printData = printData;\n vm.showError = showError;\n vm.sortByColumn = sortByColumn;\n vm.fromCancelpayment = false;\n vm.fromCancelOnetimepayment = false;\n vm.fromEditScheduledpayment = false;\n /* ---------------Initialization-------------------*/\n function init() {\n if ($scope.paymentMethod) {\n vm.paymentMethod = $scope.paymentMethod;\n vm.paymentMethod.forEach(function (item) {\n paymentDescription[item.split(':')[0]] = item.split(':')[1];\n });\n }\n vm.fromEditScheduledpayment = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.showToast);\n $window.scrollTo(0, 0);\n if (vm.fromCancelpayment || vm.fromCancelOnetimepayment || vm.fromEditScheduledpayment) {\n vm.showToast = true;\n vm.data.option = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.toastNotification);\n vm.data.messageOption = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage);\n vm.data.show = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime);\n if (vm.fromEditScheduledpayment === true) {\n showEditPaymentToastEvents();\n }\n } else vm.showToast = false;\n if (assetService.apiConfig.useLocalHost) {\n load();\n } else {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\n }\n vm.currentUser = {\n emailId: $rootScope.currentUserEmailId,\n cdpId: $rootScope.currentUserCdpId\n };\n load();\n vm.fromEditScheduledpayment = false;\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.showToast, false);\n // showEditPaymentToast();\n }\n $scope.sharedCtrl.dataCodeTreatment.h1 = $('#hdn-dd').attr('businessFunction');\n if (!$scope.sharedCtrl.dataCodeTreatment.h1.length) $scope.sharedCtrl.dataCodeTreatment.h1 = 'Billing & Payment Activity.';\n }\n}\napp.controller('CCCancelOnetimePaymentModal', CCCancelOnetimePaymentModal);\nCCCancelOnetimePaymentModal.$inject = ['$log', 'assetService', 'broadcastService', 'cancelScheduledPaymentsKubraService', 'ccAutoPayAssetService', 'commonService', 'getPaymentHistoryService', 'sessionStorageService', '$modalInstance', 'ccBPAInvoiceSelectorService', 'commongaTaggingService', 'makeOneTimeMonthlyContributionService', 'returnApplicableProgramsService'];\nfunction CCCancelOnetimePaymentModal($log, assetService, broadcastService, cancelScheduledPaymentsKubraService, ccAutoPayAssetService, commonService, getPaymentHistoryService, sessionStorageService, $modalInstance, ccBPAInvoiceSelectorService, commongaTaggingService, makeOneTimeMonthlyContributionService, returnApplicableProgramsService) {\n /* --------------Global Vars-----------------------*/\n var vm = this;\n var _documentId = null;\n var _premisseId = null;\n var _cancel = assetService.serviceActions.makeOneTimeMonthlyContribution.Cancel;\n var _onePayment = assetService.serviceActions.makeOneTimeMonthlyContribution.ONE_TIME_PAYMENT;\n\n /* --------------Scope Vars-----------------------*/\n vm.data = {};\n vm.reqObj = {};\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.contributionProgram = {};\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function returnApplicablePrograms(data) {\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(function (result) {\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\n vm.contributionProgram = {\n id: _temporalProgram[0].trim(),\n name: _temporalProgram[1]\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function makeContributionPayment(data) {\n return makeOneTimeMonthlyContributionService.sitecore.makeOneTimeMonthlyContribution(data).then(function (result) {\n vm.makeContributionPaymentResponse = {\n replyCode: result.d.Message.ZreplyCode\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function cancelOneTimeContribution() {\n _dataToPostContributionCancel = {\n action: _cancel,\n contractAccountId: _contractAccountId,\n businessPartnerId: _businessPartnerId,\n programName: vm.contributionProgram.id,\n donationAmount: \"\".concat(vm.reqObj.energyNeighborFund),\n monthly: _onePayment,\n numberMonths: ''\n };\n //if contribution already present, cancel the existing\n if (vm.reqObj.isConrtributionEligible) {\n makeContributionPayment(_dataToPostContributionCancel);\n }\n }\n function cancelPayment() {\n vm.reqObj = ccBPAInvoiceSelectorService.getInvoiceObject();\n var data = {\n businessPartnerId: _businessPartnerId,\n //amount: vm.reqObj.contributionMethod ? vm.reqObj.excludedContributionAmount : vm.reqObj.totalAmountPaid,\n amount: vm.reqObj.totalAmountPaid,\n date: moment(vm.reqObj.dueDate).format('YYYY-MM-DDTHH:mm:ss'),\n paymentId: vm.reqObj.confirmNumber,\n contractAccountId: _contractAccountId,\n cardType: 'BankCard'\n };\n // service to cancel Kubra payment\n cancelScheduledPaymentsKubraService.sitecore.cancelScheduledPayment(data).then(function (result) {\n if (result.success) {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'Your payment has been successfully cancelled.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-in-out');\n cancelOneTimeContribution(); //Cancel any active contribution\n $modalInstance.close();\n broadcastService.reloadBPActivity();\n } else {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'error');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'We were unable to cancel your payment, please try again later.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-infinite');\n $modalInstance.close();\n broadcastService.reloadBPActivity();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getPayments() {\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(function (result) {\n var paymentData = _.find(result.d.Req_Inp.results[0].Inp_Res.results, {\n Payment_Doc: _documentId\n });\n vm.data.paymentData = {\n itemId: paymentData.Payment_Doc,\n active: false,\n dueDate: moment(paymentData.Payment_Date).format('MM/DD/YY'),\n // Same as paymentDate\n description: \"(\".concat(paymentData.Payment_Status, \") \").concat(paymentData.Payment_Method, \" \").concat(paymentData.Payment_Account),\n dueAmount: Number(paymentData.Payment_Amount),\n // Same as paymentAmount\n confirmNumber: paymentData.Confirmation_Code,\n paymentMethod: paymentData.Payment_Method,\n routingNumber: paymentData.Routing_No,\n accountNumber: paymentData.Payment_Account,\n paymentStatus: paymentData.Payment_Status,\n oneTimePayment: paymentData.Confirmation_Code && paymentData.Payment_Status == 'SCHEDULED' ? true : false\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _contractAccountId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.contractAccountID);\n _businessPartnerId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.businessPartnerId);\n _documentId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _premisseId = _globalAccountInfo.accountSelected.premiseID;\n }\n vm.isContributionEligible = sessionStorageService.get('contributionEligibleStatus');\n console.log(vm.isContributionEligible);\n dataObjApplicableProg = {\n contractAccountId: _contractAccountId,\n businessPartnerId: _businessPartnerId,\n premiseId: _premisseId\n };\n dataObj = {\n contractAccountId: _contractAccountId,\n businessPartner: _businessPartnerId\n };\n var promises = [getPayments(dataObj), returnApplicablePrograms(dataObjApplicableProg)];\n commonService.executePromises(promises).then(function () {});\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.cancelPayment = cancelPayment;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\napp.controller('CCCancelPaymentModal', CCCancelPaymentModal);\nCCCancelPaymentModal.$inject = ['$log', 'assetService', 'broadcastService', 'ccAutoPayAssetService', 'commonService', 'enrollInBillingAndPaymentProgramsService', 'getPaymentHistoryService', 'sessionStorageService', '$modalInstance', 'toastNotificationsService', 'commongaTaggingService'];\nfunction CCCancelPaymentModal($log, assetService, broadcastService, ccAutoPayAssetService, commonService, enrollInBillingAndPaymentProgramsService, getPaymentHistoryService, sessionStorageService, $modalInstance, toastNotificationsService, commongaTaggingService) {\n /* --------------Global Vars-----------------------*/\n var vm = this;\n var _documentId = null;\n var _contractAccountId = null;\n var _businessPartnerId = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _success = assetService.replyCodes.ERROR;\n var _block = assetService.serviceActions.enrollInBillingAndPaymentPrograms.BLOCK;\n var globalSelectedAccount = {};\n /* --------------Scope Vars-----------------------*/\n vm.data = {};\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function cancelPayment() {\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n action: _block,\n contractAccountId: _contractAccountId,\n progName: _DIRDEB\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'Your payment has been successfully cancelled.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-in-out');\n $modalInstance.close();\n broadcastService.reloadBPActivity();\n } else {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'error');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'We were unable to cancel your payment, please try again later.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-infinite');\n $modalInstance.close();\n broadcastService.reloadBPActivity();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getPayments() {\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(function (result) {\n var paymentData = _.find(result.d.Req_Inp.results[0].Inp_Res.results, {\n Payment_Doc: _documentId\n });\n vm.data.paymentData = {\n itemId: paymentData.Payment_Doc,\n active: false,\n dueDate: moment(paymentData.Payment_Date).format('MM/DD/YY'),\n // Same as paymentDate\n description: \"(\".concat(paymentData.Payment_Status, \") \").concat(paymentData.Payment_Method, \" \").concat(paymentData.Payment_Account),\n dueAmount: Number(paymentData.Payment_Amount),\n // Same as paymentAmount\n confirmNumber: paymentData.Confirmation_Code,\n paymentMethod: paymentData.Payment_Method,\n routingNumber: paymentData.Routing_No,\n accountNumber: paymentData.Payment_Account,\n paymentStatus: paymentData.Payment_Status,\n kubraPayment: paymentData.Confirmation_Code !== ''\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _contractAccountId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.contractAccountID);\n _businessPartnerId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.businessPartnerId);\n _documentId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment);\n dataObj = {\n contractAccountId: _contractAccountId,\n businessPartner: _businessPartnerId\n };\n var promises = [getPayments(dataObj)];\n commonService.executePromises(promises).then(function () {});\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.cancelPayment = cancelPayment;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\napp.controller('CCEditPayment', CCEditPayment);\nCCEditPayment.$inject = ['$log', 'assetService', 'cancelScheduledPaymentsKubraService', 'commonService', 'ccAutoPayAssetService', 'genericHelperService', 'makeOneTimeMonthlyContributionService', 'returnApplicableProgramsService', 'sessionStorageService', 'getPrepaidDetailsService', 'modalService', 'ccBPAInvoiceSelectorService', '$scope', 'payNowOrScheduledService', 'broadcastService', 'getLoggedInUserDetailsService', 'getPaymentHistoryService', '$rootScope', 'commongaTaggingService'];\nfunction CCEditPayment($log, assetService, cancelScheduledPaymentsKubraService, commonService, ccAutoPayAssetService, genericHelperService, makeOneTimeMonthlyContributionService, returnApplicableProgramsService, sessionStorageService, getPrepaidDetailsService, modalService, ccBPAInvoiceSelectorService, $scope, payNowOrScheduledService, broadcastService, getLoggedInUserDetailsService, getPaymentHistoryService, $rootScope, commongaTaggingService) {\n /* -----------------------Global Vars---------------------------*/\n var vm = this;\n var _bankAccountId = ccAutoPayAssetService.strings.bankAccountId;\n var _bankDescription = ccAutoPayAssetService.strings.bankDescription;\n var _notEnrolled = assetService.recurringContributionsButtons.NOT_ENROLLED;\n var _donation = assetService.serviceActions.makeOneTimeMonthlyContribution.Donation;\n var _update = assetService.serviceActions.makeOneTimeMonthlyContribution.Update;\n var _cancel = assetService.serviceActions.makeOneTimeMonthlyContribution.Cancel;\n var _onePayment = assetService.serviceActions.makeOneTimeMonthlyContribution.ONE_TIME_PAYMENT;\n var _toFixed = 2;\n var _bankAccountsOriginal = null;\n var _globalAccountInfo = null;\n var _newBankAccountIdGenerated = null;\n var _premisseId = null;\n var _documentId = null;\n var globalSelectedAccount = {};\n var isSetDate = false;\n var isSetAmount = false;\n var isSetPayment = false;\n vm.showSpinningLoader = false;\n vm.samePaymentError = false;\n /* -----------------------Scope Vars---------------------------*/\n vm.accountSelected = {\n accountId: null,\n accountNumber: null,\n nickname: null,\n rountingNumber: null,\n bankbpnumber: null\n };\n vm.contributionProgram = {};\n vm.currentDayFormat = moment().format('MM/DD/YYYY');\n vm.dropdowns = {\n bankAccounts: null\n };\n vm.endDate = moment().add(1, 'years').format('MM/DD/YYYY');\n vm.enrolledInKubra = true;\n vm.form = {\n editPayment: null,\n bankAccount: null,\n paymentDate: null,\n daysBeforePaymentDate: null\n };\n vm.loaded = false;\n vm.loadingSpinner = true;\n vm.accountWasNotSelected = true, vm.makeContributionPaymentResponse = {};\n vm.makeContributionObj = {};\n vm.paymentData = {};\n vm.paymentHistory = {};\n vm.dueDate = '';\n vm.dueAmount = '';\n vm.startDate = moment().add(1, 'days').format('MM/DD/YYYY');\n vm.prepaidDetails = {};\n vm.addBankAccount = addBankAccount;\n vm.selectAccount = selectAccount;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.selectCalendarDate = selectCalendarDate;\n vm.contributionAmountCheck = contributionAmountCheck;\n vm.showDrops = true;\n vm.paymentObj = {};\n vm.isRedirect = false;\n vm.currentUser = {};\n vm.paydata = {};\n vm.showToastForEdit = false;\n vm.displayDate = {};\n vm.currentDate = new Date();\n var d = vm.currentDate.getDate();\n var m = vm.currentDate.getMonth();\n var y = vm.currentDate.getFullYear();\n vm.currentDatePlusOne = new Date(y, m, d);\n vm.amountToPay = undefined;\n vm.amountLength = undefined;\n vm.lengthError = false;\n vm.submitFullAmount = submitFullAmount;\n vm.checkPayment = false;\n vm.checkAmoutPaid = checkAmoutPaid;\n vm.savePaymentModal = savePaymentModal;\n vm.savePayment = savePayment;\n vm.getTheDue = undefined;\n vm.checkForError = false;\n vm.canPay = false;\n vm.checkAmtLimit = undefined;\n vm.amtLimit = undefined;\n vm.disableBtn = false;\n vm.creditAmount = '';\n vm.showAmountError = false;\n vm.showContriError = false;\n vm.showContriLimitError = false;\n vm.showBanner = false;\n vm.displayDueDate = true;\n vm.calendarTouched = false;\n vm.showBankError = false;\n vm.lastSelectedDate = '';\n //vm.paidAmount = 0;\n\n /**\r\n * Emit and Broadcast events\r\n */\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, function () {\n _newBankAccountIdGenerated = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated);\n reload();\n });\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, function () {\n _newBankAccountIdGenerated = null;\n reload();\n });\n /* --------------Function Definitions------------------------*/\n\n $scope.getAmountLimit = function (amountLimit, extraAmountLimit) {\n vm.checkAmtLimit = parseInt(extraAmountLimit);\n vm.amtLimit = parseInt(amountLimit);\n };\n function selectCalendarDate() {\n vm.calendarTouched = true;\n if (vm.form.selectDate !== undefined && vm.form.selectDate !== '') {\n if (vm.form.selectDate.indexOf(' ') > 0) {\n vm.form.selectDate = vm.form.selectDate.replace(/\\s+/g, '');\n vm.lastSelectedDate = vm.form.selectDate;\n }\n if (new Date(vm.form.selectDate).getTime() >= vm.currentDatePlusOne.getTime()) {\n vm.disableSaveButton = false;\n }\n } else {\n vm.disableSaveButton = true;\n }\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function loading(value) {\n vm.loadingSpinner = value;\n }\n function reload() {\n vm.loaded = false;\n load();\n }\n function changeDate() {\n if (!vm.date.selectDate) {\n if ($scope.dateEnd.selectDate.$modelValue) {\n vm.date.selectDate = $scope.dateEnd.selectDate.$modelValue;\n }\n }\n }\n function returnApplicablePrograms(data) {\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(function (result) {\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\n vm.contributionProgram = {\n id: _temporalProgram[0].trim(),\n name: _temporalProgram[1],\n status: result.d.Programtores_nav.results[0].Status === _notEnrolled ? false : true\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function makeContributionPayment(data) {\n return makeOneTimeMonthlyContributionService.sitecore.makeOneTimeMonthlyContribution(data).then(function (result) {\n vm.makeContributionPaymentResponse = {\n replyCode: result.d.Message.ZreplyCode\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function selectAccount(optionSelected) {\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\n addBankAccount();\n } else {\n findAccountAndSelectIt();\n }\n }\n function setDropdowns() {\n vm.showDrops = true;\n if (_bankAccountsOriginal && _bankAccountsOriginal.length > 0) {\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList(_bankAccountsOriginal, _bankAccountId, _bankDescription);\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(vm.dropdowns.bankAccounts, ccAutoPayAssetService.strings.value, _newBankAccountIdGenerated || vm.accountSelected.accountId);\n } else {\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList([], '', '');\n vm.showDrops = false;\n }\n vm.dropdowns.bankAccounts.push({\n text: 'Add Account',\n value: ccAutoPayAssetService.strings.addAccount\n });\n }\n function findAccountAndSelectIt() {\n var accountFound = _.find(_bankAccountsOriginal, function (account) {\n return account.BankAccountId === vm.form.bankAccount;\n });\n if (accountFound) {\n vm.accountSelected = {\n accountId: accountFound.BankAccountId,\n nickname: accountFound.BankDescription,\n rountingNumber: accountFound.BankRoutingNumber,\n accountNumber: accountFound.BankAccountNumber,\n bankbpnumber: accountFound.BankBp\n };\n vm.accountWasNotSelected = false;\n }\n if (!isSetPayment) {\n $('#hdn_scheduledPay').attr('addedEvent', 'Payment Method');\n isSetPayment = true;\n }\n checkAmoutPaid();\n return accountFound;\n }\n function makeContribution() {\n _dataToPostContributionCancel = {\n action: _cancel,\n contractAccountId: _contractAccountId,\n businessPartnerId: _businessPartnerId,\n programName: vm.contributionProgram.id,\n donationAmount: \"\".concat(vm.paymentData.energyNeighborFund),\n monthly: _onePayment,\n numberMonths: ''\n };\n _dataToPostContribution = {\n action: _donation,\n contractAccountId: _contractAccountId,\n businessPartnerId: _businessPartnerId,\n programName: vm.contributionProgram.id,\n donationAmount: isNaN(vm.form.contributionAmount) ? isNaN(vm.form.contributionAmount.charAt(0)) ? vm.form.contributionAmount.substring(1).replace(/,/g, '') : String(vm.form.contributionAmount) : String(vm.form.contributionAmount),\n monthly: _onePayment,\n numberMonths: ''\n };\n //if contribution already present, cancel the existing\n if (vm.paymentData.isConrtributionEligible) {\n vm.makeContributionObj = _dataToPostContributionCancel;\n makeContributionPayment(vm.makeContributionObj);\n }\n //make a donation\n vm.makeContributionObj = _dataToPostContribution;\n makeContributionPayment(vm.makeContributionObj);\n }\n\n //Function to show modal when amount is greater than due\n function savePaymentModal() {\n if (vm.checkPayment == true) {\n vm.showSaveModal = true;\n } else {\n vm.showSaveModal = false;\n }\n if (!vm.showDrops) {\n vm.showBanner = true;\n vm.showSpinningLoader = false;\n } else if (vm.showDrops && vm.form.bankAccount == undefined) {\n vm.showBankError = true;\n vm.showSpinningLoader = false;\n } else {\n modalService.savePaymentModal();\n }\n }\n $scope.$on(assetService.events.updateSavedPayment, function () {\n save('my-account/billing-and-payment-activity');\n });\n $scope.$on(assetService.events.closePaymentModal, function () {\n vm.showSpinningLoader = false;\n });\n function savePayment() {\n vm.showSpinningLoader = true;\n if (!vm.showDrops) {\n vm.showBanner = true;\n vm.showSpinningLoader = false;\n document.getElementById('bankAccount').focus();\n return;\n }\n if (vm.showDrops && vm.form.bankAccount == undefined) {\n vm.showBankError = true;\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.bankAccount == undefined) {\n document.getElementById('bankAccount').focus();\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.paymentDate == '2' && vm.calendarTouched && !vm.form.selectDate || vm.selectedDate == undefined || vm.selectedDate == null) {\n vm.showSpinningLoader = false;\n document.getElementById('selectDate').focus();\n return;\n }\n if (vm.paymentData.totalAmountPaid == _paymentAmount && moment(vm.paymentData.dueDate).format('YYYY-MM-DD') == moment(_paymentDate).format('YYYY-MM-DD') && vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) == vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4)) {\n vm.isSameAmount = true;\n document.getElementById('editPayment') ? document.getElementById('editPayment').focus() : '';\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.paymentAmount && (vm.showAmountError || vm.lengthError)) {\n document.getElementById('editPayment').focus();\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.contribution) {\n if (!vm.form.contributionAmount) {\n vm.showContriError = true;\n vm.showSpinningLoader = false;\n return;\n }\n var contributionAmount = vm.form.contributionAmount[0] == '$' ? vm.form.contributionAmount.substring(1).replace(/,/g, '') : vm.form.contributionAmount;\n if (contributionAmount <= 0) {\n vm.showContriError = true;\n vm.showSpinningLoader = false;\n return;\n } else {\n vm.showContriError = false;\n }\n if (contributionAmount > 500) {\n vm.showContriLimitError = true;\n vm.showSpinningLoader = false;\n return;\n } else {\n vm.showContriLimitError = false;\n }\n }\n if (vm.canPay == false && (vm.paymentData.totalAmountPaid != vm.form.otherAmount || moment(vm.paymentData.dueDate).format('YYYY-MM-DD') != moment(_paymentDate).format('YYYY-MM-DD') || vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) != vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4))) {\n vm.showSpinningLoader = false;\n savePaymentModal();\n } else {\n vm.isSameAmount = true;\n vm.showSpinningLoader = false;\n document.getElementById('editPayment').focus();\n }\n }\n function save(url) {\n vm.showSpinningLoader = true;\n if (!vm.showDrops) {\n vm.showBanner = true;\n vm.showSpinningLoader = false;\n document.getElementById('bankAccount') ? document.getElementById('bankAccount').focus() : '';\n return;\n }\n if (vm.showDrops && vm.form.bankAccount == undefined) {\n vm.showBankError = true;\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.bankAccount == undefined) {\n document.getElementById('bankAccount') ? document.getElementById('bankAccount').focus() : '';\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.paymentDate == '2' && vm.calendarTouched && !vm.form.selectDate || vm.selectedDate == undefined || vm.selectedDate == null) {\n vm.showSpinningLoader = false;\n document.getElementById('selectDate') ? document.getElementById('selectDate').focus() : '';\n return;\n }\n if (vm.form.paymentAmount && (vm.showAmountError || vm.lengthError)) {\n document.getElementById('editPayment') ? document.getElementById('editPayment').focus() : '';\n vm.showSpinningLoader = false;\n return;\n }\n if (vm.form.contribution) {\n if (!vm.form.contributionAmount) {\n vm.showContriError = true;\n vm.showSpinningLoader = false;\n return;\n }\n var contributionAmount = vm.form.contributionAmount[0] == '$' ? vm.form.contributionAmount.substring(1).replace(/,/g, '') : vm.form.contributionAmount;\n if (contributionAmount <= 0) {\n vm.showContriError = true;\n vm.showSpinningLoader = false;\n return;\n } else {\n vm.showContriError = false;\n }\n if (contributionAmount > 500) {\n vm.showContriLimitError = true;\n vm.showSpinningLoader = false;\n return;\n } else {\n vm.showContriLimitError = false;\n }\n }\n if (vm.selectedDate.indexOf(' ') > 0) {\n vm.selectedDate = vm.selectedDate.replace(/\\s+/g, '');\n }\n switch (vm.form.paymentDate) {\n case '0':\n _paymentDate = vm.currentDayFormat;\n break;\n case '1':\n _paymentDate = vm.dueData.dueDate;\n break;\n case '2':\n _paymentDate = vm.selectedDate !== undefined ? vm.selectedDate : vm.startDate;\n break;\n }\n switch (vm.form.paymentAmount) {\n case '0':\n _paymentAmount = vm.getFullAmount;\n break;\n case '1':\n _paymentAmount = vm.form.otherAmount[0] == '$' ? vm.form.otherAmount.substring(1).replace(/,/g, '') : vm.form.otherAmount;\n break;\n }\n if (vm.paymentData.totalAmountPaid == _paymentAmount && moment(vm.paymentData.dueDate).format('YYYY-MM-DD') == moment(_paymentDate).format('YYYY-MM-DD') && vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) == vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4)) {\n vm.isSameAmount = true;\n document.getElementById('editPayment') ? document.getElementById('editPayment').focus() : '';\n vm.showSpinningLoader = false;\n return;\n }\n // Call for cancel scheduled payment\n cancelScheduledPaymentsKubraService.sitecore.cancelScheduledPayment({\n businessPartnerId: _businessPartnerId,\n //amount: vm.paymentData.contributionMethod ? vm.paymentData.excludedContributionAmount : vm.paymentData.totalAmountPaid,\n amount: vm.paymentData.totalAmountPaid,\n date: moment(vm.paymentData.dueDate).format('YYYY-MM-DDTHH:mm:ss'),\n paymentId: vm.paymentData.confirmNumber,\n contractAccountId: _contractAccountId,\n cardType: 'BankCard'\n }).then(function (result) {\n if (result.success) {\n var payNow = [_defineProperty({\n language: 'EN',\n BusinessPartner: _businessPartnerId,\n accountNumber: _contractAccountId,\n amount: _paymentAmount,\n clientReferenceId: _businessPartnerId,\n date: _paymentDate,\n paySource: {\n channel: {\n type: 'Enrolled',\n enrolled: 'MobileWeb',\n unEnrolled: 'None'\n }\n },\n payType: {\n routing: 'Standard',\n mode: 'BankAccount'\n },\n payer: {\n payerName: '',\n eMail: vm.currentUser.emailId\n },\n sapWalletProfile: {\n sapBankAccountId: vm.accountSelected.accountId,\n sapBankBp: vm.accountSelected.bankbpnumber\n }\n }, \"BusinessPartner\", _businessPartnerId)];\n\n //call to schedule kubra payment\n payNowOrScheduledService.sitecore.payNowOrScheduled(payNow).then(function (result) {\n if (result.errorResult == null || result.errorResult !== undefined) {\n if (vm.form.contribution && vm.form.contributionAmount) {\n makeContribution();\n }\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'success');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'Your payment has been successfully saved.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-in-out');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.showToast, true);\n attributePush(\"workFlow:\".concat($('#hdn_scheduledPay').attr('businessFunction')), \"headline:\".concat($('#hdn_scheduledPay').attr('businessFunction')), \"buttonText:\".concat($('#hdn_scheduledPay').attr('buttonText')), \"addedSpec:\".concat($('#hdn_scheduledPay').attr('addedSpec')), \"addedEvent:\".concat($('#hdn_scheduledPay').attr('addedEvent')));\n virtualPagePush($('#hdn_scheduledPay').attr('businessFunction'), $('#hdn_scheduledPay').attr('businessFunction'), isSetDate ? $('#hdn_scheduledPay').attr('buttonText') : '', isSetAmount ? $('#hdn_scheduledPay').attr('addedSpec') : '', isSetPayment ? $('#hdn_scheduledPay').attr('addedEvent') : '', $('#hdn_scheduledPay').attr('headline'), 'success');\n window.location.href = url;\n vm.showSpinningLoader = false;\n } else {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'error');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'We were unable to save your payment, please try again later.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-infinite');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.showToast, true);\n vm.showSpinningLoader = false;\n window.location.href = url;\n }\n }, function (error) {\n vm.showSpinningLoader = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function (error) {\n vm.showSpinningLoader = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n //Kubra error redirection\n $scope.$on(assetService.events.kubraDuplicateError, function () {\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'error');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'We were unable to save your payment, please try again later.');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-infinite');\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.showToast, true);\n window.location.href = url;\n vm.showSpinningLoader = false;\n });\n }\n function setModels() {\n vm.form.contribution = vm.paymentData.isConrtributionEligible;\n if (vm.paymentData.isConrtributionEligible) {\n vm.form.contributionAmount = parseFloat(vm.paymentData.energyNeighborFund);\n document.getElementById('contribution').checked = true;\n } else {\n document.getElementById('contribution').checked = false;\n }\n var accountFound = _.find(_bankAccountsOriginal, function (account) {\n return account.BankRoutingNumber === vm.paymentData.routingNumber && account.BankAccountNumber.substr(-4) === vm.paymentData.accountNumberExpand.substr(-4);\n });\n if (!_newBankAccountIdGenerated && accountFound) {\n vm.accountSelected = {\n accountId: accountFound.BankAccountId,\n nickname: accountFound.BankDescription,\n rountingNumber: accountFound.BankRoutingNumber,\n accountNumber: accountFound.BankAccountNumber,\n bankbpnumber: accountFound.BankBp\n };\n }\n if (_newBankAccountIdGenerated) {\n vm.form.bankAccount = _newBankAccountIdGenerated;\n findAccountAndSelectIt();\n } else {\n vm.form.bankAccount = vm.accountSelected.accountId;\n }\n loading(false);\n }\n function validateForm(cardName) {\n if (!vm.form.hasOwnProperty('selectDate') || vm.form.selectDate == null || vm.form.selectDate == '') {\n if (vm.calendarTouched == true && vm.lastSelectedDate != '' && vm.form.paymentDate == '2' && cardName == 'Payment Date ') {\n vm.form.selectDate = vm.lastSelectedDate;\n }\n }\n vm.form.selectDate && vm.form.paymentDate == '2' && cardName == 'Payment Date ' ? vm.selectedDate = vm.form.selectDate : '';\n if (vm.form.paymentAmount == '0') {\n vm.disableSaveButton = false;\n vm.checkPayment = false;\n vm.lengthError = false;\n vm.canPay = false;\n vm.checkForError = false;\n vm.showAmountError = false;\n vm.isSameAmount = false;\n if (vm.form.otherAmount) {\n vm.form.otherAmount = '';\n }\n } else if (vm.form.paymentAmount == '1') {\n if (vm.form.otherAmount == \"\") {\n vm.showAmountError = true;\n vm.isSameAmount = false;\n } else {\n vm.showAmountError = false;\n }\n if (vm.form.otherAmount) {\n var otherAmount = vm.form.otherAmount[0] == '$' ? vm.form.otherAmount.substring(1).replace(/,/g, '') : vm.form.otherAmount;\n if (otherAmount <= 0) {\n vm.showAmountError = true;\n } else {\n vm.showAmountError = false;\n }\n var checkAmount = otherAmount;\n vm.amountToPay = String(checkAmount).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.checkAmtLimit) {\n vm.lengthError = true;\n vm.canPay = true;\n } else {\n vm.lengthError = false;\n vm.canPay = false;\n }\n checkAmoutPaid();\n }\n }\n if (vm.form.selectDate == null && _typeof(vm.form.selectDate) == 'object') {\n vm.dateRequiredError = true;\n } else {\n vm.dateRequiredError = false;\n }\n if (cardName.trim() == 'Payment Date' && !isSetDate) {\n $('#hdn_scheduledPay').attr('buttonText', cardName.trim());\n isSetDate = true;\n }\n if (cardName.trim() == 'Payment Amount' && !isSetAmount) {\n $('#hdn_scheduledPay').attr('addedSpec', cardName.trim());\n isSetAmount = true;\n }\n }\n function contributionAmountCheck() {\n var contributionAmount = vm.form.contributionAmount[0] == '$' ? vm.form.contributionAmount.substring(1).replace(/,/g, '') : vm.form.contributionAmount;\n if (vm.form.contribution && contributionAmount <= 0) {\n vm.showContriError = true;\n } else {\n vm.showContriError = false;\n }\n if (vm.form.contribution && contributionAmount > 500) {\n vm.showContriLimitError = true;\n } else {\n vm.showContriLimitError = false;\n }\n }\n //Function to check if amount entered is greater than due\n function checkAmoutPaid() {\n vm.getTheDue = sessionStorageService.get('fullDueAmount');\n var getDueAmt = Number(vm.getTheDue);\n var fullAmtDue = sessionStorageService.get('billing-and-payment-activity-managed-payment');\n var currentDate = moment(new Date()).utc().format('MM/DD/YY');\n var tdayDate = currentDate.toString();\n var checkDueDate = fullAmtDue.dueDate;\n if (checkDueDate == currentDate) {\n vm.paidAmount = Number(fullAmtDue.totalAmountPaid) ? Number(fullAmtDue.totalAmountPaid) : Number('0.00');\n } else {\n vm.paidAmount = Number('0.00');\n }\n var totalDueAmt = Number(getDueAmt + vm.paidAmount).toFixed(_toFixed);\n var totalAmtToPay = parseFloat(vm.form.otherAmount.toString().replace(/[^0-9._-]/g, ''));\n if (totalAmtToPay > totalDueAmt) {\n vm.checkPayment = true;\n } else {\n vm.checkPayment = false;\n }\n if (vm.checkPayment == true || vm.lengthError == true || vm.isSameAmount == true) {\n vm.checkForError = true;\n } else {\n vm.checkForError = false;\n }\n checkSameAmount();\n }\n function checkSameAmount() {\n var fullAmtDue = sessionStorageService.get('billing-and-payment-activity-managed-payment');\n switch (vm.form.paymentDate) {\n case '0':\n _paymentDate = moment().format('MM/DD/YY');\n break;\n case '1':\n _paymentDate = moment(vm.displayDate.dueDate).format('MM/DD/YY');\n break;\n case '2':\n _paymentDate = vm.selectedDate !== undefined ? moment(vm.selectedDate).format('MM/DD/YY') : moment(vm.startDate).format('MM/DD/YY');\n break;\n }\n switch (vm.form.paymentAmount) {\n case '0':\n _paymentAmount = vm.getFullAmount;\n break;\n case '1':\n _paymentAmount = vm.form.otherAmount[0] == '$' ? vm.form.otherAmount.substring(1).replace(/,/g, '') : vm.form.otherAmount;\n break;\n }\n if (fullAmtDue.totalAmountPaid == vm.form.otherAmount.substring(1).replace(/,/g, '') && fullAmtDue.dueDate == _paymentDate && vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) == fullAmtDue.accountNumberExpand.substr(fullAmtDue.accountNumberExpand.length - 4)) {\n vm.isSameAmount = true;\n vm.canPay = true;\n } else {\n vm.isSameAmount = false;\n vm.canPay = false;\n }\n if (vm.checkPayment == true || vm.lengthError == true || vm.isSameAmount == true) {\n vm.checkForError = true;\n } else {\n vm.checkForError = false;\n }\n }\n\n //Function to show error when amount length is greater than 6\n function submitFullAmount() {\n var otherAmounts = vm.form.otherAmount.substring(1).replace(/,/g, '');\n var checkAmount = otherAmounts;\n vm.amountToPay = String(checkAmount).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.amtLimit) {\n vm.lengthError = true;\n vm.canPay = true;\n }\n }\n function getPrepaidDetails(data) {\n getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n _bankAccountsOriginal.forEach(function (item) {\n item.value = item.BankAccountId;\n });\n setModels();\n setDropdowns();\n }, function (error) {\n setDropdowns();\n loading(false);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addBankAccount() {\n modalService.addNewBankAccount();\n if (vm.showDrops) {\n getPrepaidDetails(dataObjPrepaid);\n }\n if (!isSetPayment) {\n $('#hdn_scheduledPay').attr('addedEvent', 'Payment Method');\n isSetPayment = true;\n }\n }\n function load() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _documentId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment);\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n vm.showAmountError = false;\n vm.lengthError = false;\n vm.getFullAmount = sessionStorageService.get('fullDueAmount');\n if (vm.getFullAmount == 0 || vm.getFullAmount < 0) {\n vm.disableBtn = true;\n vm.creditAmount = Math.abs(vm.getFullAmount).toFixed(2);\n }\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = _globalAccountInfo.accountSelected;\n _contractAccountId = globalSelectedAccount.accountNum;\n _businessPartnerId = orgBP ? orgBP : relatedBP ? relatedBP : globalSelectedAccount.bpNumber;\n _premisseId = _globalSelectedAccount.premiseID;\n }\n vm.paymentData = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.editScheduledPayment);\n vm.dueData = sessionStorageService.get(assetService.storageKeys.dashboard.dueData);\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n if (vm.balanceStorage !== null && (moment(vm.paymentData.dateForSort).format('MM/DD/YYYY') == vm.balanceStorage.displayDate || moment(vm.paymentData.dateForSort).format('MM/DD/YY') == vm.balanceStorage.displayDate) && vm.paymentData.totalAmountPaid == vm.balanceStorage.newTotalAmount) {\n vm.form.otherAmount = '';\n vm.form.selectDate = vm.balanceStorage.calendarDate ? vm.balanceStorage.calendarDate : '';\n vm.startDate = vm.form.selectDate;\n vm.form.paymentDate = vm.balanceStorage.dateSelected.name == 'Other Date' ? '2' : vm.balanceStorage.dateSelected.name == 'Pay Now' ? '0' : '1';\n if (vm.balanceStorage.newAmountsArray && vm.balanceStorage.newAmountsArray.length > 0) {\n vm.tempArray = vm.balanceStorage.newAmountsArray.filter(function (amount) {\n return amount.id == _contractAccountId;\n });\n vm.form.otherAmount = vm.tempArray ? vm.tempArray[0].bill : '';\n }\n vm.form.paymentAmount = vm.balanceStorage.amountSelected;\n vm.displayDate.dueDate = moment(vm.dueData.dueDate).format('MM/DD/YY');\n //vm.displayDate.totalAmountPaid = vm.dueData.dueAmmount;\n vm.displayDate.totalAmountPaid = vm.getFullAmount;\n } else {\n vm.displayDate.dueDate = moment(vm.dueData.dueDate).format('MM/DD/YY');\n //vm.displayDate.totalAmountPaid = vm.dueData.dueAmmount;\n vm.displayDate.totalAmountPaid = vm.getFullAmount;\n }\n if (new Date(vm.displayDate.dueDate).getTime() < vm.currentDatePlusOne.getTime()) {\n vm.displayDueDate = false;\n }\n vm.form.paymentDate = moment.utc(vm.displayDate.dueDate).format('MM/DD/YY') == moment.utc(vm.paymentData.dateForSort).format('MM/DD/YY') ? '1' : moment.utc(vm.currentDate).format('MM/DD/YY') == moment.utc(vm.paymentData.dateForSort).format('MM/DD/YY') ? '0' : '2';\n vm.selectedDate = vm.form.paymentDate == '2' ? moment.utc(vm.paymentData.dateForSort).format('MM/DD/YYYY') : vm.startDate;\n vm.form.paymentAmount = vm.paymentData.totalAmountPaid == vm.getFullAmount ? '0' : '1';\n vm.form.otherAmount = vm.form.paymentAmount && vm.form.paymentAmount == '1' ? vm.paymentData.totalAmountPaid : '0.00';\n dataObj = {\n contractAccountId: _contractAccountId,\n businessPartnerId: orgBP ? orgBP : relatedBP ? relatedBP : _businessPartnerId,\n premiseId: _premisseId\n };\n dataObjPrepaid = {\n contractAccountId: _contractAccountId,\n businessPartnerId: orgBP ? orgBP : relatedBP ? relatedBP : _businessPartnerId\n };\n var promises = [getPrepaidDetails(dataObjPrepaid), returnApplicablePrograms(dataObj)];\n commonService.executePromises(promises).then(function () {});\n vm.loaded = true;\n }\n\n /* -------------------------Scope On------------------------- */\n\n /* --------------Function Declarations-----------------------*/\n vm.changeDate = changeDate;\n vm.save = save;\n vm.validateForm = validateForm;\n\n /* ---------------Initialization-------------------*/\n function init() {\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n //load();\n }\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('CCPDFNotFoundModal', CCPDFNotFoundModal);\nCCPDFNotFoundModal.$inject = ['$modalInstance'];\nfunction CCPDFNotFoundModal($modalInstance) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Global Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n /* empty function*/\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable max-len */\napp.factory('BPACSVService', function () {\n var vm = this;\n var formattedData = {};\n function exportToCSV(pageCase, newData, fileName, contributionMethod) {\n /* (NewCaseToMap, Array, FileNAme) */\n switch (pageCase) {\n case 'bill':\n formattedData = _.map(newData, function (bill) {\n return {\n Type: bill.type.toUpperCase(),\n 'Due Date': bill.dueDate,\n Description: bill.description,\n Amount: bill.dueAmount !== undefined ? '$' + bill.dueAmount : '',\n 'Previous Amount Due': bill.prevAmountDue !== undefined ? '$' + bill.prevAmountDue : '',\n 'Payment Received': bill.paymentReceived !== undefined ? '$' + bill.paymentReceived : '',\n 'Current Charges': bill.currentCharges !== undefined ? '$' + bill.currentCharges : '',\n 'Total Amount Due': bill.totalAmountDue !== undefined ? '$' + bill.totalAmountDue : '',\n 'Total Electric Usage (kWh)': bill.totalElectricUsage,\n 'Avg. Daily Electric Cost (/Day)': bill.avgDailyElectricCost !== undefined ? '$' + bill.avgDailyElectricCost : '',\n 'Total Gas Usage (CCF)': bill.totalGasUsage,\n 'Avg. Daily Gas Cost (/Day)': bill.avgDailyGasCost !== undefined ? '$' + bill.avgDailyGasCost : '',\n 'Confirm Number': bill.confirmNumber,\n 'Payment Method': bill.paymentMethod,\n 'Routing Number': bill.routingNumber,\n 'Account Number': bill.accountNumber,\n 'Payment Status': bill.paymentStatus,\n 'BP Name': bill.bpName,\n Address: bill.address,\n 'Bill Days': bill.billDays,\n 'Bill Date': bill.billDate,\n 'Total Amount Paid': bill.totalAmountPaid,\n 'Energy Neighbor Fund': bill.energyNeighborFund\n };\n });\n formattedData = formattedData.map(function (bill) {\n if (contributionMethod) {\n bill[contributionMethod] = bill['Energy Neighbor Fund'];\n delete bill['Energy Neighbor Fund'];\n return bill;\n } else {\n delete bill['Energy Neighbor Fund'];\n return bill;\n }\n });\n saveAsCSV(formattedData, fileName);\n break;\n case 'balance':\n formattedData = newData.map(function (balance) {\n var balanceReturn = {\n Description: balance.type.toUpperCase(),\n Date: balance.date,\n Amount: \"$\".concat(balance.amount),\n 'Daily Electic Usage': '',\n 'Daily Cost': ''\n };\n if (balance.type === 'Payment') {\n //balanceReturn['Confirmation Number'] = balance.confirmationNumber;\n //balanceReturn['Payment Method'] = balance.paymentMetod;\n //balanceReturn['Prepaid Amount'] = `$${balance.payment}`;\n //balanceReturn['Deferred Balance'] = `$${balance.deferredBalance}`;\n balanceReturn['Amount'] = \"$\".concat(balance.amount);\n }\n if (balance.type === 'Daily Usage') {\n balanceReturn['Daily Electic Usage'] = balance.dailyElectricUsage + ' KWH';\n balanceReturn['Daily Cost'] = \"$\".concat(balance.dailyElectricCost);\n //balanceReturn['Meter Read Number'] = balance.meterReadNumber;\n //balanceReturn['Misc Adjustments'] = balance.miscAdjustments;\n }\n return balanceReturn;\n });\n saveAsCSV(formattedData, fileName);\n break;\n default:\n break;\n }\n }\n function saveAsCSV(dataFormatted, fileName) {\n var csvFile = Papa.unparse(dataFormatted, {\n header: true\n });\n var blob = new Blob([csvFile], {\n type: 'text/plain;charset=utf-8'\n });\n saveAs(blob, \"\".concat(fileName, \".csv\"));\n }\n return {\n exportToCSV: exportToCSV\n };\n});\n// eslint-disable-next-line no-use-before-define\napp.controller('CCPOCToastModalPageController', POCToastModalPageController);\n// eslint-disable-next-line no-use-before-define\nPOCToastModalPageController.$inject = ['assetService', 'apiApigeeConfigService', 'deEnrollFromProgramService', 'FPBroadcastService', 'responseNotificationsService'];\nfunction POCToastModalPageController(assetService, apiApigeeConfigService, deEnrollFromProgramService, FPBroadcastService, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n\n /* --------------Global Vars-----------------------*/\n var vm = this;\n vm.dataToDeEnroll = {\n contractAccountId: '',\n programName: 'DIRDEB'\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.validUnenroll = function () {\n // eslint-disable-next-line no-use-before-define\n deEnroll();\n };\n function deEnroll() {\n return deEnrollFromProgramService.test.deEnrollFromProgram(vm.dataToDeEnroll).then(function (result) {\n // eslint-disable-next-line no-console\n console.log(result);\n var typeResponse = result.d.DeEnroll_Bill_Pay_Message_Nav.results[0].ReplyCode;\n if (assetService.replyCodes[typeResponse]) {\n responseNotificationsService.successResponse(result.ReturnCodeTreatment);\n } else if (typeResponse === 'ERROR') {\n responseNotificationsService.errorResponse(result.ReturnCodeTreatment);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (result.d.DeEnroll_Bill_Pay_Message_Nav.results.hasOwnProperty('0')) {\n vm.successDeEnrollRes = result.d.DeEnroll_Bill_Pay_Message_Nav.results[0].ReplyCode === 'SUCESS';\n }\n });\n }\n\n /* --------------Function Definitions-----------------------*/\n\n function load() {\n /* empty function */\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nfunction ccCareComponentController(ccCareProgramsFactory, apiConfigService, assetService, commonService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var url = null;\n /* --------------Global Vars-----------------------*/\n vm.careProgramasData = null;\n vm.data = {\n carePrograms: []\n };\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n vm.data.carePrograms = vm.careProgramasData.carePrograms;\n console.log(vm.data.carePrograms);\n }\n function getCarePrograms() {\n return ccCareProgramsFactory.getCarePrograms(url).then(function (result) {\n vm.careProgramasData = result;\n }, function (error) {\n console.log(error);\n });\n }\n function load() {\n url = apiConfigService.developUrls.getCarePrograms();\n var promises = [getCarePrograms()];\n commonService.executePromises(promises).then(function () {\n setModels();\n });\n }\n /* --------------Function Declarations-----------------------*/\n var init = init;\n /* ---------------Initialization-------------------*/\n init = function init() {\n load();\n };\n init();\n}\nccCareComponentController.$inject = ['ccCareProgramsFactory', 'apiConfigService', 'assetService', 'commonService'];\napp.controller('ccCareComponentController', ccCareComponentController);\napp.factory('budgetBillingFactory', function ($q, assetService, apiService) {\n var getServicePlans = function getServicePlans(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getAccount = function getAccount(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getMonthsAmounts = function getMonthsAmounts(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getServicePlans: getServicePlans,\n getAccount: getAccount,\n getMonthsAmounts: getMonthsAmounts\n };\n});\napp.factory('ccCareProgramsFactory', function ($q, assetService, apiService) {\n var getCarePrograms = function getCarePrograms(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.assetService.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getCarePrograms: getCarePrograms\n };\n});\napp.controller('FPModalAcceptWorkOrder', FPModalAcceptWorkOrder);\nFPModalAcceptWorkOrder.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'updateCEPServiceOrdersService', '$modalInstance'];\nfunction FPModalAcceptWorkOrder($log, $scope, assetService, broadcastService, dtoService, indexedDbDataService, updateCEPServiceOrdersService, $modalInstance) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _activeOrdersUrl = assetService.pageUrls.activeOrders;\n var _baseUrl = window.location.origin;\n var _dataToPatch = null;\n var _putAcceptedOrders = [];\n\n /**\r\n * Global Vars\r\n */\n vm.selectedOrders = null;\n vm.serviceOrderLoaded = false;\n vm.form = {\n selectedOrders: null\n };\n vm.loadingSpinner = true;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.updateSelectedServiceOrders, function () {\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.acceptWorkOrder = acceptWorkOrder;\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function acceptWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.stopPropagation();\n event.preventDefault();\n _dataToPatch = _.map(vm.selectedOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: {\n code: assetService.status.ACCEPTED.code\n }\n };\n });\n _dataToPatch = dtoService.patchWrapper(_dataToPatch);\n _putAcceptedOrders = [];\n _.forEach(vm.selectedOrders, function (so) {\n var putSO = dtoService.transformServiceOrder(so);\n putSO.soStatus.code = assetService.status.ACCEPTED.code;\n putSO.soStatus.name = assetService.status.ACCEPTED.value;\n putSO.soStatusName = assetService.status.ACCEPTED.value;\n _putAcceptedOrders.push(putSO);\n });\n patchServiceOrder(_dataToPatch).then(function (result) {\n putAcceptedOrders(_putAcceptedOrders).then(function () {\n if (assetService.apiConfig.showAppErrors) $log.error({\n title: assetService.notifications.success.message,\n message: assetService.notifications.success.message\n });\n window.location.replace(_baseUrl + _activeOrdersUrl);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n var serviceOrders = serviceOrdersFactory._getSelectedOrders();\n if (serviceOrders && serviceOrders.length > 0) {\n var selectedOrders = serviceOrders;\n setSelectedOrders(selectedOrders);\n setModels();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function putAcceptedOrders(serviceOrders) {\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function putAcceptedOrders(serviceOrders) {\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setModels() {\n vm.form = {\n selectedOrders: vm.selectedOrders\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function setSelectedOrders(serviceOrders) {\n vm.selectedOrders = _.map(serviceOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: serviceOrder.soStatus,\n soStatusName: serviceOrder.soStatusName,\n soType: serviceOrder.soType,\n soTypeName: serviceOrder.soTypeName,\n program: serviceOrder.program,\n programName: serviceOrder.programName\n };\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalAdvancedFilter', FPModalAdvancedFilter);\nFPModalAdvancedFilter.$inject = ['$scope', 'FPAssetService', 'FPServiceOrdersFactory', '$modalInstance'];\nfunction FPModalAdvancedFilter($scope, assetService, serviceOrdersFactory, $modalInstance) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.dropdowns = {\n allTechnicians: null\n };\n vm.form = {};\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.loadingSpinner = true;\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n setDropdowns();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n /*empty function*/\n }\n function setDropdowns() {\n /*empty function*/\n }\n function setModels() {\n /*empty function*/\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n console.log('test');\n load();\n };\n init();\n}\napp.controller('FPModalAssignWorkOrder', FPModalAssignWorkOrder);\nFPModalAssignWorkOrder.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'sessionStorageService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalAssignWorkOrder($log, $scope, assetService, broadcastService, dtoService, genericHelperService, indexedDbDataService, sessionStorageService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var activeOrdersUrl = assetService.pageUrls.activeOrders;\n var _allTechnicians = [];\n var _assignedTechnician = {};\n var _putAcceptedOrders = [];\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var kwCdpId = assetService.strings.CDPID;\n var kwName = assetService.strings.NAME;\n var kwValue = assetService.strings.VALUE;\n\n /**\r\n * Global Vars\r\n */\n vm.selectedOrders = null;\n vm.serviceOrderLoaded = false;\n vm.dropdowns = {\n allTechnicians: null\n };\n vm.form = {\n selectedOrders: null,\n totalBundleWorkOrders: null,\n assignedTechnician: null\n };\n vm.serviceOrders = [];\n vm.loadingSpinner = true;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.updateSelectedServiceOrders, function () {\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.assignWorkOrder = assignWorkOrder;\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function assignWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.stopPropagation();\n event.preventDefault();\n var assignedTechnicianIndex = _.findIndex(_allTechnicians, function (technician) {\n return technician.cdpId === vm.form.assignedTechnician.cdpId;\n });\n dataToPatch = _.map(vm.selectedOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: {\n code: genericHelperService.getStatusCode(serviceOrder)\n },\n assignedTechnician: {\n cdpId: _allTechnicians[assignedTechnicianIndex].cdpId\n }\n };\n });\n _putAcceptedOrders = [];\n _.forEach(dataToPatch, function (dataToPatchSO) {\n var originalSO = _.find(vm.serviceOrders, function (so) {\n return so.serviceOrderId === dataToPatchSO.serviceOrderId;\n });\n if (originalSO) {\n var putSO = dtoService.transformServiceOrder(originalSO);\n putSO.soStatus.code = assetService.status.DISPATCHED.code;\n putSO.soStatus.name = assetService.status.DISPATCHED.value;\n putSO.soStatusName = assetService.status.DISPATCHED.value;\n putSO.assignedTechnician.cdpId = dataToPatchSO.assignedTechnician.cdpId;\n _putAcceptedOrders.push(putSO);\n }\n });\n dataToPatch = dtoService.patchWrapper(dataToPatch);\n patchServiceOrder(dataToPatch).then(function () {\n putAcceptedOrders(_putAcceptedOrders).then(function () {\n window.location.replace(baseUrl + activeOrdersUrl);\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\n if (vm.serviceOrders.length === 1) {\n _assignedTechnician = vm.serviceOrders[0].assignedTechnician;\n } else {\n _assignedTechnician = {\n badgeId: null,\n cdpId: null,\n name: null,\n phone: null\n };\n }\n setSelectedOrders(vm.serviceOrders);\n setModels();\n setDropdowns();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setDropdowns() {\n var users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n _allTechnicians = users.filter(function (user) {\n return user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE;\n });\n var data = _.sortBy(_allTechnicians, function (technician) {\n return technician.name;\n });\n vm.dropdowns = {\n allTechnicians: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(data, kwCdpId, kwName), kwValue, _assignedTechnician.cdpId)\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n selectedOrders: vm.selectedOrders,\n totalBundleWorkOrders: getTotalOfSelectedOrders(),\n assignedTechnician: _assignedTechnician\n };\n }\n function getTotalOfSelectedOrders() {\n var total = 0;\n _.forEach(vm.selectedOrders, function (serviceOrder) {\n total += serviceOrder.totalOrderCost;\n });\n return total;\n }\n function setSelectedOrders(serviceOrders) {\n vm.selectedOrders = _.map(serviceOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: serviceOrder.soStatus,\n soStatusName: serviceOrder.soStatusName,\n soType: serviceOrder.soType,\n soTypeName: serviceOrder.soTypeName,\n program: serviceOrder.program,\n programName: serviceOrder.programName,\n // totalOrderCost: serviceOrder.orderCostTimeDetails.totalOrderCost.value,\n totalOrderCost: 0\n };\n });\n }\n function putAcceptedOrders(serviceOrders) {\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalBundleWorkOrder', FPModalBundleWorkOrder);\nFPModalBundleWorkOrder.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', 'sessionStorageService', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalBundleWorkOrder($log, $scope, assetService, broadcastService, commonService, dtoService, indexedDbDataService, serviceOrdersFactory, sessionStorageService, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _acceptedOrdersToDelete = [];\n var _putInvoiceOrders = [];\n var activeOrdersUrl = assetService.pageUrls.activeOrders;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var woorSRTypeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\n\n /**\r\n * Global Vars\r\n */\n vm.error = false;\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\n vm.selectedOrders = null;\n vm.serviceOrderLoaded = false;\n vm.serviceOrders = [];\n vm.form = {\n selectedOrders: null,\n contractorInvoiceNumber: null,\n totalBundleWorkOrders: null\n };\n vm.loadingSpinner = true;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.updateSelectedServiceOrders, function () {\n load();\n });\n $scope.$on(assetService.events.error.duplicateInvoiceId, function () {\n vm.errorMsg = sessionStorageService.get(assetService.storageKeys.errorMsg);\n vm.error = true;\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.readyForInvoice = readyForInvoice;\n\n /**\r\n * Function Definitions\r\n */\n function putInvoiceOrders(serviceOrders) {\n return indexedDbDataService.putInvoiceOrders(serviceOrders).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function closeModal() {\n $modalInstance.close();\n }\n function deleteAcceptedOrders(serviceOrderIds) {\n return indexedDbDataService.deleteAcceptedOrders(serviceOrderIds).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function readyForInvoice(event) {\n vm.error = false;\n broadcastService.patchEventStarted();\n event.stopPropagation();\n event.preventDefault();\n dataToPatch = _.map(vm.selectedOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: {\n code: assetService.status.READY_FOR_INVOICE.code\n },\n contractorInvoiceNumber: vm.form.contractorInvoiceNumber\n };\n });\n _acceptedOrdersToDelete = [];\n _putInvoiceOrders = [];\n _.forEach(dataToPatch, function (dataToPatchSO) {\n var originalSO = _.find(vm.serviceOrders, function (so) {\n return so.serviceOrderId === dataToPatchSO.serviceOrderId;\n });\n if (originalSO) {\n var putSO = dtoService.transformServiceOrder(originalSO);\n putSO.soStatus.code = assetService.status.READY_FOR_INVOICE.code;\n putSO.soStatus.name = assetService.status.READY_FOR_INVOICE.value;\n putSO.soStatusName = assetService.status.READY_FOR_INVOICE.value;\n putSO.contractorInvoiceNumber = dataToPatchSO.contractorInvoiceNumber;\n _putInvoiceOrders.push(putSO);\n _acceptedOrdersToDelete.push(putSO.serviceOrderId);\n }\n });\n var batchDataSet = _.chunk(dataToPatch, 75);\n var queue = [];\n _.forEach(batchDataSet, function (batchData) {\n var wrappedDatat = dtoService.patchWrapper(batchData);\n queue.push(patchServiceOrder(wrappedDatat));\n });\n commonService.executePromises(queue).then(function () {\n if (!vm.error) {\n var promises = [putInvoiceOrders(_putInvoiceOrders), deleteAcceptedOrders(_acceptedOrdersToDelete)];\n commonService.executePromises(promises).then(function () {\n window.location.replace(baseUrl + activeOrdersUrl);\n });\n }\n });\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function setModels() {\n vm.form = {\n selectedOrders: vm.selectedOrders,\n totalBundleWorkOrders: getTotalOfSelectedOrders()\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function load() {\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\n var selectedOrders = vm.serviceOrders;\n setSelectedOrders(selectedOrders);\n setModels();\n }\n }\n function getTotalOfSelectedOrders() {\n var total = 0;\n _.forEach(vm.selectedOrders, function (serviceOrder) {\n total += serviceOrder.totalOrderCost;\n });\n return total;\n }\n function setSelectedOrders(serviceOrders) {\n vm.selectedOrders = _.map(serviceOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: serviceOrder.soStatus,\n soStatusName: serviceOrder.soStatusName,\n soType: serviceOrder.soType,\n soTypeName: serviceOrder.soTypeName,\n program: serviceOrder.program,\n programName: serviceOrder.programName,\n totalOrderCost: serviceOrder.woorSR === woorSRTypeServiceRequest ? serviceOrder.orderCostTimeDetails.regularLaborCost.value + serviceOrder.orderCostTimeDetails.entitlementLaborCost.value + serviceOrder.orderCostTimeDetails.partsCost.value + serviceOrder.orderCostTimeDetails.tripFee.value : serviceOrder.orderCostTimeDetails.tripFee.value + serviceOrder.orderCostTimeDetails.laborCost.value + serviceOrder.orderCostTimeDetails.materialCost.value,\n contractorInvoiceNumber: vm.form.contractorInvoiceNumber\n };\n });\n }\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalCancel', FPModalCancel);\nFPModalCancel.$inject = ['$log', '$scope', 'FPBroadcastService', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalCancel($log, $scope, broadcastService, assetService, broadcastService, dtoService, genericHelperService, indexedDbDataService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var activeOrdersUrl = assetService.pageUrls.activeOrders;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var kwCode = assetService.strings.CODE;\n var kwName = assetService.strings.NAME;\n var kwValue = assetService.strings.VALUE;\n\n /**\r\n * Global Vars\r\n */\n vm.dropdowns = {\n cancelReasonType: []\n };\n vm.form = {\n cancelledReason: {\n cancelReasonType: {\n code: null\n },\n reasonComments: null\n },\n serviceOrderId: null\n };\n vm.formInvalid = true;\n vm.reasonTypeOther = assetService.strings.OTHER;\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.cancelWorkOrder = cancelWorkOrder;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n });\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function cancelWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n dataToPatch = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n soStatus: {\n code: assetService.status.CONTRACTOR_CANCELLED.code\n },\n cancelledReason: {\n cancelReasonType: {\n code: vm.form.cancelledReason.cancelReasonType.code\n },\n reasonComments: vm.form.cancelledReason.reasonComments\n }\n };\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n patchServiceOrder(dataToPatch).then(function () {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n deleteAcceptedOrder(vm.serviceOrder.serviceOrderId).then(function () {\n window.location.replace(baseUrl + activeOrdersUrl);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n setModels();\n setDropdowns();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setDropdowns() {\n indexedDbDataService.getCancelledReasonTypes().then(function (data) {\n var cancelledReasonTypesList = genericHelperService.createDropdownList(data, kwCode, kwName);\n vm.dropdowns.cancelReasonType = genericHelperService.setSelectedProp(cancelledReasonTypesList, kwValue, vm.serviceOrder.cancelledReason.cancelReasonType.code);\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n });\n }\n function setModels() {\n vm.form = {\n cancelledReason: {\n cancelReasonType: {\n code: vm.serviceOrder.cancelledReason.cancelReasonType.code\n },\n reasonComments: vm.serviceOrder.cancelledReason.reasonComments\n },\n serviceOrderId: vm.serviceOrder.serviceOrderId\n };\n }\n function deleteAcceptedOrder(serviceOrderId) {\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalDecline', FPModalDecline);\nFPModalDecline.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', 'updateCEPServiceOrdersService'];\nfunction FPModalDecline($log, $scope, assetService, broadcastService, dtoService, genericHelperService, indexedDbDataService, serviceOrdersFactory, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var activeOrdersUrl = assetService.pageUrls.activeOrders;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var kwCode = assetService.strings.CODE;\n var kwName = assetService.strings.NAME;\n var kwValue = assetService.strings.VALUE;\n\n /**\r\n * Global Vars\r\n */\n vm.reasonTypeOther = assetService.strings.OTHER;\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.dropdowns = {\n declinedReasonTypes: []\n };\n vm.form = {\n serviceOrderId: null,\n declinedReason: {\n declineReasonType: {\n code: null\n },\n reasonComments: null\n }\n };\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.declineWorkOrder = declineWorkOrder;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n });\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n angular.element('#FPModalDeclineModal').modal('hide');\n }\n function declineWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n dataToPatch = {\n serviceOrderId: vm.form.serviceOrderId,\n soStatus: {\n code: assetService.status.CONTRACTOR_DECLINED.code\n },\n declinedReason: {\n declineReasonType: {\n code: vm.form.declinedReason.declineReasonType.code\n },\n reasonComments: vm.form.declinedReason.reasonComments\n }\n };\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n patchServiceOrder(dataToPatch).then(function (result) {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n deleteAcceptedOrder(vm.serviceOrder.serviceOrderId).then(function () {\n window.location.replace(baseUrl + activeOrdersUrl);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n setModels();\n setDropdowns();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setDropdowns() {\n indexedDbDataService.getDeclinedReasonTypes().then(function (data) {\n var declinedReasonTypesList = genericHelperService.createDropdownList(data, kwCode, kwName);\n vm.dropdowns.declinedReasonTypes = genericHelperService.setSelectedProp(declinedReasonTypesList, kwValue, vm.serviceOrder.declinedReason.declineReasonType.code);\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n });\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n declinedReason: {\n declineReasonType: {\n code: vm.serviceOrder.declinedReason.declineReasonType.code\n },\n reasonComments: vm.serviceOrder.declinedReason.reasonComments\n }\n };\n indexedDbDataService.getDeclinedReasonTypes().then(function (data) {\n var declinedReasonTypesList = genericHelperService.createDropdownList(data, kwCode, kwName);\n vm.dropdowns.declinedReasonTypes = genericHelperService.setSelectedProp(declinedReasonTypesList, kwValue, vm.serviceOrder.declinedReason.declineReasonType.code);\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n });\n }\n function deleteAcceptedOrder(serviceOrderId) {\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalDispatch', FPModalDispatch);\nFPModalDispatch.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPCurrentUserService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', 'sessionStorageService', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalDispatch($log, $scope, assetService, broadcastService, currentUserService, dtoService, genericHelperService, indexedDbDataService, serviceOrdersFactory, sessionStorageService, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var allTechnicians = [];\n var baseUrl = window.location.origin;\n var roleTechnician = assetService.userTypes.TECHNICIAN;\n var dataToPatch = null;\n var kwCdpId = assetService.strings.CDPID;\n var kwName = assetService.strings.NAME;\n var kwValue = assetService.strings.VALUE;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n\n /**\r\n * Global Vars\r\n */\n vm.dropdowns = {\n allTechnicians: null\n };\n vm.form = {\n serviceOrderId: null,\n cdpIdAssignedTechnician: null,\n multipleTechnicianRequired: null,\n assignedOtherTechnician: null\n };\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.dispatchWorkOrder = dispatchWorkOrder;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n setDropdowns();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function dispatchWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n var assignedTechnicianIndex = _.findIndex(allTechnicians, function (technician) {\n return technician.cdpId === vm.form.assignedTechnician.cdpId;\n });\n vm.form.soStatus = assetService.status.DISPATCHED.code;\n vm.form.soStatusName = assetService.status.DISPATCHED.value;\n vm.form.assignedTechnician = allTechnicians[assignedTechnicianIndex];\n vm.form.multipleTechnicianRequired = vm.form.multipleTechnicianRequired;\n vm.form.assignedOtherTechnician = vm.form.assignedOtherTechnician;\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function () {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n putAcceptedOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n var currentUserRole = currentUserService.getUserRole();\n if (currentUserRole === roleTechnician) {\n vm.disabled = true;\n }\n setModels();\n setDropdowns();\n }\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setDropdowns() {\n var users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n var data = _.filter(users, function (user) {\n return user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE;\n });\n data = _.map(data, function (item) {\n return {\n name: \"\".concat(item.name, \"-\").concat(item.badgeNumber),\n badgeNumber: item.badgeNumber,\n cdpId: item.cdpId,\n effectiveDate: item.effectiveDate,\n phone: item.phone,\n role: item.role,\n status: item.status\n };\n });\n vm.dropdowns = {\n allTechnicians: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(data, kwCdpId, kwName), kwValue, vm.serviceOrder.assignedTechnician.cdpId)\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n multipleTechnicianRequired: vm.serviceOrder.multipleTechnicianRequired,\n assignedOtherTechnician: vm.serviceOrder.assignedOtherTechnician,\n assignedTechnician: vm.serviceOrder.assignedTechnician\n };\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalUsersController', FPModalUsersController);\nFPModalUsersController.$inject = ['$log', 'assetService', 'FPGenericHelperService', 'sessionStorageService', 'FPBroadcastService', '$modalInstance', 'addCEPUsersService'];\nfunction FPModalUsersController($log, assetService, genericHelperService, sessionStorageService, broadcastService, $modalInstance, addCEPUsersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.data = {\n roles: [],\n form: {\n name: null,\n email: null,\n group: '',\n phoneNumber: '',\n status: ''\n },\n validationMessages: {}\n };\n vm.dataToPost = null;\n vm.user = {\n firstName: null,\n lastName: null,\n email: null,\n email2: null,\n role: null,\n phone: null\n };\n vm.loadingSpinner = true;\n\n // vm.validationMessages = assetService.ruleValidationsMessages;\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.setUser = setUser;\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function setUser() {\n // Data for the POST\n var cdpUserId = sessionStorageService.get(assetService.storageKeys.cdpUserId);\n var cdpId = genericHelperService.generateRandomNumbers(10);\n vm.dataToPost = {\n cdpUserId: cdpUserId,\n users: [{\n cdpId: cdpId,\n effectiveDate: moment().format('YYYY-MM-DDTHH:MM:SS-05:00'),\n name: \"\".concat(vm.user.firstName, \" \").concat(vm.user.lastName),\n phone: vm.user.phone,\n role: vm.user.role,\n email: vm.user.email\n }]\n };\n postUser(vm.dataToPost).then(function () {\n broadcastService.usersReloadRequired();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function setModels() {\n vm.data.roles = angular.copy(assetService.rolesOptions);\n vm.data.validationMessages = angular.copy(assetService.ruleValidationsMessages);\n vm.loadingSpinner = false;\n }\n function postUser(user) {\n return addCEPUsersService.sitecore.addCEPUser(user).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n setModels();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalMultiDispatchController', FPModalMultiDispatchController);\nFPModalMultiDispatchController.$inject = ['$log', '$scope', 'FPAssetService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', 'FPBroadcastService', 'sessionStorageService', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalMultiDispatchController($log, $scope, assetService, dtoService, genericHelperService, indexedDbDataService, serviceOrdersFactory, broadcastService, sessionStorageService, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _putAcceptedOrders = [];\n var allTechnicians = [];\n var activeOrdersUrl = assetService.pageUrls.activeOrders;\n var assignedTechnician = {};\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var kwCdpId = assetService.strings.CDPID;\n var kwName = assetService.strings.NAME;\n var kwValue = assetService.strings.VALUE;\n\n /**\r\n * Global Vars\r\n */\n vm.dropdown = {\n allTechnicians: null\n };\n vm.data = {\n assignedTechnicianCdpId: null,\n selectedOrders: null,\n validationMessages: null,\n warning: null\n };\n vm.serviceOrderLoaded = false;\n vm.serviceOrders = [];\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n var init = init;\n var setModels = setModels;\n vm.closeModal = closeModal;\n vm.setServiceOrder = setServiceOrder;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.updateSelectedServiceOrders, function (event, ars) {\n load();\n });\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function setServiceOrder(event) {\n broadcastService.patchEventStarted();\n event.stopPropagation();\n event.preventDefault();\n var assignedTechnicianIndex = _.findIndex(allTechnicians, function (technician) {\n return technician.cdpId === vm.data.assignedTechnicianCdpId;\n });\n dataToPatch = _.map(vm.data.selectedOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: {\n code: assetService.status.DISPATCHED.code\n },\n assignedTechnician: {\n cdpId: allTechnicians[assignedTechnicianIndex].cdpId\n }\n };\n });\n _putAcceptedOrders = [];\n _.forEach(dataToPatch, function (dataToPatchSO) {\n var originalSO = _.find(vm.serviceOrders, function (so) {\n return so.serviceOrderId === dataToPatchSO.serviceOrderId;\n });\n if (originalSO) {\n var putSO = dtoService.transformServiceOrder(originalSO);\n putSO.soStatus.code = assetService.status.DISPATCHED.code;\n putSO.soStatus.name = assetService.status.DISPATCHED.value;\n putSO.soStatusName = assetService.status.DISPATCHED.value;\n putSO.assignedTechnician.cdpId = dataToPatchSO.assignedTechnician.cdpId;\n _putAcceptedOrders.push(putSO);\n }\n });\n dataToPatch = dtoService.patchWrapper(dataToPatch);\n patchServiceOrder(dataToPatch).then(function () {\n putAcceptedOrders(_putAcceptedOrders).then(function () {\n window.location.replace(baseUrl + activeOrdersUrl);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\n if (vm.serviceOrders.length === 1) {\n assignedTechnician = vm.serviceOrders[0].assignedTechnician;\n }\n setModels();\n setDropdowns();\n }\n }\n function setDropdowns() {\n var users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n allTechnicians = _.filter(users, function (user) {\n return user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE;\n });\n allTechnicians = _.map(allTechnicians, function (item) {\n return {\n name: \"\".concat(item.name, \"-\").concat(item.badgeNumber),\n badgeNumber: item.badgeNumber,\n cdpId: item.cdpId,\n effectiveDate: item.effectiveDate,\n phone: item.phone,\n role: item.role,\n status: item.status\n };\n });\n allTechnicians = _.sortBy(allTechnicians, function (o) {\n return o.name;\n });\n vm.dropdown = {\n allTechnicians: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(allTechnicians, kwCdpId, kwName), kwValue, assignedTechnician.cdpId)\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n setModels = function setModels() {\n vm.data.selectedOrders = _.map(vm.serviceOrders, function (serviceOrder) {\n return {\n serviceOrderId: serviceOrder.serviceOrderId,\n soStatus: serviceOrder.soStatus,\n soStatusName: serviceOrder.soStatusName,\n soType: serviceOrder.soType,\n soTypeName: serviceOrder.soTypeName,\n program: serviceOrder.program,\n programName: serviceOrder.programName,\n // totalOrderCost: serviceOrder.orderCostTimeDetails.totalOrderCost.value,\n totalOrderCost: 0\n };\n });\n vm.data.assignedTechnicianCdpId = assignedTechnician.cdpId;\n vm.data.validationMessages = assetService.ruleValidationsMessages;\n vm.data.warning = _.filter(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.assignedTechnician.cdpId.length > 0;\n });\n };\n function putAcceptedOrders(serviceOrders) {\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalReadyForInvoice', FPModalReadyForInvoice);\nFPModalReadyForInvoice.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalReadyForInvoice($log, $scope, assetService, broadcastService, commonService, dtoService, indexedDbDataService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n\n /**\r\n * Global Vars\r\n */\n vm.errorDuplicateInvoiceId = false;\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.form = {\n contractorInvoiceNumber: null\n };\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.readyForInvoiceWorkOrder = readyForInvoiceWorkOrder;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n });\n $scope.$on(assetService.events.error.duplicateInvoiceId, function () {\n vm.errorDuplicateInvoiceId = true;\n });\n\n /**\r\n * Function Definitions\r\n */\n function putInvoiceOrder(serviceOrder) {\n return indexedDbDataService.putInvoiceOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function closeModal() {\n $modalInstance.close();\n }\n function deleteAcceptedOrder(serviceOrderId) {\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n setModels();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function readyForInvoiceWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n vm.form.soStatus = assetService.status.READY_FOR_INVOICE.code;\n vm.form.soStatusName = assetService.status.READY_FOR_INVOICE.value;\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function () {\n if (!vm.errorDuplicateInvoiceId) {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n var promises = [putInvoiceOrder(deserializeSO), deleteAcceptedOrder(deserializeSO.serviceOrderId)];\n commonService.executePromises(promises).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n });\n }\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function setModels() {\n vm.form = {\n contractorInvoiceNumber: vm.serviceOrder.contractorInvoiceNumber\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalReview', FPModalReview);\nFPModalReview.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalReview($log, $scope, assetService, broadcastService, dtoService, indexedDbDataService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n\n /**\r\n * Global Vars\r\n */\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.finishReview = finishReview;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n });\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n });\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function finishReview(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n vm.serviceOrder.soStatus = assetService.status.CONTRACTOR_REVIEWED.code;\n vm.serviceOrder.soStatusName = assetService.status.CONTRACTOR_REVIEWED.value;\n if (vm.serviceOrder.woorSR == assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function (result) {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n putAcceptedOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n console.log(vm.serviceOrder);\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalSaveChanges', FPModalSaveChanges);\nFPModalSaveChanges.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalSaveChanges($log, $scope, assetService, broadcastService, dtoService, indexedDbDataService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n\n /**\r\n * Global Vars\r\n */\n vm.serviceOrder = null;\n vm.loadingSpinner = true;\n vm.serviceOrderLoaded = false;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.closeModal = closeModal;\n vm.saveChanges = saveChanges;\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function saveChanges(event) {\n broadcastService.patchEventStarted();\n event.stopPropagation();\n event.preventDefault();\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var isAcceptedOrder = assetService.urlTokens.acceptedOrdersStatuses.includes(vm.serviceOrder.soStatus);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function () {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n if (isAcceptedOrder) {\n putAcceptedOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n putInvoiceOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function putInvoiceOrder(serviceOrder) {\n return indexedDbDataService.putInvoiceOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalScheduleAssign', FPModalScheduleAssign);\nFPModalScheduleAssign.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'FPDataModelsDTOService', 'FPDateHelperService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalScheduleAssign($log, $scope, assetService, broadcastService, dtoService, dateHelperService, genericHelperService, indexedDbDataService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var baseUrl = window.location.origin;\n var dataToPatch = null;\n var kwValue = assetService.strings.VALUE;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n\n /**\r\n * Global Vars\r\n */\n vm.formInvalid = false;\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.dropdowns = {\n scheduledStartDateHour: [],\n scheduledEndDateHour: [],\n firstAttemptDateHour: []\n };\n vm.form = {\n scheduledStartDate: null,\n scheduledStartDateDukeCalendar: null,\n scheduledStartDateHour: null,\n scheduledEndDate: null,\n scheduledEndDateDukeCalendar: null,\n scheduledEndDateHour: null,\n customerContactHistory: {\n noOfContactAttempts: null,\n firstAttemptDate: null,\n firstAttemptDateDukeCalendar: null,\n firstAttemptDateHour: null\n },\n customerContactPreferences: {\n notifyCustomerWhenInRoute: null\n }\n };\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\n vm.validationPatterns = assetService.validationPatterns;\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n vm.addDays = addDays;\n vm.closeModal = closeModal;\n vm.scheduleWorkOrder = scheduleWorkOrder;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n setDropdowns();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /**\r\n * Function Definitions\r\n */\n function addDays(date, days) {\n return dateHelperService.addDays(date, days);\n }\n function closeModal() {\n $modalInstance.close();\n }\n function onChange() {\n var serviceOrder = angular.copy(vm.form);\n if (vm.form.customerContactHistory.firstAttemptDateDukeCalendar) {\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = vm.form.customerContactHistory.firstAttemptDateDukeCalendar;\n } else if (FPModalScheduleAssignForm.hasOwnProperty('firstAttemptDateDukeCalendar')) {\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = FPModalScheduleAssignForm.firstAttemptDateDukeCalendar.$modelValue ? FPModalScheduleAssignForm.firstAttemptDateDukeCalendar.$modelValue : '';\n }\n if (vm.form.scheduledStartDateDukeCalendar) {\n serviceOrder.scheduledStartDateDukeCalendar = vm.form.scheduledStartDateDukeCalendar;\n } else if (FPModalScheduleAssignForm.hasOwnProperty('scheduledStartDateDukeCalendar')) {\n serviceOrder.scheduledStartDateDukeCalendar = FPModalScheduleAssignForm.scheduledStartDateDukeCalendar.$modelValue ? FPModalScheduleAssignForm.scheduledStartDateDukeCalendar.$modelValue : '';\n }\n serviceOrdersFactory.updateServiceOrder(serviceOrder);\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n setModels();\n setDropdowns();\n }\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function scheduleWorkOrder(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n vm.form.soStatus = assetService.status.SCHEDULED.code;\n vm.form.soStatusName = assetService.status.SCHEDULED.value;\n vm.form.scheduledStartDate = dateHelperService.concatDate(vm.form.scheduledStartDateDukeCalendar, vm.form.scheduledStartDateHour);\n vm.form.scheduledEndDate = dateHelperService.concatDate(vm.form.scheduledStartDateDukeCalendar, vm.form.scheduledEndDateHour);\n vm.form.customerContactHistory.firstAttemptDate = dateHelperService.concatDate(vm.form.customerContactHistory.firstAttemptDateDukeCalendar, vm.form.customerContactHistory.firstAttemptDateHour);\n vm.form.customerContactPreferences.notifyCustomerWhenInRoute = vm.form.customerContactPreferences.notifyCustomerWhenInRoute;\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function () {\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\n putAcceptedOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function setDropdowns() {\n vm.dropdowns = {\n scheduledStartDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.scheduledStartDateHour),\n scheduledEndDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.scheduledEndDateHour),\n firstAttemptDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.customerContactHistory.firstAttemptDateHour)\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateDukeCalendar,\n createdDateHour: !vm.serviceOrder.createdDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateHour,\n scheduledStartDateDukeCalendar: !vm.serviceOrder.scheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateDukeCalendar,\n scheduledStartDateHour: !vm.serviceOrder.scheduledStartDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateHour,\n scheduledEndDateDukeCalendar: !vm.serviceOrder.scheduledEndDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledEndDate) : vm.serviceOrder.scheduledEndDateDukeCalendar,\n scheduledEndDateHour: !vm.serviceOrder.scheduledEndDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledEndDate) : vm.serviceOrder.scheduledEndDateHour,\n customerContactHistory: {\n noOfContactAttempts: vm.serviceOrder.customerContactHistory.noOfContactAttempts,\n firstAttemptDateDukeCalendar: !vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar,\n firstAttemptDateHour: !vm.serviceOrder.customerContactHistory.firstAttemptDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateHour\n },\n customerContactPreferences: {\n notifyCustomerWhenInRoute: vm.serviceOrder.customerContactPreferences.notifyCustomerWhenInRoute\n }\n };\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalUserAdministration', FPModalUserAdministration);\nFPModalUserAdministration.$inject = ['$scope', 'FPAssetService', 'FPDateHelperService', 'sessionStorageService', 'FPGroupingPagerService', '$modalInstance'];\nfunction FPModalUserAdministration($scope, assetService, FPDateHelperService, sessionStorageService, pagerService, $modalInstance) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var workingUsers;\n var _role = null;\n var widgetUsers = [];\n\n /**\r\n * Global Vars\r\n */\n vm.closeModal = closeModal;\n vm.data = {\n users: []\n };\n vm.getDateFromFullDate = getDateFromFullDate;\n vm.pagination = assetService.pagination;\n vm.pager = pagerService.createPager(assetService.storageKeys.acceptedOrdersPager, 0, 1, 10);\n vm.noWorkUsers = false;\n vm.noWorkingSetUsers = false;\n vm.page = 0;\n vm.loadingSpinner = true;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.usersLoaded, function (event, ars) {\n load();\n });\n\n /**\r\n * Function Declarations\r\n */\n var init = init;\n var setModels = setModels;\n vm.setPage = setPage;\n vm.changePage = changePage;\n\n /**\r\n * Function Definitions\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n setModels = function setModels() {\n vm.page = 1;\n vm.setPage(vm.page);\n vm.loadingSpinner = false;\n };\n function load() {\n widgetUsers = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n if (widgetUsers && widgetUsers.length > 0) {\n widgetUsers = createUsers(widgetUsers);\n widgetUsers = _.sortBy(widgetUsers, function (user) {\n return user.name;\n });\n setModels();\n }\n }\n function getDateFromFullDate(date) {\n return FPDateHelperService.getDateFromFullDate(date);\n }\n function changePage() {\n vm.page += 1;\n setPage(vm.page);\n }\n function setPage(page) {\n if (page >= 1 || typeof vm.pager !== \"undefined\" && page <= vm.pager.totalPages) {\n if (widgetUsers.length > 0) {\n vm.noWorkingSetUsers = false;\n vm.noWorkUsers = false;\n vm.pager = pagerService.createPager(widgetUsers.length, page, 10);\n workingUsers = widgetUsers.slice(vm.pager.startRow, vm.pager.endRow + 1);\n if (page > 1) {\n vm.data.users = _.union(vm.data.users, workingUsers);\n } else {\n vm.data.users = workingUsers;\n }\n } else {\n vm.noWorkingSetUsers = true;\n }\n }\n }\n function createUsers(users) {\n _role = null;\n var result = users.map(function (user) {\n if (user.role.toLowerCase() === assetService.userRoles.contractor) {\n _role = assetService.userRoleLabels.contractor;\n } else {\n _role = assetService.userRoleLabels.technician;\n }\n return {\n name: user.name,\n email: user.email,\n status: user.status,\n role: _role,\n effectiveDate: user.effectiveDate,\n cdpId: user.cdpId\n };\n });\n return result;\n }\n init = function init() {\n load();\n };\n init();\n}\napp.controller('FPModalWorkComplete', FPModalWorkComplete);\nFPModalWorkComplete.$inject = ['$log', '$scope', 'assetService', 'FPBroadcastService', 'commonService', 'FPDateHelperService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPGenericHelperService', 'FPServiceOrdersFactory', '$modalInstance', 'updateCEPServiceOrdersService'];\nfunction FPModalWorkComplete($log, $scope, assetService, broadcastService, commonService, dateHelperService, dtoService, indexedDbDataService, genericHelperService, serviceOrdersFactory, $modalInstance, updateCEPServiceOrdersService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var baseUrl = window.location.origin;\n var kwCode = assetService.strings.CODE;\n var kwDeviceCode = assetService.strings.DEVICE_CODE;\n var kwDeviceName = assetService.strings.DEVICE_NAME;\n var kwName = assetService.strings.NAME;\n var kwMeterId = assetService.strings.METERID;\n var kwValue = assetService.strings.VALUE;\n var kwText = assetService.strings.TEXT;\n var dataToPatch = null;\n // eslint-disable-next-line prefer-destructuring\n var meterNotAtPremise = assetService.resolutionTypes.meterNotAtPremise;\n var orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n var repairTypeOptions = [];\n var resolutionTypeOptions = [];\n\n /**\r\n * Global Vars\r\n */\n vm.dropdowns = {\n meterNumbers: null,\n repairTypes: null,\n resolutionTypes: null,\n customerSurveyMethods: null\n };\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.typeInspectReplace = assetService.soType.INSPECTION_REPLACEMENT;\n vm.loadingSpinner = true;\n vm.currentTodayDate = undefined;\n vm.pastDate = undefined;\n vm.checkInstallation = false;\n\n /**\r\n * Function Declarations\r\n */\n vm.addDays = addDays;\n vm.subDays = subDays;\n vm.closeModal = closeModal;\n vm.workComplete = workComplete;\n vm.isMeterRequired = isMeterRequired;\n vm.checkResolutionType = checkResolutionType;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.reloadServiceOrder, function () {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n setDropdowns();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /**\r\n * Function Definitions\r\n */\n function addDays(date, days) {\n return dateHelperService.addDays(date, days);\n }\n function subDays(date, days) {\n var newDate = new Date(date);\n newDate.setDate(newDate.getDate() - days);\n return new Date(newDate);\n }\n function closeModal() {\n vm.form.resolutionDetails.resolutionDateDukeCalendar = null;\n $modalInstance.close();\n }\n function isMeterRequired() {\n if (vm.form.soType === vm.typeInstallation.code && !vm.form.serviceAddress.meterNumber[0].meterId && vm.serviceOrder.resolutionDetails.resolutionType.code === meterNotAtPremise) {\n return false;\n }\n return true;\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n if (vm.serviceOrder) {\n setModels();\n setDropdowns();\n }\n vm.currentTodayDate = moment(new Date()).format('MM/DD/YYYY');\n vm.pastDate = moment(subDays(vm.currentTodayDate, 90)).format('MM/DD/YYYY');\n if (vm.form && vm.form.soType === vm.typeInstallation.code && (vm.form.resolutionDetails.resolutionType.code == 'INSTALLED' || vm.form.resolutionDetails.resolutionType.code == 'DEVICE_ALREADY_INSTALLED' || vm.form.resolutionDetails.resolutionType.code == 'DIFFERENT_DEVICE_INSTALLED')) {\n vm.checkInstallation = true;\n } else {\n vm.checkInstallation = false;\n }\n }\n function checkResolutionType() {\n if (vm.form && vm.form.soType == vm.typeInstallation.code && (vm.form.resolutionDetails.resolutionType.code == 'INSTALLED' || vm.form.resolutionDetails.resolutionType.code == 'DEVICE_ALREADY_INSTALLED' || vm.form.resolutionDetails.resolutionType.code == 'DIFFERENT_DEVICE_INSTALLED')) {\n vm.checkInstallation = true;\n } else {\n vm.checkInstallation = false;\n }\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function patchServiceOrder(serviceOrder) {\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setDropdowns() {\n var promises = [];\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\n promises.push(indexedDbDataService.getSRRepairTypesByProduct(vm.serviceOrder.program).then(function (data) {\n repairTypeOptions = data;\n }));\n promises.push(indexedDbDataService.getSRResolutionTypesByProduct(vm.serviceOrder.program).then(function (data) {\n resolutionTypeOptions = data;\n }));\n } else {\n promises.push(indexedDbDataService.getWOResolutionTypesByWOType(vm.serviceOrder.soType).then(function (data) {\n resolutionTypeOptions = data;\n }));\n }\n commonService.executePromises(promises).then(function () {\n vm.dropdowns = {\n repairTypeOptions: null,\n meterNumbers: null,\n resolutionTypeOptions: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(resolutionTypeOptions, kwCode, kwName), kwValue, vm.form.resolutionDetails.resolutionType.code),\n equipmentOptions: {\n options: null\n }\n };\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\n vm.dropdowns.repairTypeOptions = genericHelperService.setSelectedProp(genericHelperService.createDropdownList(repairTypeOptions, kwCode, kwName), kwValue, vm.form.repairType.code);\n }\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n var dropDownList = genericHelperService.createDropdownList(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId, kwMeterId);\n vm.dropdowns.meterNumbers = genericHelperService.setSelectedProp(dropDownList, kwValue, vm.serviceOrder.serviceAddress.meterNumber[0].meterId);\n }\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n var _dropDownList = genericHelperService.createDropdownList(vm.serviceOrder.equipmentOptions.options, kwDeviceCode, kwDeviceName);\n vm.dropdowns.equipmentOptions.options = genericHelperService.setSelectedProp(_dropDownList, kwValue, vm.serviceOrder.equipmentDetails.deviceCode);\n }\n if (vm.serviceOrder.soType === vm.typeInspectReplace.code) {\n var _dropDownList2 = genericHelperService.createDropdownList(vm.serviceOrder.equipmentOptions.options, kwDeviceCode, kwDeviceName);\n vm.dropdowns.equipmentOptions.options = genericHelperService.setSelectedProp(_dropDownList2, kwText, vm.serviceOrder.equipmentDetails.replacementDeviceName);\n }\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n });\n }\n function setModels() {\n vm.form = {\n descriptionOfWorkQtyParts: vm.serviceOrder.woorSR === vm.typeServiceRequest ? vm.serviceOrder.descriptionOfWorkQtyPartsCovered : vm.serviceOrder.descriptionOfWorkQtyParts,\n descriptionOfWorkQtyPartsCovered: vm.serviceOrder.woorSR === vm.typeServiceRequest ? vm.serviceOrder.descriptionOfWorkQtyPartsCovered : null,\n customerContactPreferences: {\n preferredEmailAddress: vm.serviceOrder.customerContactPreferences.preferredEmailAddress\n },\n serviceAddress: {\n meterNumber: [{\n meterId: vm.serviceOrder.soType === vm.typeInstallation.code ? !vm.serviceOrder.serviceAddress.meterNumber ? vm.serviceOrder.serviceAddress.meterNumber[0].meterId : null : vm.serviceOrder.serviceAddress.meterNumber !== '' ? genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId) : null\n }]\n },\n resolutionDetails: {\n resolutionType: {\n code: vm.serviceOrder.resolutionDetails.resolutionType.code\n },\n resolutionDateDukeCalendar: !vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.resolutionDetails.resolutionDate) : vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar\n },\n repairType: {\n code: vm.serviceOrder.repairType.code\n },\n customerContactHistory: {\n surveyReceivedByCustomer: vm.serviceOrder.customerContactHistory.surveyReceivedByCustomer\n },\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateDukeCalendar,\n scheduledStartDateDukeCalendar: !vm.serviceOrder.scheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateDukeCalendar,\n woorSR: vm.serviceOrder.woorSR,\n soType: vm.serviceOrder.soType\n };\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n var installationEquipDetails = {\n deviceName: vm.serviceOrder.equipmentDetails.deviceName ? vm.serviceOrder.equipmentDetails.deviceName : '',\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber ? vm.serviceOrder.equipmentDetails.deviceSerialNumber : ''\n };\n vm.form.equipmentDetails = installationEquipDetails;\n }\n if (vm.serviceOrder.soType === vm.typeInspectReplace.code) {\n var equipmentDetails = {\n replacementNeeded: vm.serviceOrder.equipmentDetails.replacementNeeded,\n replacementDeviceName: vm.serviceOrder.equipmentDetails.replacementDeviceName,\n replacementDeviceSerialNo: vm.serviceOrder.equipmentDetails.replacementDeviceSerialNo,\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational\n };\n vm.form.equipmentDetails = equipmentDetails;\n }\n }\n function workComplete(event) {\n broadcastService.patchEventStarted();\n event.preventDefault();\n event.stopPropagation();\n vm.form.soStatus = assetService.status.COMPLETED.code;\n vm.form.soStatusName = assetService.status.COMPLETED.value;\n vm.form.resolutionDetails.resolutionDate = dateHelperService.concatDate(vm.form.resolutionDateDukeCalendar, '00:00');\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\n vm.form.descriptionOfWorkQtyPartsCovered = vm.form.descriptionOfWorkQtyParts;\n }\n if (vm.serviceOrder.soType === assetService.soType.INSPECTION_REPLACEMENT.code) {\n var foundOption = _.find(vm.serviceOrder.equipmentOptions.options, function (option) {\n return option.deviceCode === vm.form.equipmentDetails.replacementDeviceName;\n });\n if (foundOption) {\n vm.form.equipmentDetails.replacementDeviceName = foundOption.deviceName;\n }\n }\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\n } else {\n switch (vm.serviceOrder.soType) {\n case assetService.soType.INSTALLATION.code:\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\n break;\n case assetService.soType.INSPECTION_REPLACEMENT.code:\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\n break;\n case assetService.soType.REMOVAL.code:\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\n break;\n default:\n break;\n }\n }\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\n var deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\n patchServiceOrder(dataToPatch).then(function () {\n putAcceptedOrder(deserializeSO).then(function () {\n window.location.replace(baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function () {});\n broadcastService.loadingSpinner(true);\n closeModal();\n }\n function putAcceptedOrder(serviceOrder) {\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('CCModalDelegationInvite', CCModalDelegationInvite);\nCCModalDelegationInvite.$inject = ['$log', 'apiApigeeConfigService', 'assetService', 'ccDelegationAssetService', 'sessionStorageService', 'updateDelegationService', '$modalInstance'];\nfunction CCModalDelegationInvite($log, apiApigeeConfigService, assetService, ccDelegationAssetService, sessionStorageService, updateDelegationService, $modalInstance) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _accept = ccDelegationAssetService.strings.accept;\n var _decline = ccDelegationAssetService.strings.decline;\n var _successfullyUpdated = assetService.replyCodes.Successfully_Updated;\n var _status = null;\n\n /* --------------Scope Vars-----------------------*/\n vm.data = {\n invites: [],\n multiple: false\n };\n vm.dataToPost = {\n delegations: []\n };\n vm.updateDelegation = {\n replyCode: null\n };\n vm.form = {\n invite: []\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.acceptDeclineDelegation = acceptDeclineDelegation;\n /* --------------Function Definitions-----------------------*/\n function acceptDeclineDelegation(option, status) {\n if (option === 1) {\n if (status === 0) {\n _status = _decline;\n } else {\n _status = _accept;\n }\n vm.dataToPost.delegations.push({\n accountDeleagtionRequestId: vm.data.invites[0].accountDelegationRequestId,\n status: _status\n });\n } else {\n vm.dataToPost.delegations = _.map(vm.data.invites, function (item, index) {\n return {\n accountDeleagtionRequestId: item.accountDelegationRequestId,\n status: vm.form.invite[index] === true ? _accept : _decline\n };\n });\n }\n updateDelegation(vm.dataToPost).then(function () {\n if (vm.updateDelegation.replyCode === _successfullyUpdated) {\n $modalInstance.close();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function updateDelegation(data) {\n return updateDelegationService.sitecore.updateDelegation(data).then(function (result) {\n vm.updateDelegation.replyCode = result.messageText;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.data.invites = sessionStorageService.get(ccDelegationAssetService.storageKeys.dashboard.delegationInvite);\n if (vm.data.invites.length > 1) {\n vm.data.multiple = true;\n }\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.factory('CCDashboardFactory', function ($q, assetService, apiService, apiConfigService) {\n var getDashboarDdueDataUrl = function getDashboarDdueDataUrl() {\n var url = apiConfigService.developUrls.getDashboarDdueDataUrl();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getDashboarBPPUrl = function getDashboarBPPUrl() {\n var url = apiConfigService.developUrls.getDefaultProgramsUrl();\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getDashboarDdueDataUrl: getDashboarDdueDataUrl,\n getDashboarBPPUrl: getDashboarBPPUrl\n };\n});\napp.controller('correspondencePaperlessBillingController', correspondencePaperlessBillingController);\ncorrespondencePaperlessBillingController.$inject = ['$scope', 'paperlessBillingFactory', 'commonService', 'apiConfigService', 'genericHelperService', 'sessionStorageService', 'assetService'];\nfunction correspondencePaperlessBillingController($scope, paperlessBillingFactory, commonService, apiConfigService, genericHelperService, sessionStorageService, assetService) {\n /**\r\n * Scope Vars\r\n */\n var _url = null;\n var _urlCities = null;\n var widgetUsers = null;\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.title = 'Paperless Billing';\n vm.data = {};\n\n /**\r\n * Function Declarations\r\n */\n var init = init;\n var setModel = setModel;\n\n /**\r\n * Function Definitions\r\n */\n\n vm.doEnrroll = function (keyName) {\n var dataObj = null;\n dataObj = vm.managerData.managerData;\n vm.formBtn = _.isEqual(vm.data, dataObj) ? true : false;\n };\n var formatCity = function formatCity(city) {\n city = city.replace(/[A-Za-z]+/g, function (match) {\n return match.trim()[0];\n });\n city = city.replace(/\\s/g, '');\n return city;\n };\n var setFormatAddress = function setFormatAddress(address) {\n address.streetAddress += ',';\n address.city = formatCity(address.city);\n return address;\n };\n var setData = function setData(account, mailingAddres) {\n return {\n accountNumber: account.accountNumber,\n accountNickName: account.accountNickName,\n customerName: account.customerName,\n residential: account.residential,\n isSuccess: account.isSuccess,\n mailingAddres: mailingAddres\n };\n };\n var setList = function setList(accounts) {\n var mailingAddres = '';\n vm.data.accounts = [];\n accounts.map(function (account) {\n mailingAddres = setFormatAddress(account.mailingAddres);\n mailingAddres = genericHelperService.restructArrayObjDropdown([mailingAddres], 'maId');\n vm.data.accounts.push(setData(account, mailingAddres[0]));\n });\n };\n setModel = function setModel() {\n setList(vm.accounts.accounts);\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, vm.data);\n };\n var getPaperlessBillding = function getPaperlessBillding() {\n return paperlessBillingFactory.getServicePaperlessBilling(_url).then(function (result) {\n vm.accounts = result;\n }, function (error) {\n console.log(error);\n });\n };\n function load() {\n _url = apiConfigService.getDefaultPaperlessBilldingUrl('');\n var promises = [getPaperlessBillding()];\n commonService.executePromises(promises).then(function () {\n setModel();\n });\n }\n init = function init() {\n load();\n };\n init();\n}\napp.factory('paperlessBillingFactory', function ($q, assetService, apiService, FPBroadcastService) {\n var getServicePaperlessBilling = function getServicePaperlessBilling(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getServicePaperlessBilling: getServicePaperlessBilling\n };\n});\napp.factory('correspondenceFactory', function ($q, assetService, apiService) {\n var getServiceCorrespon = function getServiceCorrespon(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getServiceCorrespon: getServiceCorrespon\n };\n});\napp.controller('CCSSOComponentController', CCSSOComponentController);\nCCSSOComponentController.$inject = ['commongaTaggingService', 'sessionStorageService', 'assetService', 'getLoggedInUserDetailsService', 'ccGetUserAccountsService', 'returnApplicableProgramsService', '$scope'];\nfunction CCSSOComponentController(commongaTaggingService, sessionStorageService, assetService, getLoggedInUserDetailsService, ccGetUserAccountsService, returnApplicableProgramsService, $scope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.isNonNativeWithAccounts = false;\n vm.isNonNativeWithoutAccounts = false;\n vm.contributionProgram = null;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.enableSso = false;\n vm.dataAccount = {};\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n var title = arrayElements[2].split(':').join('');\n arrayElements.splice(2, 1, 'subheadline:' + title);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePushSSO(arrayElements);\n }\n function load() {\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n setSTLSession();\n if (dashboardUserType === null) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (userresults) {\n vm.dataAccount = {\n emailId: userresults.Value,\n cdpId: userresults.Key\n };\n ccGetUserAccountsService.getUserAccounts(vm.dataAccount).then(function (results) {\n if (results.nativeUser) {\n vm.enableSso = true;\n } else {\n vm.enableSso = false;\n }\n });\n });\n } else if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS) {\n vm.enableSso = false;\n } else {\n vm.enableSso = true;\n }\n }\n function setSTLSession() {\n var globalSelectedAccount;\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n var params = {\n contractAccountId: globalSelectedAccount.accountNum\n };\n returnApplicablePrograms(params).then(function () {\n sessionStorageService.set(assetService.storageKeys.customerAssistance, vm.contributionProgram);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function returnApplicablePrograms(data) {\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(function (result) {\n var _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\n vm.contributionProgram = {\n id: _temporalProgram[0].trim(),\n name: _temporalProgram[1],\n contractAccount: result.d.Programtores_nav.results[0].ContractAccount,\n startDate: result.d.Programtores_nav.results[0].ProgramStartDate,\n endDate: result.d.Programtores_nav.results[0].ProgramEndDate,\n status: result.d.Programtores_nav.results[0].Status,\n // Awaiting 'Status' field to be added to response\n dollarAmount: result.d.Programtores_nav.results[0].DollarAmount\n };\n vm.contributionName = vm.contributionProgram.name.toLowerCase().split(' ').map(function (s) {\n return s.charAt(0).toUpperCase() + s.substring(1);\n }).join(' ');\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var init = function init() {\n var elem = $('.CCDashboard')[0];\n if (elem === undefined) {\n load();\n }\n };\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n var elem = $('.CCDashboard')[0];\n if (elem !== undefined) {\n load();\n }\n });\n init();\n}\n/* eslint-disable no-underscore-dangle */\nfunction CCModalAPEditUser($log, $rootScope, $modalInstance, $timeout, apiApigeeConfigService, assetService, updateDelegationService, maintainRelationshipService, sessionStorageService, dateHelperService, ccDelegationAssetService, dataModelsDTOProductsAndServices, FPBroadcastService, genericHelperService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _action = assetService.serviceActions.maintainRelationship.UPD_REL;\n this.selectedUser = {};\n /* --------------Global Vars-----------------------*/\n var globalSelectedAccount = {};\n var globalAccountInfo = {};\n vm.disableUpdateButton = true;\n vm.load = false;\n vm.endDate = dateHelperService.getDateFromFullDate(moment().add(2, 'years').format());\n vm.today = new Date();\n vm.today.setDate(vm.today.getDate() + 1);\n vm.today = dateHelperService.getDateFromFullDate(vm.today);\n vm.tableRelations = ccDelegationAssetService.accountPermissionsTable.tableRelations;\n vm.usersDelegations = [];\n vm.userRole = '';\n vm.accessEndDate = '';\n vm.updatedRole = '';\n vm.updatedendDate = '';\n /* ---------------Initialization-------------------*/\n\n /* --------------$on functions-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function closeModal() {\n $modalInstance.close();\n }\n function changeRelationship() {\n if (vm.userRole && vm.userRole !== vm.selectedUser.relationship) {\n vm.disableUpdateButton = false;\n } else {\n vm.disableUpdateButton = true;\n }\n }\n vm.tableRelations = genericHelperService.arrayToDrop(vm.tableRelations, null, null);\n function saveDelegations() {\n var adminRoleId = '001';\n var viewerRoleId = '012';\n $rootScope.delegation = true;\n var accessEndDateValue;\n if (!angular.isDefined(vm.accessEndDate)) {\n vm.accessEndDate = vm.selectedUser.accesUntil;\n }\n if (!angular.isDefined(vm.userRole)) {\n vm.userRole = vm.selectedUser.relationship;\n }\n if (vm.selectedUser.status !== 'ACTIVE') {\n if (vm.accessEndDate === 'No End Date') {\n accessEndDateValue = '';\n } else {\n accessEndDateValue = vm.accessEndDate.replace(/\\//g, '-');\n accessEndDateValue = accessEndDateValue.replace(/ /g, '');\n }\n var dataObject = {\n accountDelegationRequestId: vm.selectedUser.delegationId,\n accessEndDate: accessEndDateValue === '' ? accessEndDateValue : moment(accessEndDateValue).format(),\n role: vm.userRole === 'Admin' ? adminRoleId : viewerRoleId\n };\n updateDelegationService.sitecore.updateDelegationManage(dataObject).then(function (result) {\n if (result.returnCode === 0) {\n setToast(true);\n } else {\n setToast(false);\n }\n closeModal();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n setToast(false);\n $rootScope.delegation = false;\n closeModal();\n });\n }\n if (vm.selectedUser.status === 'ACTIVE') {\n if (vm.accessEndDate == 'No End Date') {\n accessEndDateValue = '9999-12-31T00:00:00';\n } else {\n var date = new Date(vm.accessEndDate);\n if (date == 'Invalid Date') {\n var accessEndDateVal = vm.accessEndDate.replace(/ /g, '');\n date = new Date(accessEndDateVal);\n }\n var month = date.getMonth() + 1;\n var dateValue = date.getDate();\n accessEndDateValue = \"\".concat(date.getFullYear(), \"-\").concat(month, \"-\").concat(dateValue, \"T00:00:00\");\n }\n var dataToPost = {\n action: _action,\n businessPartnerId: vm.primaryBP,\n relatedBusinessPartnerId: vm.selectedUser.delegationId,\n sessionNo: '',\n accounts: [{\n contractAccountId: vm.contractAccountId,\n relationship: vm.userRole === 'Admin' ? '001' : '012',\n caAccessEndDate: accessEndDateValue\n }]\n };\n maintainRelationshipService.sitecore.maintainRelationship(dataToPost).then(function (result) {\n var _result$ReturnCodes$;\n console.log(result);\n if (result.ReturnCodes && ((_result$ReturnCodes$ = result.ReturnCodes[0].ReturnCode1) === null || _result$ReturnCodes$ === void 0 ? void 0 : _result$ReturnCodes$.ReplyCode) === 'SUCCESS') {\n setToast(true);\n } else {\n setToast(false);\n }\n // vm.maintainRelationship.ReplyCode = result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.ZreplyCode;\n closeModal();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n setToast(false);\n $rootScope.delegation = false;\n closeModal();\n });\n }\n }\n function setToast(isSusccess) {\n if (isSusccess) {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'success');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Success! Changes saved.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n } else {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'error');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Sorry! We are unable to save your changes at this time.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n }\n $rootScope.$broadcast(ccDelegationAssetService.events.updateUserAP);\n }\n function formUpdated() {\n if (vm.load) {\n $timeout(function () {\n if (vm.editUser.calendar.$touched) {\n if (vm.accessEndDate === 'No End Date' || vm.accessEndDate && vm.accessEndDate.length === 14) {\n vm.disableUpdateButton = false;\n } else {\n vm.disableUpdateButton = true;\n }\n } else if (vm.userRole && vm.userRole !== vm.selectedUser.relationship) {\n vm.disableUpdateButton = false;\n } else {\n vm.disableUpdateButton = true;\n }\n }, 1000);\n }\n vm.load = true;\n }\n function capitalizeName(name) {\n return dataModelsDTOProductsAndServices.transformName(name);\n }\n function load() {\n vm.disableUpdateButton = true;\n vm.sessionStorage = sessionStorageService.get(ccDelegationAssetService.storageKeys.accountPermissions);\n vm.selectedUser = vm.sessionStorage.selectedUser;\n vm.userRole = vm.selectedUser.relationship;\n vm.accessEndDate = vm.selectedUser.accesUntil;\n }\n /* --------------Function Declarations-----------------------*/\n\n vm.closeModal = closeModal;\n vm.saveDelegations = saveDelegations;\n vm.changeRelationship = changeRelationship;\n vm.capitalizeName = capitalizeName;\n vm.formUpdated = formUpdated;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.setToast = setToast;\n\n /* ---------------Initialization-------------------*/\n function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n // sessionStorageService.delete(ccDelegationAssetService.storageKeys.accountPermissions);\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.sessionData = sessionStorageService.get(ccDelegationAssetService.storageKeys.accountPermissions);\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.primaryBP = globalAccountInfo.primaryBp;\n vm.primaryEmail = globalAccountInfo.userEmail;\n load();\n }\n init();\n}\nCCModalAPEditUser.$inject = ['$log', '$rootScope', '$modalInstance', '$timeout', 'apiApigeeConfigService', 'assetService', 'updateDelegationService', 'maintainRelationshipService', 'sessionStorageService', 'dateHelperService', 'ccDelegationAssetService', 'dataModelsDTOProductsAndServices', 'FPBroadcastService', 'genericHelperService', 'commongaTaggingService'];\napp.controller('CCModalAPEditUser', CCModalAPEditUser);\n/* eslint-disable no-underscore-dangle */\nfunction CCModalAPResendInviteLink($log, $rootScope, $modalInstance, $timeout, apiApigeeConfigService, assetService, ccDelegationAssetService, resendEmailService, sessionStorageService, FPBroadcastService, commongaTaggingService) {\n /* ---------------Scope Vars-----------------------*/\n var vm = this;\n var _success = assetService.replyCodes.Success;\n var _index = null;\n /* --------------Global Vars-----------------------*/\n vm.data = {\n email: null,\n role: null,\n accountDelegationRequestId: null\n };\n vm.sessionData = {};\n vm.resendEmail = {\n replyCode: null\n };\n\n /* ---------------Initialization-------------------*/\n\n /* --------------$on functions-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function resendEmail(data) {\n return resendEmailService.sitecore.resendEmail(data).then(function (result) {\n vm.resendEmail.replyCode = result.message;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function cancelResendInviteLink() {\n $modalInstance.close();\n }\n function resendInviteLink() {\n $rootScope.delegation = true;\n var dataToPost = {\n accountDelegationRequestId: vm.data.accountDelegationRequestId\n };\n resendEmail(dataToPost).then(function () {\n if (vm.resendEmail.replyCode === _success) {\n setToast(true);\n // FPBroadcastService.resendLink();\n } else {\n setToast(false);\n $rootScope.delegation = false;\n }\n $modalInstance.close();\n }, function (error) {\n setToast(false);\n $rootScope.delegation = false;\n $modalInstance.close();\n });\n }\n function setToast(isSusccess) {\n if (isSusccess) {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'success');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Success! Invitation sent.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n } else {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'error');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Sorry! We were unable to resend the invitation at this time.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n }\n $rootScope.$broadcast(ccDelegationAssetService.events.resendLink);\n }\n function load() {\n vm.sessionData = sessionStorageService.get(ccDelegationAssetService.storageKeys.accountPermissions);\n _index = vm.sessionData.resendLink.index;\n vm.data.email = vm.sessionData.users[_index].userName;\n vm.data.role = vm.sessionData.users[_index].relationship;\n vm.data.accountDelegationRequestId = vm.sessionData.users[_index].delegationId;\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelResendInviteLink = cancelResendInviteLink;\n vm.resendInviteLink = resendInviteLink;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.setToast = setToast;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nCCModalAPResendInviteLink.$inject = ['$log', '$rootScope', '$modalInstance', '$timeout', 'apiApigeeConfigService', 'assetService', 'ccDelegationAssetService', 'resendEmailService', 'sessionStorageService', 'FPBroadcastService', 'commongaTaggingService'];\napp.controller('CCModalAPResendInviteLink', CCModalAPResendInviteLink);\n/* eslint-disable no-underscore-dangle */\nfunction CCModalAPDeleteUser($log, $rootScope, assetService, ccDelegationAssetService, deleteDelegationService, maintainRelationshipService, FPBroadcastService, sessionStorageService, dataModelsDTOProductsAndServices, $modalInstance, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _delRel = assetService.serviceActions.maintainRelationship.DEL_REL;\n var _succes = ccDelegationAssetService.strings.success;\n var _succesDeleteDelegation = ccDelegationAssetService.strings.success_delete_delegation;\n var _pending = ccDelegationAssetService.strings.Pending;\n var _declined = ccDelegationAssetService.strings.Declined;\n var _expiredInvite = ccDelegationAssetService.strings.expiredInvite;\n var _selectedAccount = null;\n var _index = null;\n\n /* --------------Global Vars-----------------------*/\n vm.data = {\n user: null,\n contractAccount: null,\n status: null,\n bussinesPartner: null,\n relatedBusinessPartner: null,\n role: null,\n accountDelegationRequestId: []\n };\n vm.deleteDelegation = {\n replyCode: null\n };\n vm.maintainRelationship = {\n replyCode: null\n };\n vm.sessionStorage = {};\n vm.users = [];\n /* ---------------Initialization-------------------*/\n\n /* --------------$on functions-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function maintainRelationship(data) {\n $rootScope.delegation = true;\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(function (result) {\n var _result$ReturnCodes$;\n if (result.ReturnCodes && ((_result$ReturnCodes$ = result.ReturnCodes[0].ReturnCode1) === null || _result$ReturnCodes$ === void 0 ? void 0 : _result$ReturnCodes$.ReplyCode) === 'SUCCESS') {\n vm.maintainRelationship.replyCode = result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.ReplyCode;\n setToast(true);\n } else {\n setToast(false);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n setToast(false);\n $rootScope.delegation = false;\n $modalInstance.close();\n });\n }\n function deleteDelegation(data) {\n $rootScope.delegation = true;\n return deleteDelegationService.sitecore.deleteDelegation(data).then(function (result) {\n if (result.messageText === 'Successfully Deleted the rows' || result.messageText === 'Success') {\n vm.deleteDelegation.replyCode = result.messageText;\n setToast(true);\n } else {\n $rootScope.delegation = false;\n setToast(false);\n }\n $modalInstance.close();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n setToast(false);\n $rootScope.delegation = false;\n $modalInstance.close();\n });\n }\n function setToast(isSusccess) {\n if (isSusccess) {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'success');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Success! User deleted.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n } else {\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification, 'error');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage, 'Sorry! We were unable to delete this user at this time.');\n sessionStorageService.set(ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime, ccDelegationAssetService.strings.FADEOUT);\n }\n $rootScope.$broadcast(ccDelegationAssetService.events.deleteUserAP);\n }\n function cancelDeteteUser() {\n $modalInstance.close();\n }\n function removeUser() {\n _.remove(vm.users, function (user, index) {\n var result = index === _index;\n return result;\n });\n vm.sessionStorage.users = vm.users;\n sessionStorageService.set(ccDelegationAssetService.storageKeys.accountPermissions, vm.sessionStorage);\n // FPBroadcastService.deleteUserAP();\n $modalInstance.close();\n }\n function resendDeleteUser() {\n var dataToPost = {\n action: _delRel,\n Cdpid: vm.data.cdpId,\n businessPartnerId: vm.data.bussinesPartner,\n relatedBusinessPartnerId: vm.data.relatedBusinessPartner,\n sessionNo: '',\n accounts: [{\n contractAccountId: vm.data.contractAccount,\n relationship: vm.data.role === 'Admin' ? '001' : '012',\n Experience: '',\n caAccessEndDate: moment().subtract(1, 'days').format('YYYY-MM-DDTHH:mm:ss')\n }]\n };\n if (vm.data.status === _pending || vm.data.status === _declined || vm.data.status === _expiredInvite) {\n // vm.data.accountDelegationRequestId.push(9);\n deleteDelegation({\n accountDelegationRequestIdList: vm.data.accountDelegationRequestId\n }).then(function () {\n if (vm.deleteDelegation.replyCode === _succesDeleteDelegation) {\n // maintainRelationship(dataToPost).then(() => {\n // if (vm.maintainRelationship.replyCode === _succes) {\n removeUser();\n // }\n // });\n }\n });\n } else {\n maintainRelationship(dataToPost).then(function () {\n if (vm.maintainRelationship.replyCode === _succes) {\n removeUser();\n } else {\n $modalInstance.close();\n }\n });\n }\n }\n function capitalizeName(name) {\n return dataModelsDTOProductsAndServices.transformName(name);\n }\n function setModels() {\n _index = vm.sessionStorage.deleteUser.index;\n vm.users = vm.sessionStorage.users;\n vm.data.user = vm.users[_index].userName;\n vm.data.role = vm.users[_index].relationship;\n vm.data.contractAccount = _selectedAccount.accountSelected.accountNum;\n vm.data.status = vm.users[_index].status;\n vm.data.relatedBusinessPartner = vm.users[_index].delegationId;\n vm.data.bussinesPartner = _selectedAccount.primaryBp;\n vm.data.cdpId = vm.users[_index].cdpId;\n vm.data.accountDelegationRequestId[0] = vm.users[_index].delegationId;\n }\n function load() {\n vm.sessionStorage = sessionStorageService.get(ccDelegationAssetService.storageKeys.accountPermissions);\n _selectedAccount = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n setModels();\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelDeteteUser = cancelDeteteUser;\n vm.resendDeleteUser = resendDeleteUser;\n vm.capitalizeName = capitalizeName;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.setToast = setToast;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nCCModalAPDeleteUser.$inject = ['$log', '$rootScope', 'assetService', 'ccDelegationAssetService', 'deleteDelegationService', 'maintainRelationshipService', 'FPBroadcastService', 'sessionStorageService', 'dataModelsDTOProductsAndServices', '$modalInstance', 'commongaTaggingService'];\napp.controller('CCModalAPDeleteUser', CCModalAPDeleteUser);\n/* eslint-disable id-length */\napp.factory('energyService', function () {\n return {\n energyDataFail: {\n Series1: ['0'],\n Series2: ['0'],\n Series3: [],\n TickSeries: ['-']\n },\n intervalFrequency: {\n dailyEnergy: 'dailyEnergy',\n // valid with BillingCycle, Week, Month\n averageEnergyByDayOfWeek: 'averageEnergyByDayOfWeek',\n // valid with BillingCycle, Month\n hourlyEnergyUse: 'hourlyEnergyUse',\n // valid with Week, Day\n halfHourlyEnergyUse: 'halfHourlyEnergyUse',\n // Valid with Day\n quarterHourlyEnergyUse: 'quarterHourlyEnergyUse' // Valid with Day\n },\n periodTypeOption: {\n Year: 'Year',\n Months: 'Months',\n Week: 'Week',\n Days: 'Day',\n Hours: 'Hours',\n Min: 'Min'\n },\n periodType: {\n Year: 'Year',\n Week: 'Week',\n Day: 'Day',\n Month: 'Month',\n BillingCycle: 'billingCycle'\n },\n serviceType: {\n Gas: 'Gas',\n Electric: 'Electric'\n },\n graphColors: {\n gasBar: '#005984',\n electricBar: '#00853f',\n grayBar: '#696969',\n averageLine: '#464646',\n temperatureText: '#cccccc',\n temperatureBubble: '#999999',\n gridLines: '#dfe4e4',\n netMeter: '#4c4c4c'\n },\n unitOfMeasure: {\n CCF: 'CCF',\n kWh: 'kWh',\n Dollar: 'Dollar'\n },\n string: {\n WEEKS: 'WEEKS',\n currency: 'currency',\n CostOfUnitsConsumed: 'Cost of Units Consumed',\n gray: 'gray',\n number: 'number',\n line: 'line',\n accountSelected: 'accountSelected',\n string: 'string',\n ready: 'ready',\n select: 'select',\n onmouseover: 'onmouseover',\n onmouseout: 'onmouseout',\n rect: 'rect',\n rx: 'rx',\n ry: 'ry',\n path: 'path',\n graphDiv: 'graph-div',\n current: 'current',\n corechart: 'corechart',\n maximized: 'maximized',\n out: 'out',\n point: 'point',\n loadGraph: 'loadGraph'\n }\n };\n});\n/* eslint-disable no-use-before-define */\n/* eslint-disable max-len */\napp.factory('exportCsvService', function () {\n var vm = this;\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n vm.averageArray = [];\n function exportToCSV(pageCase, newData, fileName, accountInfo, startDate) {\n vm.fileName = fileName; /* (NewCaseToMap, Array, FileNAme) */\n switch (pageCase) {\n case 'Dollar':\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n if (newData.length > 0) {\n vm.formattedData = _.map(newData, function (bill) {\n return {\n 'Date': moment(bill.BillingDate).utc().format('MM/DD/YYYY'),\n 'Total': bill.Bill_Amt,\n 'Average': bill.averageCost\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n case 'Year':\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n newData = newData == undefined ? [] : newData;\n if (newData.length > 0) {\n vm.formattedData = _.map(newData, function (bill) {\n return {\n 'Date': moment(bill.BillingDate).utc().format('MM/DD/YYYY'),\n 'Total': parseFloat(bill.Usage).toFixed(2),\n 'Average': parseFloat(bill.averageUsage).toFixed(2)\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n case 'billingCycle':\n vm.formattedData = {};\n vm.description = {};\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2;\n vm.tempArray = [];\n var tempArray = [];\n var testDate;\n if (vm.averageArray.length > 0) {\n for (var i = 0; i < vm.averageArray.length; i++) {\n if (newData.TickSeries[i] == \"\") {\n testDate = new Date(new Date(newData.TickSeries[i - 1]).setDate(new Date(newData.TickSeries[i - 1]).getDate() + 1));\n } else {\n testDate = new Date(newData.TickSeries[i]);\n }\n var _yearSelected = testDate.getFullYear();\n var temp = {\n 'Date': moment(new Date(\"\".concat(testDate.getMonth() + 1, \"/\").concat(testDate.getDate(), \"/\").concat(_yearSelected))).format('MM/DD/YYYY'),\n 'Total': parseFloat(newData.Series1[i]).toFixed(2),\n 'Average': parseFloat(newData.Series2[i]).toFixed(2)\n };\n tempArray.push(temp);\n }\n vm.formattedData = _.map(tempArray, function (bill) {\n return {\n 'Date': bill.Date,\n 'Total': bill.Total,\n 'Average': bill.Average\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n case 'Week':\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2;\n tempArray = [];\n if (vm.averageArray.length > 0) {\n for (var _i = 0; _i < vm.averageArray.length; _i++) {\n testDate = new Date(newData.TickSeries[_i]);\n yearSelected = testDate.getMonth() < startDate.getMonth() ? startDate.getFullYear() + 1 : startDate.getFullYear();\n var _temp = {\n 'Date': newData.TickSeries[_i] == \"-\" ? \"-\" : moment(newData.TickSeries[_i]).format('MM/DD/YYYY'),\n 'Total': parseFloat(newData.Series1[_i]).toFixed(2),\n 'Average': parseFloat(newData.Series2[_i]).toFixed(2)\n };\n tempArray.push(_temp);\n }\n vm.formattedData = _.map(tempArray, function (bill) {\n return {\n 'Date': bill.Date,\n 'Total': bill.Total,\n 'Average': bill.Average\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n case \"billingCycleEnergyUse\":\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n vm.averageArray = newData.Series1 == undefined ? [] : newData.Series1;\n tempArray = [];\n if (vm.averageArray.length > 0) {\n for (var _i2 = 0; _i2 < vm.averageArray.length; _i2++) {\n var _temp2 = {\n 'Date': newData.TickSeries[_i2] == \"-\" ? \"-\" : moment(newData.TickSeries[_i2]).format('MM/DD/YYYY'),\n 'Total': parseFloat(newData.Series1[_i2]).toFixed(2),\n 'Average': parseFloat(newData.Series2[_i2]).toFixed(2)\n };\n tempArray.push(_temp2);\n }\n vm.formattedData = _.map(tempArray, function (bill) {\n return {\n 'Date': bill.Date,\n 'Total': bill.Total,\n 'Average': bill.Average\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n case \"NetMeter\":\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n vm.averageArray = newData.Series1 == undefined ? [] : newData.Series1;\n tempArray = [];\n if (vm.averageArray.length > 0) {\n for (var _i3 = 0; _i3 < vm.averageArray.length; _i3++) {\n var _temp3 = {\n 'Date': newData.TickSeries[_i3] == \"-\" ? \"-\" : moment(newData.TickSeries[_i3]).format('MM/DD/YYYY'),\n 'Consumed': parseFloat(newData.Series1[_i3]).toFixed(2),\n 'Generated': parseFloat(newData.Series3[_i3]).toFixed(2),\n 'Average': parseFloat(newData.Series2[_i3]).toFixed(2)\n };\n tempArray.push(_temp3);\n }\n vm.formattedData = _.map(tempArray, function (bill) {\n return {\n 'Date': bill.Date,\n 'Consumed': bill.Consumed,\n 'Generated': bill.Generated,\n 'Average': bill.Average\n };\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n default:\n vm.formattedData = {};\n vm.description = {};\n vm.tempArray = [];\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2;\n tempArray = [];\n var startDateFormatted = moment(startDate).utc().format(\"MM/DD/YYYY\");\n if (vm.averageArray.length > 0) {\n for (var _i4 = 0; _i4 < vm.averageArray.length; _i4++) {\n var _temp4 = {\n 'Date': newData.TickSeries[_i4],\n 'total': parseFloat(newData.Series1[_i4]).toFixed(2)\n };\n tempArray.push(_temp4);\n }\n vm.formattedData = tempArray.map(function (obj) {\n obj[startDateFormatted] = obj['Date'];\n obj['Total'] = obj['total'];\n delete obj['Date'];\n delete obj['total'];\n return obj;\n });\n } else {\n vm.formattedData = [{\n \"\": \"No Data Found\"\n }];\n }\n break;\n }\n for (var k in accountInfo) {\n var _temp5 = {\n \"text\": k,\n \"value\": accountInfo[k]\n };\n vm.tempArray.push(_temp5);\n }\n vm.description = _.map(vm.tempArray, function (item) {\n return {\n 'text': item.text,\n 'value': item.value\n };\n });\n var csvFile = Papa.unparse(vm.formattedData, {\n header: true\n });\n var formattedCsvFile = Papa.unparse(vm.description, {\n header: false\n });\n var concatinatedString = formattedCsvFile + '\\n\\n' + csvFile;\n saveAsCSV(concatinatedString, vm.fileName);\n }\n function saveAsCSV(concatinatedString, fileName) {\n var bytes = new TextEncoder().encode(concatinatedString);\n var blob = new Blob([bytes], {\n type: 'text/plain;charset=utf-8'\n });\n saveAs(blob, \"\".concat(fileName, \".csv\"));\n }\n return {\n exportToCSV: exportToCSV\n };\n});\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCEnrollmentFixedBillManageCredit', CCEnrollmentFixedBillManageCredit);\nCCEnrollmentFixedBillManageCredit.$inject = ['$scope', 'assetService', 'commonService', 'apiConfigService', 'budgetBillingFactory', 'genericHelperService'];\nfunction CCEnrollmentFixedBillManageCredit($scope, assetService, commonService, apiConfigService, budgetBillingFactory, genericHelperService) {\n var vm = this;\n}\napp.controller('CCEnrollmentFixedBillManage', CCEnrollmentFixedBillManage);\nCCEnrollmentFixedBillManage.$inject = ['$log', '$scope', '$window', 'assetService', 'commonService', 'genericHelperService', 'sessionStorageService', 'getAccountEnrollmentEligibilityStatusService', 'accountSearchService', 'getUsageComparisionService', '$timeout', 'getFixedBillDetailsService', 'commongaTaggingService', 'broadcastService'];\nfunction CCEnrollmentFixedBillManage($log, $scope, $window, assetService, commonService, genericHelperService, sessionStorageService, getAccountEnrollmentEligibilityStatusService, accountSearchService, getUsageComparisionService, $timeout, getFixedBillDetailsService, commongaTaggingService, broadcastService) {\n /** Scope Vars */\n // eslint-disable-next-line no-underscore-dangle\n var _url = null;\n var widgetUsers = null;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n\n /** Global Vars */\n var vm = this;\n vm.stageGo = assetService.fixedBill.unenrollFB.unenroll;\n vm.bBPlans = [];\n vm.reviewPlan = {};\n vm.showMessage = 0;\n vm.dataTable = [];\n vm.labelsChart = [];\n vm.monthNames = [];\n vm.numberOfMonths = '12';\n vm.charts = ['mixed-chart-responsive-2', 'mixed-chart-responsive-3', 'mixed-chart-responsive-4', 'mixed-chart-responsive-5'];\n vm.data = {\n renewalDate: null,\n CurrentDifferenceAmount: null,\n accuredAmountType: null,\n fixBillAmount: null,\n planType: null,\n chart: [],\n enrollmentEligibilityStatus: {}\n };\n vm.dataToGet = {\n installationNumber: null,\n meterNumber: null,\n serviceType: null,\n dataType: null,\n accountId: null,\n fromDate: null,\n toDate: null\n };\n vm.datasetsChart = [{\n label: 'Your FixedBill Amount',\n type: 'line',\n backgroundColor: '#005984',\n borderColor: '#005984',\n borderWidth: 6,\n pointStyle: 'line',\n pointBackgroundColor: '#005984',\n lineTension: 0,\n fill: false,\n data: []\n }, {\n label: 'Actual Billed Amount',\n width: 10,\n type: 'bar',\n backgroundColor: '#54b948',\n data: []\n }];\n vm.optionsChart = {\n title: {\n display: false\n },\n tooltips: {\n callbacks: {\n label: function label(tooltipItem, data) {\n return data['datasets'][tooltipItem.datasetIndex].label + ': ' + '$' + Number(tooltipItem.value).toFixed(2);\n }\n }\n },\n scales: {\n yAxes: [{\n scaleLabel: {\n display: true,\n labelString: 'Cost of Units Consumed'\n },\n ticks: {\n suggestedMax: 1000,\n suggestedMin: 0,\n callback: function callback(value) {\n return \"$\".concat(value);\n }\n }\n }],\n xAxes: [{\n barPercentage: 0.4,\n gridLines: {\n color: 'rgba(0, 0, 0, 0)'\n }\n }]\n },\n legend: {\n display: true,\n position: 'bottom',\n onClick: null,\n reverse: true,\n labels: {\n usePointStyle: true,\n boxWidth: 5,\n fontColor: 'black'\n }\n }\n };\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /** Function Declarations */\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n $scope.$watch('$viewContentLoaded', function () {\n $scope.$emit('loadingSpinner', true);\n $timeout(function () {\n getChartQuarterly();\n $scope.$emit('loadingSpinner', false);\n }, 0);\n });\n vm.unenrollPage = unenrollPage;\n vm.selectMessage = function (message) {\n vm.showMessage = vm.showMessage === message ? 0 : message;\n };\n\n /** Function Definitions */\n function unenrollPage() {\n $scope.$emit('nextStep', assetService.fixedBill.unenrollFB.unenroll);\n }\n function setDataChart(labelsChart, datasetsCart, optionsChart, id) {\n if (labelsChart.length > 0) {\n var setchart = {\n type: 'bar',\n data: {\n labels: labelsChart,\n datasets: datasetsCart\n },\n options: optionsChart\n };\n var elemChart = document.getElementById(id);\n if (elemChart !== null) new Chart(elemChart, setchart);\n }\n }\n getChartQuarterly = function getChartQuarterly() {\n var chart = [];\n var label = [];\n var typeEnd = 0;\n for (var i = 0; i < 4; i++) {\n type = i * 3;\n typeEnd = type + 3;\n chart = genericHelperService.notReferencesArrayObjects(vm.datasetsChart);\n chart[0].data = chart[0].data.slice(type, typeEnd);\n chart[1].data = chart[1].data.slice(type, typeEnd);\n label = vm.labelsChart.slice(type, typeEnd);\n setDataChart(label, chart, vm.optionsChart, \"mixed-chart-responsive-\".concat(i + 2));\n }\n };\n function getChartData() {\n var maxValue = 0;\n var lastIndex = vm.data.chart.length - 1;\n var month = vm.data.chart[lastIndex].Month;\n var year = vm.data.chart[lastIndex].Year;\n for (var i = 11; i >= 0; i--) {\n var itemArray = {\n month: moment(\"\".concat(year, \"/\").concat(month), 'YYYY/MM').subtract(i, 'months').format('MMM'),\n year: moment(\"\".concat(year, \"/\").concat(month), 'YYYY/MM').subtract(i, 'months').format('YYYY')\n };\n vm.monthNames.push(itemArray);\n }\n _.forEach(vm.data.chart, function (item) {\n maxValue = maxValue >= item.Bill_Amt ? maxValue : item.Bill_Amt;\n });\n _.forEach(vm.monthNames, function (item, index) {\n vm.labelsChart.push(\"\".concat(item.month, \" \").concat(item.year));\n if (vm.data.chart[index]) {\n var monthABA = moment().month(Number(vm.data.chart[index].Month) - 1).format(\"MMM\");\n //const yearABA = parseInt(vm.data.chart[index].Year)\n var _position = findWithAttr(vm.monthNames, 'month', monthABA);\n vm.datasetsChart[1].data[_position] = parseFloat(vm.data.chart[index].Bill_Amt).toFixed(2);\n }\n });\n function findWithAttr(array, attr, value) {\n for (var _i = 0; _i < array.length; _i += 1) {\n if (array[_i][attr] === value) {\n return _i;\n }\n }\n return -1;\n }\n function findMatch(obj, array) {\n // Create arrays of property names\n for (var _i2 = 0; _i2 < array.length; _i2++) {\n var aProps = Object.getOwnPropertyNames(obj);\n var _month = aProps[0];\n if (obj[_month] == array[_i2][_month]) {\n var _year = aProps[1];\n if (obj[_year] == array[_i2][_year]) {\n return _i2;\n }\n }\n }\n return 12;\n }\n var fbAmountDate = {\n month: moment(vm.fixedBillDetails.RenewalDate).subtract(11, 'month').format('MMM'),\n year: moment(vm.fixedBillDetails.RenewalDate).subtract(11, 'month').format('YYYY')\n };\n var position = findMatch(fbAmountDate, vm.monthNames);\n for (var index = position; index < 12; index++) {\n vm.datasetsChart[0].data[index] = vm.data.fixBillAmount;\n }\n _.forEach(vm.datasetsChart[1].data, function (item, index) {\n if (!item) {\n vm.datasetsChart[1].data[index] = '0.0';\n }\n });\n maxValue *= 2;\n vm.optionsChart.scales.yAxes[0].ticks.suggestedMax = maxValue;\n setDataChart(vm.labelsChart, vm.datasetsChart, vm.optionsChart, 'mixed-chart');\n }\n function setModels() {\n vm.data.planType = 'BBPA';\n vm.data.accruedBalance = vm.fixedBillDetails.CurrentDifferenceAmount;\n if (vm.data.accruedBalance > 0) {\n vm.data.accuredAmountType = assetService.strings.DEBIT_BBH;\n } else if (vm.data.accruedBalance < 0) {\n vm.data.accuredAmountType = assetService.strings.CREDIT_BBH;\n vm.data.accruedBalance = vm.data.accruedBalance.substring(1);\n } else if (vm.data.accruedBalance == 0) {\n vm.data.accuredAmountType = assetService.strings.NONE_BBH;\n }\n sessionStorageService.set(assetService.storageKeys.fixedBilling.creditOnAccount, vm.data);\n getChartData();\n getChartQuarterly();\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n function load() {\n $window.scrollTo(0, 0);\n vm.charts = ['mixed-chart-responsive-2', 'mixed-chart-responsive-3', 'mixed-chart-responsive-4', 'mixed-chart-responsive-5'];\n if (globalSelectedAccount.accountNum) {\n sessionStorageService.set(assetService.storageKeys.contractAccountId, globalSelectedAccount.accountNum);\n }\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.fixedBilling.creditOnAccount);\n var promises = [accountFixedBillDetails(), accountEnrollmentEligibilityStatus(), accountSearch()];\n commonService.executePromises(promises).then(function () {\n vm.dataToGet.accountId = vm.contractAccountId;\n if (vm.accountSearch.installationNumber) {\n vm.dataToGet.installationNumber = vm.accountSearch.installationNumber;\n } else {\n vm.dataToGet.meterNumber = vm.accountSearch.meterNumber;\n }\n if (vm.accountSearch.division === assetService.divisions.ELEC) {\n vm.dataToGet.serviceType = assetService.strings.ELEC;\n vm.dataToGet.dataType = assetService.strings.KWH;\n } else {\n vm.dataToGet.serviceType = assetService.strings.GAS;\n vm.dataToGet.dataType = assetService.strings.CCF;\n }\n vm.dataToGet.fromDate = moment(new Date()).subtract(12, 'month').format('YYYY-MM-DDTHH:mm:ss');\n vm.dataToGet.toDate = moment(new Date()).format('YYYY-MM-DDTHH:mm:ss');\n usageComparision(vm.dataToGet);\n });\n function accountFixedBillDetails() {\n return getFixedBillDetailsService.sitecore.getFixedBillDetails({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.fixedBillDetails = result.d.ReqCA.results[0];\n if (vm.fixedBillDetails.FixedBillAmount) {\n vm.data.fixBillAmount = parseFloat(vm.fixedBillDetails.FixedBillAmount);\n vm.data.CurrentDifferenceAmount = parseFloat(vm.fixedBillDetails.CurrentDifferenceAmount);\n } else {\n vm.data.fixedBill = 0.0;\n vm.data.CurrentDifferenceAmount = 0.0;\n }\n vm.data.CurrentDifferenceAmount = vm.data.CurrentDifferenceAmount < 0 ? vm.data.CurrentDifferenceAmount * -1 : vm.data.CurrentDifferenceAmount;\n vm.data.renewalDate = vm.fixedBillDetails.RenewalDate ? moment(vm.fixedBillDetails.RenewalDate).format('MMMM YYYY') : null;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountEnrollmentEligibilityStatus() {\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.data.enrollmentEligibilityStatus = _.find(result.d.Inp_Prog.results[0].Prog_Res.results, function (item) {\n return item.ProgName === assetService.billingAndPaymentProgramsCodes.FIXBIL;\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function accountSearch() {\n return accountSearchService.sitecore.accountSearch({\n contractAccountId: vm.contractAccountId\n }).then(function (result) {\n vm.accountSearch = {\n installationNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].InstallationNumber,\n meterNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].MeterNumber,\n division: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results[0].PropToInst.results[0].Division\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function usageComparision(data) {\n return getUsageComparisionService.sitecore.getUsageComparision(data).then(function (result) {\n vm.data.chart = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\n setModels();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n var init = function init() {\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCEnrollmentPlanDetails', CCEnrollmentPlanDetails);\nCCEnrollmentPlanDetails.$inject = ['$scope', '$rootScope', '$window', '$state', 'assetService', 'sessionStorageService', 'commongaTaggingService'];\nfunction CCEnrollmentPlanDetails($scope, $rootScope, $window, $state, assetService, sessionStorageService, commongaTaggingService) {\n var _fixedBillStorage = {};\n var vm = this;\n vm.renewalDate = null;\n vm.pageError = false;\n vm.dataPage = assetService.fixedBill.enrollmentFB;\n vm.fixedBillAmount = 0;\n vm.decimals = '00';\n vm.stageGo = vm.dataPage.enrollmentTerms;\n vm.cancel = cancel;\n vm.nextStep = nextStep;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* Function definition */\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function cancel(url) {\n window.location.href = url;\n }\n function nextStep() {\n $scope.$emit('nextStep', vm.stageGo);\n }\n function setModels() {\n if (_fixedBillStorage.FixedBillAmount != undefined) {\n vm.fixedBillAmount = _fixedBillStorage.FixedBillAmount;\n vm.decimals = vm.fixedBillAmount.substring(vm.fixedBillAmount.indexOf('.') + 1);\n }\n var today = new Date();\n var dateOfRenewal = new Date(today.setMonth(today.getMonth() + 12));\n vm.renewalDate = moment(dateOfRenewal).format('MMMM YYYY');\n }\n function load() {\n vm.pageError = $rootScope.fixBillPageError;\n $window.scrollTo(0, 0);\n _fixedBillStorage = sessionStorageService.get(assetService.storageKeys.fixedBillStore);\n vm.getJurisdiction = _fixedBillStorage.globalSelectedAccount.accountSelected.jurisdiction;\n setModels();\n }\n var init = function init() {\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCEnrollmentSuccess', CCEnrollmentSuccess);\nCCEnrollmentSuccess.$inject = ['$scope', '$window', '$rootScope', 'assetService', 'broadcastService', 'sessionStorageService', 'commongaTaggingService'];\nfunction CCEnrollmentSuccess($scope, $window, $rootScope, assetService, broadcastService, sessionStorageService, commongaTaggingService) {\n var vm = this;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.goToPage = goToPage;\n\n /* Function definition */\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n\n //this will redirect to B&P Programs LP\n function goToPage(event) {\n event.stopPropagation();\n event.preventDefault();\n window.location.href = event.target.href;\n }\n var init = function init() {\n $window.scrollTo(0, 0);\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n $rootScope.$broadcast('reached-success');\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCEnrollmentTerms', CCEnrollmentTerms);\nCCEnrollmentTerms.$inject = ['$scope', 'assetService'];\nfunction CCEnrollmentTerms($scope, assetService) {\n var vm = this;\n vm.dataPage = assetService.fixedBill.enrollmentFB;\n vm.stageGo = vm.dataPage.enrollmentDetails;\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n\n /* Function definition */\n function previousPage() {\n $scope.$emit('nextStep', assetService.fixedBill.enrollmentFB.enrollmentDetails);\n }\n function nextStep() {\n $scope.$emit('nextStep', assetService.fixedBill.enrollmentFB.enrollmentPlan);\n }\n\n // function changeButton() {\n // vm.activeAgreeButton = true;\n // angular\n // .element(\n // document.getElementById(assetService.strings.TERMS_TEXTAREA),\n // )\n // .scope()\n // .$apply();\n // }\n\n var init = function init() {};\n init();\n}\napp.controller('CCEnrollmentFB', CCEnrollmentFB);\nCCEnrollmentFB.$inject = ['$log', '$scope', '$state', 'assetService', 'getFixedBillDetailsService', 'commonService', 'sessionStorageService', 'getServicesService', 'cookieService'];\nfunction CCEnrollmentFB($log, $scope, $state, assetService, getFixedBillDetailsService, commonService, sessionStorageService, getServicesService, cookieService) {\n var dataToPost = {};\n var fixedBillStorage = {};\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var vm = this;\n vm.reachedSuccess = false;\n vm.loadingSpinner = true;\n vm.dataPage = assetService.fixedBill.enrollmentFB;\n vm.stageGo = vm.dataPage.enrollmentPlan;\n vm.toStorage = {\n dataToPost: '',\n previous: assetService.fixedBill.enrollmentFB.enrollmentPlan,\n nextStep: assetService.fixedBill.enrollmentFB.enrollmentSuccess,\n nonNative: true,\n //if apply, if not add false\n txtTermsConditions: assetService.fixedBill.termsAndConditions\n };\n\n /* Function Definitions */\n function saveAndGo() {\n sessionStorageService.set(assetService.storageKeys.abbreviatedReg, vm.toStorage);\n sessionStorageService.set(assetService.storageKeys.fixedBillStore, fixedBillStorage);\n $state.go(vm.stageGo);\n }\n function getServices(dataPost) {\n var data = {\n businessPartnerId: globalSelectedAccount.primaryBp,\n contractAccountId: globalSelectedAccount.accountNum,\n processCode: assetService.serviceActions.getServices.MOVE_OUT\n };\n getServicesService.sitecore.getServices(data).then(function (result) {\n var contract = result.d.GetServ_Ins.results[0].Head_Ins.Contract;\n sessionStorageService.set(assetService.storageKeys.contract, contract);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setModels() {\n var promise = [getFixedBillDetails(dataToPost), getServices(dataToPost)];\n commonService.executePromises(promise).then(function () {\n vm.loadingSpinner = false;\n fixedBillStorage.globalSelectedAccount = globalAccountInfo;\n saveAndGo();\n });\n }\n function load() {\n if (globalSelectedAccount.accountNum) {\n dataToPost.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n }\n setModels();\n }\n function getFixedBillDetails(data) {\n var paramData = {\n contractAccountId: data.contractAccountId\n };\n return getFixedBillDetailsService.sitecore.getFixedBillDetails(paramData).then(function (result) {\n if (result.d.ReqCA.results.hasOwnProperty('0')) {\n fixedBillStorage = result.d.ReqCA.results[0];\n }\n });\n }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n $scope.$on('nextStep', function (index, page) {\n vm.stageGo = page;\n saveAndGo();\n vm.loadingSpinner = true;\n });\n $scope.$on('reached-success', function () {\n vm.reachedSuccess = true;\n });\n\n /* Initialization */\n var init = function init() {\n var isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill.enrollment);\n if (isValidation || assetService.apiConfig.useLocalHost) {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty(assetService.strings.ACCOUNT_SELECTED)) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n sessionStorageService.set(assetService.events.care, globalAccountInfo.accountSelected.accountNum);\n }\n load();\n } else {\n window.location.href = \"/my-account/billing-and-payment-programs/\";\n }\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCUnenrollFixedBillARC', CCUnenrollFixedBillARC);\nCCUnenrollFixedBillARC.$inject = ['$scope', 'assetService', '$state'];\nfunction CCUnenrollFixedBillARC($scope, assetService, $state) {\n var vm = this;\n vm.dataPage = assetService.fixedBill.unenrollFB;\n vm.stageGo = vm.dataPage.unenrollSuccess;\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n\n /* Function definition */\n function previousPage() {\n $scope.$emit('nextStep', '');\n }\n function nextStep() {\n $scope.$emit('nextStep', 'unenrollSuccess');\n }\n var init = function init() {};\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-undef */\napp.controller('CCUnenrollFixedBillSuccess', CCUnenrollFixedBillSuccess);\nCCUnenrollFixedBillSuccess.$inject = ['$scope', 'assetService', '$state', '$window', 'broadcastService', 'sessionStorageService', 'commongaTaggingService'];\nfunction CCUnenrollFixedBillSuccess($scope, assetService, $state, $window, broadcastService, sessionStorageService, commongaTaggingService) {\n var vm = this;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n var init = function init() {\n $window.scrollTo(0, 0);\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n };\n init();\n}\napp.controller('CCUnenrollFixedBill', CCUnenrollFixedBill);\nCCUnenrollFixedBill.$inject = ['$scope', '$window', 'assetService', 'sessionStorageService', 'CCEnrollUnenrollInFixedBill', 'commongaTaggingService', 'broadcastService'];\nfunction CCUnenrollFixedBill($scope, $window, assetService, sessionStorageService, CCEnrollUnenrollInFixedBill, commongaTaggingService, broadcastService) {\n var vm = this;\n vm.dataPage = assetService.fixedBill.unenrollFB;\n vm.stageGo = vm.dataPage.unenrollARC;\n vm.previousPage = previousPage;\n vm.nextStep = nextStep;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* Function definition */\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function previousPage() {\n $scope.$emit('nextStep', assetService.fixedBill.unenrollFB.unenrollManage);\n }\n function nextStep() {\n setDeEnroll();\n function setDeEnroll() {\n return CCEnrollUnenrollInFixedBill.sitecore.enrollUnenrollFixedBill(vm.dataToDeEnroll).then(function (result) {\n if (result.d.ReqCA.results[0].Messages.ReplyCode === 'SUCCESS') {\n $scope.$emit('nextStep', assetService.fixedBill.unenrollFB.unenrollSuccess);\n }\n });\n }\n }\n function load() {\n $window.scrollTo(0, 0);\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.tempAccounts = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.account = _.find(vm.tempAccounts.accounts, function (account) {\n return account.accountData.accountNum === vm.contractAccountId;\n });\n vm.data = vm.sessionData = sessionStorageService.get(assetService.storageKeys.fixedBilling.creditOnAccount);\n if (vm.sessionData) {\n vm.CurrentDifferenceAmount = vm.sessionData.CurrentDifferenceAmount;\n vm.accuredAmountType = vm.sessionData.accuredAmountType; // debit credit\n }\n vm.dataToDeEnroll = {\n contractAccountId: vm.contractAccountId,\n contract: vm.account.accountData.contract,\n action: 'unenroll'\n };\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('CCUnenrollFB', CCUnenrollFB);\nCCUnenrollFB.$inject = ['$log', '$scope', 'assetService', '$state', 'getServicesService', 'sessionStorageService', 'cookieService'];\nfunction CCUnenrollFB($log, $scope, assetService, $state, getServicesService, sessionStorageService, cookieService) {\n var vm = this;\n vm.loadingSpinner = true;\n vm.dataPage = assetService.fixedBill.unenrollFB;\n vm.stageGo = vm.dataPage.unenrollManage;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n\n /* Function Definitions */\n function load() {\n var dataPost = {\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId)\n };\n getServices(dataPost).then(function () {\n $state.go(vm.stageGo);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function getServices(dataPost) {\n var data = {\n businessPartnerId: globalSelectedAccount.primaryBp,\n contractAccountId: globalSelectedAccount.accountNum,\n processCode: assetService.serviceActions.getServices.MOVE_OUT\n };\n return getServicesService.sitecore.getServices(data).then(function (result) {\n var contract = result.d.GetServ_Ins.results[0].Head_Ins.Contract;\n sessionStorageService.set(assetService.storageKeys.contract, contract);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n\n /* -------------------------Scope On------------------------- */\n $scope.$on(assetService.events.loadingSpinnerSuccess, function (index, data) {\n vm.loadingSpinner = data;\n });\n $scope.$on('nextStep', function (index, page) {\n vm.loadingSpinner = true;\n $state.go(page);\n });\n\n /* Initialization */\n var init = function init() {\n var isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill.manage);\n if (isValidation || assetService.apiConfig.useLocalHost) {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty(assetService.strings.ACCOUNT_SELECTED)) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n sessionStorageService.set(assetService.events.care, globalAccountInfo.accountSelected.accountNum);\n }\n load();\n } else {\n window.location.href = '/my-account/billing-and-payment-programs/';\n }\n };\n init();\n}\napp.factory('fixedBillFactory', function ($q, assetService, apiService) {\n var getServicePlans = function getServicePlans(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getAccount = function getAccount(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getMonthsAmounts = function getMonthsAmounts(url) {\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, '', false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getServicePlans: getServicePlans,\n getAccount: getAccount,\n getMonthsAmounts: getMonthsAmounts\n };\n});\napp.factory('installmentPlansFactory', function ($q, assetService, apiService) {\n var getInstallmentPlansData = function getInstallmentPlansData(url) {\n var header = '';\n if (!assetService.apiConfig.liveApi) {\n header = '';\n } else {\n header = getHeader();\n }\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getInstallmentPlansBillDate = function getInstallmentPlansBillDate(url) {\n var header = '';\n if (!assetService.apiConfig.liveApi) {\n header = '';\n } else {\n header = getHeader();\n }\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var postInstallmentPlan = function postInstallmentPlan(url, installmentPlanData) {\n var header = getHeader();\n return $q(function (resolve, reject) {\n apiService.postDataAsync(url, installmentPlanData, header).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.data) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n var getInstallmentPlansToManage = function getInstallmentPlansToManage(url) {\n var header = '';\n if (!assetService.apiConfig.liveApi) {\n header = '';\n } else {\n header = getHeader();\n }\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.hasOwnProperty('data')) {\n if (error.data.hasOwnProperty('fault')) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: error.status,\n message: error.data.errors[0].message,\n status: error.statusText\n });\n }\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getInstallmentPlansData: getInstallmentPlansData,\n getInstallmentPlansBillDate: getInstallmentPlansBillDate,\n postInstallmentPlan: postInstallmentPlan,\n getInstallmentPlansToManage: getInstallmentPlansToManage\n };\n});\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ManageInstallmentPlans', ManageInstallmentPlans);\nManageInstallmentPlans.$inject = ['$log', 'assetService', 'getActiveInstallmentPlansService', 'dateHelperService', 'sessionStorageService', '$filter', '$sce', '$rootScope', 'getAccountBalanceForRegularAccountService', 'commonService', 'broadcastService'];\nfunction ManageInstallmentPlans($log, assetService, getActiveInstallmentPlansService, dateHelperService, sessionStorageService, $filter, $sce, $rootScope, getAccountBalanceForRegularAccountService, commonService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var PLAN_TYPE_ARREARS = 'arrears';\n var PLAN_TYPE_DOWN_PAY = 'down-payment';\n var PARTIAL_PAID = '/partial-paid';\n var UNPAID = '/unpaid';\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n vm.contractAccountId = '';\n vm.currentUser = {}; // Get RequestedBy value\n vm.progressBarSteps = [];\n vm.installmentPlanDetails = {};\n vm.isDownPayDue = false;\n vm.downPayStatus = ''; // '' means down payment paid\n vm.isArrears = false;\n vm.error = false;\n vm.downPayDueDate = '';\n vm.downPayDueAmount = '';\n vm.isPartialDue = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.getDateFromFullDate = getDateFromFullDate;\n vm.formatTotalAmount = formatTotalAmount;\n vm.onClickPayNow = onClickPayNow;\n vm.onClickPayAssist = onClickPayAssist;\n vm.onClickPayLocations = onClickPayLocations;\n /* --------------Function Definitions-----------------------*/\n function getDateFromFullDate(date) {\n var value = date.slice(6, 19);\n return dateHelperService.getDateFromFullDate(parseInt(value, 10));\n }\n function formatTotalAmount(amount) {\n var formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '';\n } else if (formattedAmount[0].indexOf('-') >= 0) {\n lessThanZero = '-';\n }\n return $sce.trustAsHtml(\"$\".concat(lessThanZero).concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function formatDate(date) {\n // returns MM/DD/YYYY\n // params YYYYMMDD\n if (date.length > 7) {\n var yyyy = date.substring(0, 4);\n var mm = date.substring(4, 6);\n var dd = date.substring(6, 8);\n return \"\".concat(mm, \"/\").concat(dd, \"/\").concat(yyyy);\n }\n return '';\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function getProgressArr(installmentsPaid, totalInstallments) {\n // 1 stands for green, 0 for grey\n var progressArr = [];\n for (var index = 0; index < totalInstallments; index += 1) {\n progressArr.push(0);\n }\n progressArr.fill(1, 0, installmentsPaid);\n return progressArr;\n }\n function onClickPayNow() {\n pushVPV(\"/vpv/de/page/payment-assistance-options/success/ installment-plan/installment-plan-details/na/\".concat(vm.installmentPlanDetails.type, \"/pay-now\").concat(vm.downPayStatus));\n }\n function onClickPayAssist() {\n pushVPV(\"/vpv/de/page/payment-assistance-options/success/installment-plan/installment-plan-details/na/\".concat(vm.installmentPlanDetails.type, \"/payment-assistance-options\").concat(vm.downPayStatus));\n }\n function onClickPayLocations() {\n pushVPV(\"/vpv/de/page/payment-assistance-options/success/installment-plan/installment-plan-details/na/\".concat(vm.installmentPlanDetails.type, \"/payment-locations\").concat(vm.downPayStatus));\n }\n function gatOnError(_ref) {\n var errorCode = _ref.errorCode,\n endpoint = _ref.endpoint;\n pushDL('payment-assistance-options_error', \"\".concat(errorCode, \"-|-\").concat(endpoint, \"-|-\").concat($rootScope.dataLayerFormat('this component failed to load')), 'installment-plan-details');\n pushVPV(\"/vpv/form/auth/payment-assistance-options/installment-plan-details/home/na/load/error/\".concat(errorCode));\n }\n function checkPartialDue(IPDetails, cpiInfo) {\n return IPDetails.numberOfInstallmentsRem === IPDetails.numberOfInstallments && Number(cpiInfo.totalDueAmount) < Number(IPDetails.downPayment);\n }\n function checkDownPaymentDue(IPDetails, cpiInfo) {\n return IPDetails.numberOfInstallmentsRem === IPDetails.numberOfInstallments && Number(cpiInfo.totalDueAmount) > 0 && cpiInfo.downPayDueAmount > 0;\n }\n function getActiveInstallmentPlans(data) {\n return getActiveInstallmentPlansService.sitecore.getActiveInstallmentPlans(data).then(function (result) {\n if (result && result.d.ReqCA.results[0].Messages.Type === assetService.replyCodes.E) {\n return {\n error: true,\n errorMessage: result.d.ReqCA.results[0].Messages\n };\n }\n var _$map = _.map(result.d.ReqCA.results, function (plan) {\n return {\n type: Number(plan.DownPayment) === 0 ? PLAN_TYPE_ARREARS : \"\".concat(PLAN_TYPE_DOWN_PAY, \"-\").concat(plan.Description.replace('%', '')),\n totalAmount: plan.TotalAmount,\n amountPerInstallment: plan.InstallmentAmount,\n numberOfInstallments: Number(plan.NumberOfInstallments).toString(),\n downPayment: plan.DownPayment,\n installmentAmountRem: plan.RemainingInstallmentAmount,\n numberOfInstallmentsRem: plan.NumberOfInstallmentsRemaining,\n installmentsPaid: plan.NumberOfInstallments - plan.NumberOfInstallmentsRemaining\n };\n }),\n _$map2 = _slicedToArray(_$map, 1),\n installmentDetails = _$map2[0];\n return installmentDetails;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getCpiAndCashOnlyData(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n var accountData = result.getAccountAndBillingInfoResList.find(function (account) {\n return account.contractAccountNumber.toString() === data.accountList[0].contractAccountNumber;\n });\n if (accountData.messageList && accountData.messageList[0].messageTypeCode === assetService.replyCodes.E) {\n return {\n error: true,\n errorMessage: accountData.messageList[0]\n };\n }\n return {\n isCashOnly: accountData.cashOnly !== 'F',\n cpiMesg: accountData.messageList && accountData.messageList.length && accountData.messageList[0].message,\n totalDueAmount: accountData.totalDueDlrs || '',\n downPayDueAmount: parseFloat((accountData.installmentAmount || 0) - (accountData.pendPmtDlrs || 0)).toFixed(2),\n cpiPriority: accountData.messageList && accountData.messageList.length && accountData.messageList[0].messagePriority,\n downPayDueDate: formatDate(\"\".concat(accountData.installmentDueDate))\n };\n }, function (error) {\n return $log.error(error);\n });\n }\n function load() {\n if (globalSelectedAccount.accountNum) {\n vm.contractAccountId = globalSelectedAccount.accountNum;\n sessionStorageService.set(assetService.storageKeys.contractAccountId, vm.contractAccountId);\n }\n commonService.executePromises([getActiveInstallmentPlans({\n contractAccountId: vm.contractAccountId,\n requestedBy: vm.currentUser.emailId\n }), getCpiAndCashOnlyData({\n accountList: [{\n contractAccountNumber: vm.contractAccountId,\n zipCode: globalSelectedAccount.zipCode\n }]\n })]).then(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n installmentPlanDetails = _ref3[0],\n accountInfo = _ref3[1];\n if (installmentPlanDetails.error === true) {\n vm.error = true;\n gatOnError({\n errorCode: installmentPlanDetails.errorMessage.MessageNum,\n endpoint: assetService.sitecoreEndpoints.GetActiveInstallmentPlans\n });\n broadcastService.failedStateNotificationTriggeredWithoutGAT(true);\n } else if (accountInfo.error === true) {\n vm.error = true;\n gatOnError({\n errorCode: accountInfo.errorMessage.messageCode,\n endpoint: assetService.sitecoreEndpoints.getAccountBalanceForRegularAccount\n });\n broadcastService.failedStateNotificationTriggeredWithoutGAT(true);\n } else {\n vm.error = false;\n vm.installmentPlanDetails = installmentPlanDetails;\n vm.progressBarSteps = getProgressArr(vm.installmentPlanDetails.installmentsPaid, vm.installmentPlanDetails.numberOfInstallments);\n vm.isArrears = vm.installmentPlanDetails.type === PLAN_TYPE_ARREARS;\n vm.error = false;\n vm.isDownPayDue = checkDownPaymentDue(installmentPlanDetails, accountInfo);\n vm.cpiData = accountInfo;\n vm.isPartialDue = checkPartialDue(vm.installmentPlanDetails, vm.cpiData);\n if (vm.isPartialDue) vm.downPayStatus = PARTIAL_PAID;else if (vm.isDownPayDue) vm.downPayStatus = UNPAID;\n // type can be down-payment-50 / down-payment-25 / arrears\n // down payment status can be unpaid / partial-paid\n pushVPV(\"/vpv/de/page/payment-assistance-options/load/installment-plan/installment-plan-details/na/\".concat(vm.installmentPlanDetails.type).concat(vm.downPayStatus));\n }\n vm.loadingSpinner = false;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.acctNickName = globalSelectedAccount.nickname;\n vm.acctAddress = globalSelectedAccount.address;\n vm.acctNo = globalSelectedAccount.accountNum;\n vm.currentUser = {\n emailId: $rootScope.currentUserEmailId,\n cdpId: $rootScope.currentUserCdpId\n };\n load();\n };\n init();\n}\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n/* eslint-disable no-use-before-define */\napp.controller('InstallmentPlanSuccess', InstallmentPlanSuccess);\nInstallmentPlanSuccess.$inject = ['$sce', '$filter', '$log', '$scope', 'assetService', 'sessionStorageService', 'dateHelperService', '$rootScope', '$window', 'commongaTaggingService', 'broadcastService', 'getAccountBalanceForRegularAccountService'];\nfunction InstallmentPlanSuccess($sce, $filter, $log, $scope, assetService, sessionStorageService, dateHelperService, $rootScope, $window, commongaTaggingService, broadcastService, getAccountBalanceForRegularAccountService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _both = 'Deposit & Energy Service Charges';\n var _deposit = 'Security Deposit';\n var _globalAccountInfo = null;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.calendarDate = new Date();\n vm.installmentPlanStorage = null;\n vm.data = null;\n vm.selectedPlanType = '';\n vm.isDownPayment = false;\n vm.loadingSpinner = false;\n vm.acctNickName = '';\n vm.acctAddress = '';\n vm.acctNo = '';\n vm.guid = '';\n vm.planDesc = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.getDateFromFullDate = getDateFromFullDate;\n vm.formatTotalAmount = formatTotalAmount;\n vm.payNow = payNow;\n vm.onClickPayAssist = onClickPayAssist;\n\n /* --------------Function Definitions-----------------------*/\n function formatTotalAmount(amount) {\n var formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '';\n } else if (formattedAmount[0].indexOf('-') >= 0) {\n lessThanZero = '-';\n }\n return $sce.trustAsHtml(\"$\".concat(lessThanZero).concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function payNow() {\n pushVPV(\"/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/down-payment-\".concat(vm.planDesc.replace('%', ''), \"/pay-now\"));\n window.location.replace('/my-account/pay-my-bill');\n }\n function onClickPayAssist() {\n pushVPV('/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/arrears/payment-assistance-options');\n }\n function getDateFromFullDate(date) {\n return dateHelperService.getDateFromFullDate(date);\n }\n function setModels(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount({\n accountList: [{\n contractAccountNumber: data.contractAccountId,\n zipCode: data.zipCode\n }]\n }).then(function (result) {\n if (result.getAccountAndBillingInfoResList.length === 1) {\n vm.data = [{\n cashOnly: result.getAccountAndBillingInfoResList[0].cashOnly !== 'F',\n installmentYear: result.getAccountAndBillingInfoResList[0].installmentDueDate.toString().substring(0, 4),\n installmentMonth: result.getAccountAndBillingInfoResList[0].installmentDueDate.toString().substring(4, 6),\n installmentDate: result.getAccountAndBillingInfoResList[0].installmentDueDate.toString().substring(6, 8),\n installmentDueAmount: result.getAccountAndBillingInfoResList[0].installmentAmount\n }];\n vm.loadingSpinner = false;\n } else {\n vm.installmentAccount = result.getAccountAndBillingInfoResList.find(function (account) {\n return account.contractAccountNumber.toString() === data.contractAccountId;\n });\n vm.data = [{\n cashOnly: vm.installmentAccount.cashOnly !== 'F',\n installmentYear: vm.installmentAccount.installmentDueDate.toString().substring(0, 4),\n installmentMonth: vm.installmentAccount.installmentDueDate.toString().substring(4, 6),\n installmentDate: vm.installmentAccount.installmentDueDate.toString().substring(6, 8),\n installmentDueAmount: vm.installmentAccount.installmentAmount\n }];\n vm.loadingSpinner = false;\n }\n if (vm.data[0].cashOnly) {\n setTimeout(function () {\n var payLocationBtn = document.getElementsByClassName('component-footer__button');\n var _iterator = _createForOfIteratorHelper(payLocationBtn),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var element = _step.value;\n element.addEventListener('click', function (event) {\n event.preventDefault();\n window.location.replace(event.target.href);\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }, 0);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.loadingSpinner = false;\n });\n }\n function load() {\n vm.guid = angular.element('#guid').val();\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.isDownPayment = $rootScope.downPayment;\n vm.planDesc = $rootScope.SelectedPlanDesc;\n vm.acctNickName = _globalAccountInfo.accountSelected.nickname;\n vm.acctAddress = _globalAccountInfo.accountSelected.address;\n vm.acctNo = _globalAccountInfo.accountSelected.accountNum;\n var params = {\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\n businessPartner: _globalAccountInfo.primaryBp,\n zipCode: _globalAccountInfo.accountSelected.zipCode\n };\n vm.installmentPlanStorage = sessionStorageService.get(assetService.storageKeys.installmentPlan);\n broadcastService.headerSwitch('Full');\n if (vm.isDownPayment) {\n pushVPV(\"/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/down-payment-\".concat(vm.planDesc.replace('%', '')));\n setModels(params);\n } else {\n pushVPV('/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/arrears');\n vm.loadingSpinner = false;\n }\n pushDL('payment-assistance-options', 'success-|-installment-plan', 'kpi');\n // $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\n }\n\n /* ---------------Google-Analytics-------------------*/\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.loadingSpinner = true;\n $('.icon-duke').hide();\n $('.InstallmentPlans__header').hide();\n $window.scrollTo(0, 0);\n load();\n };\n init();\n}\napp.controller('InstallmentType', InstallmentType);\nInstallmentType.$inject = ['$sce', '$filter', '$log', '$scope', '$state', 'assetService', 'getEligiblePaymentPlansExtensionsService', 'getLoggedInUserDetailsService', 'sessionStorageService', '$rootScope', '$window', 'commongaTaggingService', 'installmentpaymentplansandeligibilityservice'];\nfunction InstallmentType($sce, $filter, $log, $scope, $state, assetService, getEligiblePaymentPlansExtensionsService, getLoggedInUserDetailsService, sessionStorageService, $rootScope, $window, commongaTaggingService, installmentpaymentplansandeligibilityservice) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n var _both = 'Deposit & Energy Service Charges';\n var _deposit = 'Security Deposit';\n var _utility = 'Energy Service Charges';\n var _analyticsForBoth = assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.BOTH;\n var _analyticsForDeposit = assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.DEPOSIT;\n var _analyticsForUtility = assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.UTILITY;\n\n /* --------------Global Vars-----------------------*/\n vm.isLoaded = false;\n vm.selected = [];\n vm.installmentPlan = {};\n vm.currentUser = {}; //Get RequestedBy value\n vm.selectedPlan = null;\n $scope.$parent.vm.mainBtnActivate = true;\n $scope.$parent.vm.buttonLoad = false;\n vm.openAmount = '';\n vm.PaymentPlans = [];\n vm.downPaymentPlanOne = '';\n vm.downPaymentPlanTwo = '';\n vm.arrearsPlan = '';\n $rootScope.planType = '';\n $rootScope.SelectedPlanDP = '';\n $rootScope.SelectedPlanDesc = '';\n $rootScope.EligibilityMessage = '';\n vm.loadingSpinner = true;\n vm.minNoInstallment = 2;\n vm.guid = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.getInstallmentPlans = getInstallmentPlans;\n vm.nextpage = nextpage;\n vm.onCancel = onCancel;\n vm.formatTotalAmount = formatTotalAmount;\n\n /* --------------Function Definitions-----------------------*/\n function formatTotalAmount(amount) {\n var formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\n formattedAmount[0] = formattedAmount[0] || '0';\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n var lessThanZero = '';\n if (formattedIntegerAmount.indexOf('-') >= 0) {\n lessThanZero = '';\n } else if (formattedAmount[0].indexOf('-') >= 0) {\n lessThanZero = '-';\n }\n return $sce.trustAsHtml(\"$\".concat(lessThanZero).concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function nextpage(plan) {\n $rootScope.planType = plan;\n $rootScope.$broadcast(assetService.events.shellButton, {\n direction: 'next'\n });\n var selectedPaymentPlan = vm.PaymentPlans.find(function (paymentPlan) {\n return paymentPlan.PlanType === plan;\n });\n $rootScope.SelectedPlanDP = selectedPaymentPlan.DownPayment;\n $rootScope.SelectedPlanDesc = selectedPaymentPlan.PlanTypeDescription;\n if (Number(selectedPaymentPlan.DownPayment) === 0) {\n pushDL('payment-assistance-options', 'view-plan-|-arrears', 'select-plan-to-view-details-|-select-plan');\n } else if (Number(selectedPaymentPlan.DownPayment) !== 0) {\n pushDL('payment-assistance-options', \"view-plan-|-down-payment-\".concat(selectedPaymentPlan.PlanTypeDescription.replace('%', '')), 'select-plan-to-view-details-|-select-plan');\n }\n $state.go(assetService.installmentPlansRouteState.REVIEW_AND_SUBMIT);\n }\n function onCancel(path) {\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n }\n function getInstallmentPlans(data) {\n return installmentpaymentplansandeligibilityservice.sitecore.instalmentPaymentPlansAndEligibilityCheck(data).then(function (result) {\n vm.PaymentPlans = result.d.ReqCA.results[0].PaymentPlan.results;\n vm.openAmount = result.d.ReqCA.results[0].PaymentPlan.results[0].OpenAmount;\n vm.PaymentPlans.forEach(function (item, index) {\n if (item.DownPayment !== undefined && item.DownPayment > 0) {\n item.minNoOfInstallment = vm.minNoInstallment - 1;\n } else {\n item.minNoOfInstallment = vm.minNoInstallment;\n }\n });\n vm.loadingSpinner = false;\n $rootScope.EligibilityMessage = result.d.ReqCA.results[0].Messages.MessageNum;\n }, function (error) {\n vm.loadingSpinner = false;\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function load() {\n vm.loadingSpinner = true;\n vm.guid = angular.element('#guid').val();\n pushVPV('/vpv/de/page/payment-assistance-options/load/installment-plan/select-plan-to-view-details/select-plan');\n pushDL('payment-assistance-options', 'intent-|-installment-plan', 'kpi');\n var contractAccountId = null;\n if (_globalSelectedAccount.accountNum) {\n contractAccountId = _globalSelectedAccount.accountNum;\n sessionStorageService.set(assetService.storageKeys.contractAccountId, contractAccountId);\n }\n getInstallmentPlans(contractAccountId);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.loadingSpinner = true;\n if (assetService.apiConfig.useLocalHost) {\n _globalSelectedAccount = {\n accountNum: assetService.apiConfig.testAccount\n };\n } else {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n $window.scrollTo(0, 0);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n };\n init();\n}\napp.controller('ReviewAndSubmit', ReviewAndSubmit);\n//opti\nReviewAndSubmit.$inject = ['$log', '$scope', 'assetService', 'createInstallmentPlanService', 'installmentpaymentplansextensionsandeligibilityservice', 'dateHelperService', 'sessionStorageService', '$rootScope', '$window', 'commongaTaggingService', 'getLoggedInUserDetailsService', '$state', 'genericHelperService', 'modalService', 'broadcastService'];\nfunction ReviewAndSubmit($log, $scope, assetService, createInstallmentPlanService, installmentpaymentplansextensionsandeligibilityservice, dateHelperService, sessionStorageService, $rootScope, $window, commongaTaggingService, getLoggedInUserDetailsService, $state, genericHelperService, modalService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _both = 'Deposit & Energy Service Charges';\n var _deposit = 'Security Deposit';\n var _utility = 'Energy Service Charges';\n var _BOTH = 'BOTH';\n var _UTILITIES = 'UTILITIES';\n var _DEPOSIT = 'DEPOSIT';\n\n /* --------------Gloabl Vars-----------------------*/\n vm.contractAccountId = '';\n vm.totalAmount = '';\n vm.amtPerInstallment = '';\n vm.downPayment = '';\n vm.remainingAmount = '';\n vm.installmentsNumber = [];\n vm.installmentSelected = '';\n vm.loadingSpinner = false;\n vm.downPaymentSelected = false;\n vm.checked = false;\n vm.showModal = false;\n vm.installmentPlanStorage = null;\n vm.data = {\n installmentPlanData: null\n };\n vm.enrollStatus = '';\n vm.enrollFailure = false;\n $rootScope.IPEnrollmentFailed = false;\n vm.currentUser = {}; //Get RequestedBy value\n\n $scope.$parent.vm.mainBtnActivate = false;\n $scope.$parent.vm.buttonLoad = false;\n $rootScope.downPayment = false;\n vm.selectPlanType = '';\n vm.selectedState = '';\n vm.isContactVisible = true;\n vm.nodeHostName = '';\n vm.guid = '';\n vm.dppPlan = '';\n vm.planDesc = '';\n var _toFixed = 2;\n vm.dropDownChanged = false;\n\n /* --------------Function Declarations-----------------------*/\n\n vm.planDetails = planDetails;\n vm.checkbox = checkbox;\n vm.previous = previous;\n vm.cancel = cancel;\n vm.saveInstallmentPlan = saveInstallmentPlan;\n vm.contactRedirect = contactRedirect;\n vm.reloadPage = reloadPage;\n vm.init = init;\n\n /* --------------Function Definitions-----------------------*/\n\n function reloadPage() {\n $window.location.reload();\n }\n function saveInstallmentPlan() {\n var saveData = {\n contractAccountId: vm.contractAccountId,\n installmentPlanType: vm.planType,\n typeOfCharge: _UTILITIES,\n numberOfInstallment: vm.downPaymentSelected ? (Number(vm.installmentSelected) + 1).toString() : vm.installmentSelected,\n requestedBy: vm.currentUser.emailId\n };\n vm.loadingSpinner = true;\n createInstallmentPlan(saveData).then(function () {\n vm.loadingSpinner = false;\n if (vm.enrollStatus === 'S') {\n if (vm.dropDownChanged) {\n if (Number(vm.dppPlan) === 0) {\n pushDL('payment-assistance-options', \"arrears-|-\".concat(Number(vm.installmentSelected)), 'select-number-of-installments-|-review-enroll');\n } else {\n pushDL('payment-assistance-options', \"down-payment-\".concat(vm.planDesc.replace('%', ''), \"-|-\").concat(Number(vm.installmentSelected)), 'select-number-of-installments-|-review-enroll');\n }\n } else if (!vm.dropDownChanged) {\n if (Number(vm.dppPlan) === 0) {\n pushDL('payment-assistance-options', 'arrears-|-default', 'select-number-of-installments-|-review-enroll');\n } else {\n pushDL('payment-assistance-options', \"down-payment-\".concat(vm.planDesc.replace('%', ''), \"-|-default\"), 'select-number-of-installments-|-review-enroll');\n }\n }\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_PLAN_SUCCESS);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.loadingSpinner = false;\n });\n function createInstallmentPlan(data) {\n return createInstallmentPlanService.sitecore.createInstallmentPlan(data).then(function (result) {\n vm.enrollStatus = result.d.Type;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.enrollFailure = true;\n $rootScope.IPEnrollmentFailed = vm.enrollFailure;\n $window.scrollTo(0, 0);\n gatOnError({\n errorCode: error.MessageNum,\n endpoint: assetService.sitecoreEndpoints.CreateInstallmentPlan,\n errorMessage: error.Message\n });\n broadcastService.IPEnrollmentFailed();\n $scope.$parent.vm.mainBtnActivate = true;\n $scope.$parent.vm.buttonLoad = true;\n });\n }\n }\n function setContactSectionDetails() {\n vm.selectedState = localStorage.getItem(assetService.storageKeys.selectedState);\n if ($rootScope.EligibilityMessage && $rootScope.EligibilityMessage != '881') {\n vm.isContactVisible = false;\n }\n }\n function contactRedirect() {\n var contact_url = 'https://' + vm.nodeHostName + '/customer-service';\n if (Number(vm.dppPlan) === 0) {\n pushVPV('/vpv/de/page/payment-assistance-options/clickthrough/installment-plan/select-number-of-installments/review-enroll/arrears/contact-us');\n } else {\n pushVPV(\"/vpv/de/page/payment-assistance-options/clickthrough/installment-plan/select-number-of-installments/review-enroll/down-payment-\".concat(vm.planDesc.replace('%', ''), \"/contact-us\"));\n }\n window.open(contact_url);\n }\n function cancel() {\n modalService.cancelModal();\n }\n function previous() {\n $rootScope.$broadcast(assetService.events.shellButton, {\n direction: 'previous'\n });\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_TYPE);\n }\n function checkbox() {\n vm.showModal = true;\n }\n function planDetails() {\n vm.showModal = true;\n vm.dropDownChanged = true;\n vm.selectedPlanDetails = vm.plandetails[0].IPTypesInfo.results.find(function (details) {\n return details.NumberOfInstallments === vm.installmentSelected;\n });\n vm.selectedPlanDetails.DownPayment = parseFloat(vm.selectedPlanDetails.DownPayment).toFixed(_toFixed);\n }\n function paymentPlansAndExtensions(data) {\n return installmentpaymentplansextensionsandeligibilityservice.sitecore.installmentpaymentplansextensionsandeligibilityservice(data).then(function (result) {\n vm.totalAmount = result.d.TotalAmount;\n vm.plandetails = result.d.IPTypes.results;\n if (vm.plandetails.length == 0) {\n vm.loadingSpinner = false;\n broadcastService.failedStateNotificationTriggered(true);\n } else {\n vm.downPaymentSelected = Number(vm.plandetails[0].IPTypesInfo.results[0].DownPayment) !== 0;\n $rootScope.downPayment = vm.downPaymentSelected;\n vm.plandetails[0].IPTypesInfo.results.forEach(function (installment) {\n vm.installmentsNumber.push({\n value: installment.NumberOfInstallments,\n text: Number(installment.NumberOfInstallments)\n });\n });\n vm.installmentsNumber.sort(function (first, second) {\n return first.value - second.value;\n });\n vm.installmentsNumber = genericHelperService.setSelectedProp(vm.installmentsNumber, assetService.strings.VALUE, vm.installmentsNumber[vm.installmentsNumber.length - 1].value);\n vm.installmentSelected = vm.installmentsNumber[vm.installmentsNumber.length - 1].value;\n vm.selectedPlanDetails = vm.plandetails[0].IPTypesInfo.results.find(function (details) {\n return details.NumberOfInstallments === vm.installmentSelected;\n });\n vm.selectedPlanDetails.DownPayment = parseFloat(vm.selectedPlanDetails.DownPayment).toFixed(_toFixed);\n vm.loadingSpinner = false;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.loadingSpinner = false;\n });\n }\n function load() {\n vm.guid = angular.element('#guid').val();\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\n vm.planType = $rootScope.planType;\n vm.dppPlan = $rootScope.SelectedPlanDP;\n vm.planDesc = $rootScope.SelectedPlanDesc;\n var data = {\n accountNumber: vm.contractAccountId,\n planType: vm.planType,\n TypeOfCharge: _UTILITIES\n };\n if (Number(vm.dppPlan) === 0) {\n pushVPV('/vpv/de/page/payment-assistance-options/load/installment-plan/select-number-of-installments/review-enroll/arrears');\n } else {\n pushVPV(\"/vpv/de/page/payment-assistance-options/load/installment-plan/select-number-of-installments/review-enroll/down-payment-\".concat(vm.planDesc.replace('%', '')));\n }\n paymentPlansAndExtensions(data);\n vm.installmentPlanStorage = sessionStorageService.get(assetService.storageKeys.installmentPlan);\n setContactSectionDetails();\n }\n\n /* ---------------Google-Analytics-------------------*/\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function gatOnError(_ref) {\n var errorCode = _ref.errorCode,\n endpoint = _ref.endpoint,\n errorMessage = _ref.errorMessage;\n pushDL('payment-assistance-options_error', \"\".concat(errorCode, \"-|-\").concat(endpoint, \"-|-\").concat($rootScope.dataLayerFormat(errorMessage)), 'select-number-of-installments-|-review-enroll');\n pushVPV(\"/vpv/form/auth/payment-assistance-options/select-number-of-installments/home/review-enroll/enroll/error/\".concat(errorCode));\n }\n\n /* ---------------Initialization-------------------*/\n function init(nodeHostName) {\n vm.nodeHostName = nodeHostName ? nodeHostName : '';\n vm.loadingSpinner = true;\n $('.button-cancel').hide();\n $window.scrollTo(0, 0);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n load();\n }\n }\n ;\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('CCManageAutoPayAddBankAccount', CCManageAutoPayAddBankAccount);\nCCManageAutoPayAddBankAccount.$inject = ['$log', '$modalInstance', 'ccAutoPayAssetService', 'manageBankAccountsForPrepaidService', 'addBankDetailsKubraService', 'sessionStorageService', 'broadcastService', 'genericHelperService', 'assetService', 'getLoggedInUserDetailsService', '$scope', '$rootScope', '$timeout'];\nfunction CCManageAutoPayAddBankAccount($log, $modalInstance, ccAutoPayAssetService, manageBankAccountsForPrepaidService, addBankDetailsKubraService, sessionStorageService, broadcastService, genericHelperService, assetService, getLoggedInUserDetailsService, $scope, $rootScope, $timeout) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _accountIdGenerated = null;\n var selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n var enrolledProgram = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.enrolledProgram);\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _status = ccAutoPayAssetService.strings.status;\n\n /**\r\n * Global Vars\r\n */\n vm.getAccountLimit = undefined;\n vm.getNameLimit = undefined;\n vm.init = init;\n vm.accountType = [];\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n vm.form = {\n nickname: null,\n rountingNumber: null,\n accountNumber: null,\n accNumberConfirm: null,\n accountType: null\n };\n // $rootScope.autopayBankData = {\n // nickname: null,\n // rountingNumber: null,\n // accountNumber: null,\n // accNumberConfirm: null,\n // accountType: null,\n // };\n vm.loaded = false;\n vm.showerror = false;\n vm.currentUser = {};\n vm.orgBP = '';\n vm.guid = '';\n vm.ACIValidationFailed = false;\n vm.disableSave = false;\n $rootScope.validate = false;\n /**\r\n * Function Definitions\r\n */\n vm.closeModal = closeModal;\n vm.save = save;\n vm.checkAndContinue = checkAndContinue;\n vm.nicknameCheck = nicknameCheck;\n vm.nameError = nameError;\n vm.accountCheck = accountCheck;\n vm.accountError = accountError;\n vm.confirmAccCheck = confirmAccCheck;\n vm.confirmAccError = confirmAccError;\n /**\r\n * Function Declarations\r\n */\n function nicknameCheck() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength >= vm.getNameLimit) {\n console.log(vm.getNameLimit);\n vm.showNameError = true;\n }\n }\n function nameError() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength > vm.getNameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function accountCheck() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength >= vm.getAccountLimit) {\n console.log(vm.getAccountLimit);\n vm.showAccError = true;\n }\n }\n function accountError() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength > vm.getAccountLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function confirmAccCheck() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength >= vm.getAccountLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function confirmAccError() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength > vm.getAccountLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function closeModal() {\n $modalInstance.close();\n }\n function checkAndContinue(value) {\n vm.disableSave = false;\n vm.showError = false;\n $rootScope.autopayBankData = vm.form;\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function save(event) {\n var _vm$form, _vm$form2, _vm$form3, _vm$form4, _vm$form5, _vm$form6, _vm$form7;\n // for GAT events - begin\n $rootScope.validate = true;\n if ((_vm$form = vm.form) !== null && _vm$form !== void 0 && _vm$form.nickname && (_vm$form2 = vm.form) !== null && _vm$form2 !== void 0 && _vm$form2.accountNumber && (_vm$form3 = vm.form) !== null && _vm$form3 !== void 0 && _vm$form3.rountingNumber && (_vm$form4 = vm.form) !== null && _vm$form4 !== void 0 && _vm$form4.accountType && (_vm$form5 = vm.form) !== null && _vm$form5 !== void 0 && _vm$form5.accNumberConfirm && ((_vm$form6 = vm.form) === null || _vm$form6 === void 0 ? void 0 : _vm$form6.accNumberConfirm) == ((_vm$form7 = vm.form) === null || _vm$form7 === void 0 ? void 0 : _vm$form7.accountNumber)) {\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n // end\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n addNewBankAccountToSAP({\n businessPartnerId: vm.orgBP ? vm.orgBP : selectedAddressData.primaryBp,\n bankDescription: vm.form.nickname,\n accountNumber: vm.form.accountNumber,\n routingNumber: vm.form.rountingNumber,\n accountType: vm.form.accountType,\n requestedBy: vm.currentUser.emailId,\n action: ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid.ADD\n }).then(function (result) {\n var manageBankAcc_NAV = result.d.ManageBankAcc_NAV;\n if (result.d.ManageBankAcc_NAV.ReplyCode === _SUCCESS) {\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\n vm.ACIValidationFailed = false;\n sessionStorageService.set(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated, _accountIdGenerated);\n broadcastService.addNewBankAcccountIdGenerated();\n closeModal();\n delete $rootScope.autopayBankData;\n } else if (manageBankAcc_NAV.MessageNum === '732' || manageBankAcc_NAV.MessageNum === '739' || manageBankAcc_NAV.MessageNum === '734' || manageBankAcc_NAV.MessageNum === '429' || manageBankAcc_NAV.MessageNum === '270') {\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\n vm.ACIValidationFailed = true;\n vm.disableSave = true;\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('manage_auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'manage-auto-pay-|-add-bank-account');\n }, 2000);\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'auto-pay-|-add-bank-account');\n }, 2000);\n }\n //broadcastService.loadingSpinner(false);\n } else if (manageBankAcc_NAV.MessageNum === '278') {\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\n vm.ACIValidationFailed = true;\n vm.disableSave = true;\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('manage_auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'manage-auto-pay-|-duplicate-bank-account');\n }, 2000);\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'auto-pay-|-duplicate-bank-account');\n }, 2000);\n }\n //broadcastService.loadingSpinner(false);\n }\n // if (vm.showError === false) {\n // $modalInstance.close();\n // }\n }, function (error) {\n if (error.MessageNum === '732' || error.MessageNum === '739' || error.MessageNum === '734' || error.MessageNum === '429' || error.MessageNum === '270') {\n vm.ACIValidationFailed = true;\n vm.disableSave = true;\n vm.ACIValidationErr = error.Message;\n vm.ACIMessageNum = error.MessageNum;\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('manage_auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'manage-auto-pay-|-add-bank-account');\n }, 2000);\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'auto-pay-|-add-bank-account');\n }, 2000);\n }\n } else if (error.MessageNum === '278') {\n vm.ACIValidationFailed = true;\n vm.disableSave = true;\n vm.ACIValidationErr = error.Message;\n vm.ACIMessageNum = error.MessageNum;\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('manage_auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'manage-auto-pay-|-duplicate-bank-account');\n }, 2000);\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' + vm.ACIMessageNum);\n $timeout(function () {\n var ErrorMessage = document.getElementsByClassName('ErrorValidation')[0].innerHTML;\n pushDL('auto_pay_error', vm.ACIMessageNum + '-|-' + $rootScope.dataLayerFormat(ErrorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'auto-pay-|-duplicate-bank-account');\n }, 2000);\n }\n }\n });\n }\n }\n function addNewBankAccountToKubra(requestFields) {\n return addBankDetailsKubraService.sitecore.addBankDetails({\n bankAccountNumber: requestFields.accountNumber,\n businessPartner: requestFields.primaryBp,\n cardType: '2',\n description: '',\n firstName: '',\n lastName: '',\n nickName: requestFields.nickname,\n transitNo: requestFields.rountingNumber,\n type: '2'\n }).then(function (result) {\n if (Object.prototype.hasOwnProperty.call(result, _status)) {\n _accountIdGenerated = result.accountId;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addNewBankAccountToSAP(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data);\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n vm.guid = angular.element('#guid').val();\n vm.loaded = true;\n vm.ShowError = false;\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.organizationBP);\n if ($rootScope.dirdebenrolled) {\n pushVPV('/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/manage/modal');\n } else {\n pushVPV('/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/new-enrollment/modal');\n }\n }\n\n /**\r\n * Initialization\r\n */\n function init(accountTypeArray, accLimit, nameLimit) {\n var _vm$form8;\n vm.getAccountLimit = parseInt(accLimit);\n vm.getNameLimit = parseInt(nameLimit);\n $rootScope.validate = false;\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n // if (vm.accountType) {\n // vm.selectAccountType = vm.accountType[0].text;\n // }\n }\n vm.form = $rootScope.autopayBankData;\n if (((_vm$form8 = vm.form) === null || _vm$form8 === void 0 ? void 0 : _vm$form8.accountType) !== undefined) {\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.form.accountType);\n }\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n load();\n }\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('CCModalAddNewBankAccount', CCModalAddNewBankAccount);\nCCModalAddNewBankAccount.$inject = ['$log', '$modalInstance', 'ccAutoPayAssetService', 'manageBankAccountsForPrepaidService', 'addBankDetailsKubraService', 'sessionStorageService', 'broadcastService', 'genericHelperService', 'assetService', 'getLoggedInUserDetailsService', '$scope', '$rootScope'];\nfunction CCModalAddNewBankAccount($log, $modalInstance, ccAutoPayAssetService, manageBankAccountsForPrepaidService, addBankDetailsKubraService, sessionStorageService, broadcastService, genericHelperService, assetService, getLoggedInUserDetailsService, $scope, $rootScope) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _accountIdGenerated = null;\n var selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n var enrolledProgram = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.enrolledProgram);\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _status = ccAutoPayAssetService.strings.status;\n\n /**\r\n * Global Vars\r\n */\n vm.init = init;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n vm.form = {\n nickname: null,\n rountingNumber: null,\n accountNumber: null,\n accNumberConfirm: null,\n accountType: null\n };\n vm.loaded = false;\n vm.showerror = false;\n vm.currentUser = {};\n vm.orgBP = '';\n vm.accNameEmpty = false;\n vm.accRoutingEmpty = false;\n vm.accNumEmpty = false;\n vm.accConfirmNumEmpty = false;\n vm.accTypeEmpty = false;\n vm.accNumLimit = undefined;\n vm.nameLimit = undefined;\n vm.loader = false;\n /**\r\n * Function Definitions\r\n */\n vm.closeModal = closeModal;\n vm.save = save;\n vm.checkAndContinue = checkAndContinue;\n vm.checkNickname = checkNickname;\n vm.noNameError = noNameError;\n vm.checkAcctNum = checkAcctNum;\n vm.noAccError = noAccError;\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\n vm.noConfirmAccError = noConfirmAccError;\n\n /**\r\n * Function Declarations\r\n */\n function closeModal() {\n broadcastService.modalAddNewBankAccountClosed();\n $modalInstance.close();\n }\n function checkAndContinue(value) {\n vm.showError = false;\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function checkNickname() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength >= vm.nameLimit) {\n vm.showNameError = true;\n }\n }\n function noNameError() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength > vm.nameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function checkAcctNum() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength >= vm.accNumLimit) {\n vm.showAccError = true;\n }\n }\n function noAccError() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength > vm.accNumLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function checkConfirmAcctNum() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength >= vm.accNumLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function noConfirmAccError() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength > vm.accNumLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function save(event) {\n // for GAT events - begin\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n // end\n vm.accNameEmpty = vm.form.nickname ? false : true;\n vm.accRoutingEmpty = vm.form.rountingNumber ? false : true;\n vm.accNumEmpty = vm.form.accountNumber ? false : true;\n vm.accConfirmNumEmpty = vm.form.accNumberConfirm ? false : true;\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n if (!vm.accNameEmpty && !vm.accNumEmpty && !vm.accConfirmNumEmpty && !vm.accRoutingEmpty && !vm.accTypeEmpty) {\n vm.loader = true;\n if (enrolledProgram === ccAutoPayAssetService.strings.AUTPAY) {\n addNewBankAccountToKubra({\n accountNumber: vm.form.accountNumber,\n primaryBp: vm.orgBP ? vm.orgBP : selectedAddressData.primaryBp,\n nickname: vm.form.nickname,\n rountingNumber: vm.form.rountingNumber\n }).then(function () {\n sessionStorageService.set(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated, _accountIdGenerated);\n broadcastService.addNewBankAcccountIdGenerated();\n deleteGlobalGAT();\n $modalInstance.close();\n });\n } else {\n addNewBankAccountToSAP({\n businessPartnerId: vm.orgBP ? vm.orgBP : selectedAddressData.primaryBp,\n bankDescription: vm.form.nickname,\n accountNumber: vm.form.accountNumber,\n routingNumber: vm.form.rountingNumber,\n accountType: vm.selectAccountType,\n requestedBy: vm.currentUser.emailId,\n action: ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid.ADD\n }).then(function (result) {\n if (result.d.ManageBankAcc_NAV.ReplyCode === _SUCCESS) {\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\n }\n sessionStorageService.set(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated, _accountIdGenerated);\n broadcastService.addNewBankAcccountIdGenerated();\n deleteGlobalGAT();\n if (vm.showError === false) {\n $modalInstance.close();\n }\n }, function (error) {\n console.log(error);\n vm.loader = false;\n });\n }\n }\n }\n function addNewBankAccountToKubra(requestFields) {\n return addBankDetailsKubraService.sitecore.addBankDetails({\n bankAccountNumber: requestFields.accountNumber,\n businessPartner: requestFields.primaryBp,\n cardType: '2',\n description: '',\n firstName: '',\n lastName: '',\n nickName: requestFields.nickname,\n transitNo: requestFields.rountingNumber,\n type: '2'\n }).then(function (result) {\n if (Object.prototype.hasOwnProperty.call(result, _status)) {\n _accountIdGenerated = result.accountId;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addNewBankAccountToSAP(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data);\n }\n function load() {\n vm.loaded = true;\n vm.ShowError = false;\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n }\n\n /**\r\n * Initialization\r\n */\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accNumLimit = accountNumberLimit;\n vm.nameLimit = nicknameLimit;\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n load();\n }\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('ccModalUpdateDelegateBankAccount', ccModalUpdateDelegateBankAccount);\nccModalUpdateDelegateBankAccount.$inject = ['$log', '$scope', '$modalInstance', 'ccAutoPayAssetService', 'sessionStorageService', 'broadcastService', 'genericHelperService', 'assetService', 'getPrepaidDetailsService', 'getAccountEnrollmentEligibilityStatusService', 'modalService', 'enrollInBillingAndPaymentProgramsService', 'commongaTaggingService', 'responseNotificationsService'];\nfunction ccModalUpdateDelegateBankAccount($log, $scope, $modalInstance, ccAutoPayAssetService, sessionStorageService, broadcastService, genericHelperService, assetService, getPrepaidDetailsService, getAccountEnrollmentEligibilityStatusService, modalService, enrollInBillingAndPaymentProgramsService, commongaTaggingService, responseNotificationsService) {\n /**\r\n * Scope Vars\r\n */\n $scope.delegateUserAccountDetails = {\n accountId: null,\n accountNumber: null,\n nickname: null,\n rountingNumber: null,\n accountType: null\n };\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n var _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\n var _bankDescription = ccAutoPayAssetService.strings.bankDescription;\n var _bankAccountsOriginal = null;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _newBankAccountIdGenerated = null;\n var _selectedAddressData = null;\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _UPDATE = ccAutoPayAssetService.strings.UPDATE;\n var _selectedEmail = null;\n vm.loadingSpinner = true;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.defaultBankAccount = null;\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n vm.accountWasNotSelected = true;\n vm.enrolledInKubra = false;\n vm.dropdowns = {\n bankAccounts: null\n };\n vm.form = {\n manageAutoPayForm: null,\n bankAccount: null,\n paymentDate: null,\n daysBeforePaymentDate: null,\n maximumPaymentAmount: null,\n maximumPaymentAmountCheckbox: false\n };\n vm.loaded = false;\n vm.isBPACancel = false;\n vm.nickname = null;\n vm.routingNumber = null;\n vm.accountNumber = null;\n vm.accType = null;\n\n /**\r\n * Emit and Broadcast events\r\n */\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, function () {\n _newBankAccountIdGenerated = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated);\n reload();\n });\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, function () {\n _newBankAccountIdGenerated = null;\n reload();\n });\n\n /**\r\n * Function Declarations\r\n */\n vm.init = init;\n vm.closeModal = closeModal;\n vm.addBankAccount = addBankAccount;\n vm.cancel = cancel;\n vm.save = save;\n vm.selectAccountForDelegate = selectAccountForDelegate;\n vm.hideAccount = hideAccount;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /**\r\n * Function Definitions\r\n */\n function virtualPagePush() {\n for (var _len = arguments.length, _arguments = new Array(_len), _key = 0; _key < _len; _key++) {\n _arguments[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(_arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, _arguments2 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n _arguments2[_key2] = arguments[_key2];\n }\n var arrayElements = Array.prototype.slice.call(_arguments2);\n commongaTaggingService.attributePush(arrayElements);\n }\n function hideAccount(value) {\n var convertedValue = value;\n if (convertedValue && !isNaN(convertedValue)) {\n var stringLength = convertedValue.length;\n var visibleDigits = 4;\n if (stringLength > visibleDigits) {\n convertedValue = convertedValue.slice(-visibleDigits);\n }\n convertedValue = \"*****\".concat(convertedValue);\n }\n return convertedValue;\n }\n function addBankAccount() {\n modalService.addNewBankAccount();\n }\n function findAccountAndSelectIt() {\n var accountFound = _.find(_bankAccountsOriginal, function (account) {\n return account[_BankAccountId] === vm.form.bankAccount;\n });\n if (accountFound) {\n $scope.delegateUserAccountDetails = {\n accountId: accountFound.BankAccountId,\n nickname: accountFound.BankDescription,\n rountingNumber: accountFound.BankRoutingNumber,\n accountNumber: accountFound.BankAccountNumber,\n accountType: accountFound.BankAccountType\n };\n vm.accountType.forEach(function (item) {\n if (item.value === accountFound.BankAccountType) {\n $scope.delegateUserAccountDetails.accountType = item.text;\n vm.accType = item.text;\n }\n });\n vm.nickname = accountFound.BankDescription;\n vm.routingNumber = accountFound.BankRoutingNumber;\n vm.accountNumber = accountFound.BankAccountNumber;\n vm.accountWasNotSelected = false;\n }\n return accountFound;\n }\n function getBankAccountsSAP(requestFields) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails({\n businessPartnerId: requestFields.businessPartnerId,\n contractAccountId: requestFields.contractAccountId\n }).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n setDropdowns();\n vm.loadingSpinner = false;\n vm.loaded = true;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function reload() {\n vm.loaded = false;\n load();\n }\n\n // function below cancels autopay management and send back to B&P Programs LP\n function cancel(url) {\n window.location.href = url;\n }\n function save() {\n // Update details for SAP\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n action: _UPDATE,\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n bankId: $scope.delegateUserAccountDetails.accountId,\n // routingNo: $scope.delegateUserAccountDetails.rountingNumber,\n // bankAccountNo: $scope.delegateUserAccountDetails.accountNumber,\n // bankName: $scope.delegateUserAccountDetails.nickname,\n requestedBy: _selectedEmail.primaryEmail\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\n broadcastService.headerSwitch('Full');\n responseNotificationsService.successResponse({\n vehicle: 'toast',\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_SUCCESS,\n pageTitle: 'Manage Auto Pay'\n });\n window.location.href = '/my-account/billing-and-payment-programs/auto-pay/manage-auto-pay';\n }\n });\n }\n function selectAccountForDelegate(optionSelected) {\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\n addBankAccount();\n } else {\n findAccountAndSelectIt();\n }\n }\n function setModels() {\n if (_newBankAccountIdGenerated) {\n vm.form.bankAccount = _newBankAccountIdGenerated;\n findAccountAndSelectIt();\n } else {\n vm.form.bankAccount = $scope.delegateUserAccountDetails.accountId;\n }\n }\n function setDropdowns() {\n if (_bankAccountsOriginal.length > 0) {\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList(_bankAccountsOriginal, _BankAccountId, _bankDescription);\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(vm.dropdowns.bankAccounts, ccAutoPayAssetService.strings.value, _newBankAccountIdGenerated || $scope.delegateUserAccountDetails.accountId);\n vm.dropdowns.bankAccounts.push({\n text: 'Add Bank Account',\n value: ccAutoPayAssetService.strings.addAccount\n });\n vm.showDrops = true;\n } else {\n vm.showDrops = false;\n }\n }\n function load() {\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n vm.isBPACancel = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment) === 'billingAndPaymentAcivity';\n broadcastService.headerSwitch('Full');\n _selectedEmail = sessionStorageService.get(ccAutoPayAssetService.storageKeys.globalAccounts.info);\n getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\n contractAccountId: _selectedAddressData.accountSelected.accountNum\n }).then(function (result) {\n var enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\n var enrolled = ccAutoPayAssetService.strings.Enrolled;\n\n // It's enrolled into AutoPay SAP\n var enrollSAPData = _.find(enrolledPrograms, function (program) {\n return program.ProgName === ccAutoPayAssetService.strings.DIRDEB && program.EligibilityStatus === enrolled;\n });\n if (!_newBankAccountIdGenerated && enrollSAPData) {\n $scope.delegateUserAccountDetails = {\n accountId: enrollSAPData.BankAccountId,\n accountNumber: enrollSAPData.BankAccountNumber,\n nickname: enrollSAPData.BankAccountName,\n rountingNumber: enrollSAPData.RoutingNumber,\n accountType: enrollSAPData.BankAccountType\n };\n vm.accountType.forEach(function (item) {\n if (item.value === enrollSAPData.BankAccountType) {\n $scope.delegateUserAccountDetails.accountType = item.text;\n }\n });\n vm.accountWasNotSelected = true;\n }\n getBankAccountsSAP({\n businessPartnerId: _selectedAddressData.primaryBp,\n contractAccountId: _selectedAddressData.accountSelected.accountNum\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function closeModal() {\n $modalInstance.close();\n }\n\n /**\r\n * Initialization\r\n */\n\n function init() {\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n load();\n }\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable max-len */\n/* eslint-disable no-magic-numbers */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\napp.controller('CCUnenrollAutoPay', CCUnenrollAutoPay);\nCCUnenrollAutoPay.$inject = ['$log', '$modalInstance', 'sessionStorageService', 'broadcastService', 'assetService', 'modalParameters', 'enrollInBillingAndPaymentProgramsService', 'ccAutoPayAssetService', '$state', '$rootScope'];\nfunction CCUnenrollAutoPay($log, $modalInstance, sessionStorageService, broadcastService, assetService, modalParameters, enrollInBillingAndPaymentProgramsService, ccAutoPayAssetService, $state, $rootScope) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\n var _selectedAddressData = null;\n var _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\n var _DEENROLL = ccAutoPayAssetService.strings.DEENROLL;\n vm.accountSelected = modalParameters;\n var SAPdueBalance;\n var SAPdueDate;\n var _selectedEmail;\n\n /**\r\n * Global Vars\r\n */\n vm.init = init;\n\n /**\r\n * Function Definitions\r\n */\n vm.closeModal = closeModal;\n vm.deEnroll = deEnroll;\n /**\r\n * Function Declarations\r\n */\n function closeModal() {\n $modalInstance.close();\n }\n function deEnroll() {\n vm.loadingSpinner = true;\n broadcastService.headerSwitch('Full');\n // Update details for SAP\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\n action: _DEENROLL,\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\n progName: _DIRDEB,\n bankId: vm.accountSelected.accountId,\n requestedBy: _selectedEmail.primaryEmail,\n extensionSet: [{\n RefObject: _DIRDEB,\n RefFieldName: 'CPI_MESSAGE',\n RefFieldValue: $rootScope.cpiInfo ? \"Amount \".concat($rootScope.cpiInfo.dueBalance, \" Date \").concat($rootScope.cpiInfo.sapdueDate) : ''\n }]\n }).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\n $modalInstance.close();\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenrollSuccess);\n } else {\n $modalInstance.close();\n vm.error = true;\n vm.loadingSpinner = false;\n }\n }, function (error) {\n $modalInstance.close();\n $rootScope.$broadcast(ccAutoPayAssetService.events.modalUnenrollClosed);\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n pushVPV('/vpv/de/page/auto-pay/success/auto-pay/are-you-sure-you-want-to-unenroll/na/manage');\n vm.loaded = true;\n vm.ShowError = false;\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.organizationBP);\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\n _selectedEmail = sessionStorageService.get(ccAutoPayAssetService.storageKeys.globalAccounts.info);\n }\n\n /**\r\n * Initialization\r\n */\n function init() {\n load();\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCMPSAllAccountModal', CCMPSAllAccountModal);\nCCMPSAllAccountModal.$inject = ['$modalInstance', 'modalParameters', '$rootScope', 'assetService', '$animate'];\nfunction CCMPSAllAccountModal($modalInstance, modalParameters, $rootScope, assetService, $animate) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Global Vars-----------------------*/\n vm.accounts = modalParameters.accounts;\n vm.currentSelectedAccount = modalParameters.selectedAccount;\n vm.allAccountData = modalParameters.allaccountsData;\n vm.pagedData = [];\n vm.startIndex = 0;\n vm.selectedAccount;\n vm.curPage = 0;\n vm.numberOfPages = 1;\n vm.pagenumbers = [];\n vm.pageSize = 10;\n vm.radioChecked = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.prevPage = prevPage;\n vm.nextPage = nextPage;\n vm.selectAddress = selectAddress;\n vm.onAccountClick = onAccountClick;\n vm.gotoPage = gotoPage;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n $animate.enabled(true);\n }\n function onAccountClick(account) {\n vm.radioChecked = true;\n vm.selectedAccount = account;\n vm.selectedAccountObj = account;\n }\n function prevPage() {\n $animate.enabled(false);\n vm.pagedData = [];\n vm.curPage = vm.curPage === assetService.numeric_Numbers.zero ? vm.curPage : vm.curPage -= 1;\n vm.pagedData = vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\n }\n function nextPage() {\n $animate.enabled(false);\n vm.pagedData = [];\n vm.curPage = vm.curPage === vm.numberOfPages - assetService.numeric_Numbers.onee ? vm.curPage : vm.curPage += 1;\n vm.pagedData = vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\n }\n function gotoPage(page) {\n $animate.enabled(false);\n vm.pagedData = [];\n vm.curPage = page === assetService.numeric_Numbers.onee ? 0 : page - 1;\n vm.pagedData = vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\n }\n function selectAddress() {\n $rootScope.$broadcast('selectAddressFromAccountModal', vm.selectedAccountObj, true);\n closeModal();\n }\n function load() {\n $animate.enabled(false);\n vm.pagedData = [];\n vm.numberOfPages = Math.ceil(vm.accounts.length / vm.pageSize);\n vm.pagedData = vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\n console.log(vm.pagedData);\n vm.pagenumbers = _.range(1, vm.numberOfPages + 1);\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCCancelProductServiceModal', CCCancelProductServiceModal);\nCCCancelProductServiceModal.$inject = ['$rootScope', '$log', 'assetService', '$modalInstance', 'sessionStorageService', 'ccProductAndServicesAssetService', 'updateCancelEnrollmentService', 'commonService', 'responseNotificationsService'];\nfunction CCCancelProductServiceModal($rootScope, $log, assetService, $modalInstance, sessionStorageService, ccProductAndServicesAssetService, updateCancelEnrollmentService, commonService, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var upgradeCancelStore = {};\n vm.regulated = 'REGULATED';\n vm.nonRegulated = 'NON_REGULATED';\n vm.recurring = 'RECURRING';\n vm.prodName = '';\n\n /* --------------Global Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.cancelProductService = cancelProductService;\n vm.cancelledSuccessfully = false;\n vm.form = {};\n vm.productService = {};\n $rootScope.cancelServiceFailedProduct = \"\";\n\n /* --------------Function Definitions-----------------------*/\n\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function cancelProductService() {\n cancelProductServiceService(upgradeCancelStore).then(function () {\n if (vm.cancelledSuccessfully) {\n pushVPV(\"/vpv/de/modal/manage-products-services/success/manage-products-services/your-subscription-was-canceled/na/\".concat(vm.prodName));\n responseNotificationsService.successResponse({\n vehicle: assetService.strings.TOAST,\n message: $(\"#succes-toast\").attr(\"text\"),\n pageTitle: 'Manage Products and Services',\n imgToDisplay: $(\"#succes-toast\").attr(\"icon\"),\n uniqueClass: 'cancelModalPnS',\n GatRequired: false\n });\n setTimeout(function () {\n window.location.reload();\n }, 3000);\n } else {\n $rootScope.cancelServiceFailedProduct = vm.productService.productCode;\n $rootScope.cancelServiceFailCount += 1;\n sessionStorageService.set('cancelServiceFailCount', $rootScope.cancelServiceFailCount);\n if ($rootScope.cancelServiceFailCount <= 2) {\n var errMsg = 'Were having trouble canceling your subscription. Please try again later';\n errMsg = errMsg.toLowerCase().replaceAll(\" \", \"-\");\n pushVPV('/vpv/de/page/manage-products-services/error/manage-products-services/na/' + errMsg);\n pushDL('manage-products-service_error', 'na-|-' + errMsg + \"-|-\".concat(assetService.sitecoreEndpoints.updateCancelEnrollUrl), 'manage-products-services');\n } else {\n var _errMsg = 'We are unable to cancel your subscription. Please try again another time';\n _errMsg = _errMsg.toLowerCase().replaceAll(\" \", \"-\");\n pushVPV('/vpv/de/page/manage-products-services/error/' + _errMsg);\n pushDL('manage-products-service_error', 'na-|-' + _errMsg + \"-|-\".concat(assetService.sitecoreEndpoints.updateCancelEnrollUrl), 'manage-products-services');\n }\n setTimeout(function () {\n if ($rootScope.cancelServiceFailCount <= 2) {\n window.location.reload();\n }\n }, 3000);\n // responseNotificationsService.errorResponse({\n // vehicle: assetService.strings.TOAST,\n // message: 'Enrollment Cancellation Request Failed',\n // pageTitle: 'Manage Products and Services',\n // });\n }\n $modalInstance.close();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function cancelProductServiceService(param) {\n $rootScope.dataLayer.push({\n event: 'eec.cancel',\n ecommerce: {\n refund: {\n actionField: {\n order_id: vm.productService.enrollmentCode,\n charge_type: vm.productService.typeOfTheCharge === vm.recurring ? 'recurring' : 'onetime'\n },\n products: [{\n id: vm.productService.productCode,\n // product selected by the user to cancel it\n quantity: vm.productService.quantity // quantity selected by the user\n }]\n }\n }\n });\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/yes-cancel-subscription/' + vm.prodName);\n return updateCancelEnrollmentService.sitecore.updateCancel(param).then(function (result) {\n // if(result === true) {\n if (result.contractAccounts[0].enrollmentResponseList[0].status === 'error') {\n // Waiting for data to test the service and the response\n vm.cancelledSuccessfully = false;\n } else {\n vm.cancelledSuccessfully = true;\n }\n });\n }\n function closeModal() {\n if (vm.productService.productGroup === vm.nonRegulated) {\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/close/' + vm.prodName);\n } else {\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/no-keep-subscription/' + vm.prodName);\n }\n $modalInstance.close();\n }\n function load() {\n upgradeCancelStore = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.manageProductsServices);\n if (upgradeCancelStore !== undefined) {\n vm.productService = {\n name: upgradeCancelStore.providerContractAccountNumberList[0].name ? upgradeCancelStore.providerContractAccountNumberList[0].name : 'Unavailable',\n price: upgradeCancelStore.providerContractAccountNumberList[0].price,\n productCode: upgradeCancelStore.providerContractAccountNumberList[0].productCode,\n quantity: upgradeCancelStore.providerContractAccountNumberList[0].quantity,\n productGroup: upgradeCancelStore.providerContractAccountNumberList[0].productGroup,\n enrollmentCode: upgradeCancelStore.providerContractAccountNumberList[0].enrollmentCode,\n typeOfTheCharge: upgradeCancelStore.providerContractAccountNumberList[0].typeOfTheCharge\n };\n }\n vm.prodName = vm.productService.name.toLowerCase().replaceAll(\" \", \"-\");\n pushVPV('/vpv/de/modal/manage-products-services/load/manage-products-services/sure-you-want-to-cancel');\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCUpdateSpeedPayPaymentMethodModal', CCUpdateSpeedPayPaymentMethodModal);\nCCUpdateSpeedPayPaymentMethodModal.$inject = ['$modalInstance', '$rootScope', '$log', 'modalService', 'sessionStorageService', 'ccProductAndServicesAssetService', 'speedpayService', 'genericHelperService', '$scope', 'commongaTaggingService', 'getCardDetailsService', 'assetService', 'getUpdateCardDetailsService', 'updateCardDetailsService'];\nfunction CCUpdateSpeedPayPaymentMethodModal($modalInstance, $rootScope, $log, modalService, sessionStorageService, ccProductAndServicesAssetService, speedpayService, genericHelperService, $scope, commongaTaggingService, getCardDetailsService, assetService, getUpdateCardDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.cardIdForCA = {};\n\n /* --------------Global Vars-----------------------*/\n var currentCASP = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay);\n var currentBP = '';\n var dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\n var currentUser = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.currentUser);\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.updatePayment = updatePayment;\n vm.upgradedSuccessfully = false;\n vm.form = {};\n vm.goToSpeedpay = goToSpeedpay;\n /* --------------Function Definitions-----------------------*/\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function closeModal() {\n var workflowName = 'de-manage-products-services';\n var headline = 'update-your-payment-method';\n var subheadline = '';\n var ctaBtn = 'cancel';\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/' + headline + '/cancel');\n $modalInstance.close();\n }\n function updatePayment() {\n var workflowName = 'cart-manage-products-services';\n var headline = 'update-your-payment-method';\n var subheadline = '';\n var ctaBtn = 'update';\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/' + headline + '/update');\n goToSpeedpay();\n $modalInstance.close();\n }\n function attributePush() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arrayElements = Array.prototype.slice.call(args);\n commongaTaggingService.attributePush(arrayElements);\n }\n function getUpdateCardDetails(action, expire, externalId) {\n if (action === 'DISPLAY') {\n vm.getCardData = {\n action: action,\n businessPartnerId: currentBP,\n requestedBy: currentUser.emailId !== null ? currentUser.emailId : ''\n };\n }\n if (action === 'ADD') {\n vm.getCardData = {\n action: action,\n businessPartnerId: currentBP,\n requestedBy: currentUser.emailId !== null ? currentUser.emailId : '',\n creditCardNumber: externalId,\n creditCardType: '0006',\n expirationDate: expire\n };\n }\n return getUpdateCardDetailsService.sitecore.getUpdateCardDetails(vm.getCardData).then(function (result) {\n var allCardResult = {};\n if (result.d.Action === 'DISPLAY' && result.d.CredCard_Res.results[0].Msg.Type === assetService.replyCodes.S) {\n allCardResult = {\n bpNumber: result.d.BusinessPartner,\n Action: result.d.Action,\n cardDetails: function () {\n return _.map(result.d.CredCard_Res.results, function (card) {\n return {\n creditCardID: card.CreditCardID,\n CreditCardNumber: card.CreditCardNumber,\n CreditCardType: card.CreditCardType,\n CreditCardAccountName: card.CreditCardAccountName,\n ExpirationDate: card.ExpirationDate,\n ExpirationDateStr: card.ExpirationDateStr\n };\n });\n }()\n };\n return allCardResult;\n }\n return allCardResult;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n function getCardDetails() {\n var getCardData = {\n action: 'CCARDREQSET',\n contractAccount: currentCASP\n };\n return getCardDetailsService.sitecore.getCardDetails(getCardData).then(function (getresult) {\n return getresult;\n }, function (errVal) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(errVal);\n }\n });\n }\n function load() {\n getUpdateCardDetails('DISPLAY').then(function (allcards) {\n vm.allCardsDataForBp = allcards;\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.allCardsDataForBp, vm.allCardsDataForBp);\n getCardDetails().then(function (cardDetails) {\n if (cardDetails.d.CCardId !== null) {\n vm.cardIdForCA.id = cardDetails.d.CCardId.CreditCardID;\n vm.cardIdForCA.businessPartner = cardDetails.d.CCardId.BusinessPartner;\n vm.cardIdForCA.contractAccount = cardDetails.d.CCardId.ContractAccount;\n vm.cardDetailsForCA = _.find(vm.allCardsDataForBp.cardDetails, function (card) {\n return card.creditCardID === vm.cardIdForCA.id;\n });\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.cardDetailForCA, vm.cardDetailsForCA);\n }\n });\n });\n pushVPV('/vpv/de/modal/manage-products-services/load/manage-products-services/update-your-payment-method');\n }\n function goToSpeedpay() {\n vm.cardIdDetailsForCA = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.cardDetailForCA);\n speedpayService.getSpeedpayUrl({\n action: assetService.strings.EDIT,\n login: currentBP,\n externalWalletId: vm.cardIdDetailsForCA.CreditCardNumber,\n disableACH: 'Y',\n speedframeCallbackUrl: \"\".concat(location.origin, \"/my-account/products-and-services/manage-products-and-services?action=\").concat(assetService.strings.STOP)\n }).then(function (result) {\n window.location.href = result;\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n if (dashboardUserType === assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS || dashboardUserType === assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS || $rootScope.isNonNative) {\n currentBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\n } else {\n currentBP = sessionStorageService.get(assetService.storageKeys.managePSBPNumber);\n }\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCUpgradeProductServiceModal', CCUpgradeProductServiceModal);\nCCUpgradeProductServiceModal.$inject = ['$modalInstance', 'sessionStorageService', 'ccProductAndServicesAssetService'];\nfunction CCUpgradeProductServiceModal($modalInstance, sessionStorageService, ccProductAndServicesAssetService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var upgradeCancelStore = {};\n\n /* --------------Global Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.upgradedSuccessfully = false;\n vm.form = {};\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n upgradeCancelStore = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.manageProductsServices);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-param-reassign */\napp.controller('AdditionalOptionsPreferencesController', AdditionalOptionsPreferencesController);\nAdditionalOptionsPreferencesController.$inject = ['$log', 'genericHelperService', 'NotificationPreferencesHelperService', 'assetService', 'sessionStorageService', 'modalService', '$scope', '$rootScope', 'updateConsentService', '$timeout', 'umcModalService', 'commongaTaggingService', 'readConsentService', 'accountSearchService', 'broadcastService', '$window', '$document'];\nfunction AdditionalOptionsPreferencesController($log, genericHelperService, notificationHelper, assetService, sessionStorageService, modalService, $scope, $rootScope, updateConsentService, $timeout, umcModalService, commongaTaggingService, readConsentService, accountSearchService, broadcastService, $window, $document) {\n /* Global Vars */\n\n var vm = this;\n var currentCommunication = {};\n\n /* Scope Vars */\n var globalAccountInfo = {};\n $rootScope.closeBtn = false;\n var globalSelectedAccount = {};\n var cardName = '';\n vm.cardsModel = [];\n vm.chan_opt = [];\n vm.comm_opt = [];\n vm.umcCard = {\n status: false\n };\n vm.channelItemsDDList = null;\n vm.preferencesReady = false;\n vm.notificationPreferences = null;\n vm.emailToDelete = null;\n vm.phoneToDelete = null;\n vm.notificationToConfirm = null;\n vm.showLoader = {};\n vm.notificationDropdowns = {\n ENRL_PRCHS: {\n channel: [],\n communication: []\n }\n };\n vm.currentNotifModal = {\n title: '',\n type: '',\n notifIdModal: '',\n channelIdModal: null,\n enrolledStatus: false,\n disableSave: true\n };\n vm.upgradeConsent = false;\n vm.toastData = {\n option: '',\n show: false,\n messageOption: ''\n };\n vm.toastOpt = {\n option: '',\n show: false,\n messageOption: '',\n workFlow: 'toast notification'\n };\n vm.on = 'on';\n vm.off = 'off';\n vm.toastTimeout = 6000;\n vm.gatConstants = {};\n vm.gatActiveCard = '';\n vm.modalValue = '';\n vm.isvalidSubmit = false;\n vm.isDuplicate = false;\n vm.clickedSave = {};\n vm.showError = {};\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n vm.typeError = false;\n vm.errorDelete = false;\n\n /* Function Declarations */\n vm.addCommVPV = addCommVPV;\n vm.inlineVPV = inlineVPV;\n vm.errorModalVPV = errorModalVPV;\n vm.cancelChange = cancelChange;\n vm.deleteNotification = deleteNotification;\n vm.addNotification = addNotification;\n vm.dropChannel = dropChannel;\n vm.dropCommunication = dropCommunication;\n vm.cancelChanges = cancelChanges;\n vm.checkPlaceholder = checkPlaceholder;\n vm.saveChanges = saveChanges;\n vm.changeFormatDetailed = changeFormatDetailed;\n vm.enrolledNotif = enrolledNotif;\n vm.saveNewCommunication = saveNewCommunication;\n vm.handleEnrollment = handleEnrollment;\n vm.cancelModal = cancelModal;\n vm.sendNotification = sendNotification;\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\n vm.sendAdditionalOptions = sendAdditionalOptions;\n vm.sendEditPayments = sendEditPayments;\n vm.phonesTypes = [];\n vm.activateUmc = activateUmc;\n vm.openUMC = openUMC;\n vm.ohioUser = false;\n vm.closeToast = closeToast;\n vm.getSuccessMessage = getSuccessMessage;\n vm.isUnique = isUnique;\n vm.isIdentical = isIdentical;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.umcModalInstance = '';\n vm.sendEditAdditionalOptions = sendEditAdditionalOptions;\n vm.initGatConstants = initGatConstants;\n vm.indexToCardTitle = indexToCardTitle;\n vm.sendAddNotification = sendAddNotification;\n vm.sendDelete = sendDelete;\n vm.gatNewComm = gatNewComm;\n vm.showModalLoader = false;\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n vm.communicationVal = communicationVal;\n /**\r\n * Emit and Broadcast events\r\n */\n\n $scope.$on(assetService.events.addNewCommunication, function (event, data) {\n var newNotif = notificationHelper.getCurrentNotification(data, vm.notificationPreferences);\n newNotif.loadingChanges = false;\n notificationHelper.updateNotif(data, vm.communicationOptions, vm.notificationDropdowns, vm.notificationPreferences);\n $scope.$parent.currComm = vm.communicationOptions;\n });\n $scope.$on(assetService.events.umcActionConsent, function (event, data) {\n // UMC Action\n editConsentStatus(data);\n });\n\n /* Function Definitions */\n function activateUmc() {\n $rootScope.umcError = true;\n if (!vm.umcCard.status) {\n openUMC(true);\n } else {\n // umcVersion = sessionStorageService.get(assetService.notifPref.sessionStorage.umcCard);\n modalService.umcRevokeModal();\n virtualPagePush($('#hdn-UMC').attr('businessFunction'), $('#hdn-UMC').attr('headLine'), vm.off, $('#hdn-UMC').attr('consentStatusimpression'));\n }\n }\n\n //GAT for ADD/DELETE COMMUNICATION\n function gatAddDeleteEvent(notifId, newData, oldData) {\n var indexNew = newData.findIndex(function (x) {\n return x.id == notifId;\n });\n var lenOld = 0;\n var indexOld = '';\n if (oldData != undefined) {\n indexOld = oldData.findIndex(function (x) {\n return x.id == notifId;\n });\n }\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\n lenOld = Object.keys(oldData[indexOld].notifications).length;\n }\n var cardName = subheadline(notifId);\n var count = 0;\n var newValue = '';\n var type = '';\n if (lenOld == 0) {\n newData[indexNew].notifications.forEach(function (notifNew) {\n type = notifNew.channel == 'TXT' ? 'text' : notifNew.channel == 'VOIC' ? 'call' : 'email';\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n });\n } else {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n type = 'email';\n newValue = notifNew.communicationText;\n }\n oldData[indexOld].notifications.forEach(function (notifOld) {\n if (notifOld.channel == notifNew.channel && (newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n count = 1;\n }\n });\n if (count == 0) {\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n }\n count = 0;\n });\n }\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\n var counter = 0,\n deleteFlag = false;\n oldData[indexOld].notifications.forEach(function (notifOld) {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n newValue = notifNew.communicationText;\n }\n if (notifOld.channel == notifNew.channel && (notifOld.communicationText != undefined && notifOld.communicationText == 'Add New Email' || notifOld.communicationText == 'Add New Phone Number' || newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n counter = 1;\n }\n });\n if (counter == 0) {\n deleteFlag = true;\n type = notifOld.channel == 'TXT' ? 'text' : notifOld.channel == 'VOIC' ? 'call' : 'email';\n pushDL('preferences-notifications_communications-methods', 'delete', type + '-|-' + cardName);\n }\n counter = 0;\n });\n if (deleteFlag && vm.errorDelete) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/additional-options/delete-success');\n }\n }\n }\n function subheadline(notifId) {\n if (notifId == 'ENRL_PRCHS') {\n return 'enrollments-and-purchases';\n }\n }\n function errorModalVPV(type, req, duplicate, pattern, phoneType, phoneInvalid) {\n var notifId = vm.currentNotifModal.notifIdModal;\n var cardName = subheadline(notifId);\n if (req) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-an-email', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-phone-number', cardName);\n }\n }\n if (duplicate) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-email-address-already-exists', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-phone-number-address-already-exists', cardName);\n }\n }\n if (pattern && type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-a-valid-email', cardName);\n }\n if (phoneType && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-type-|-please-select-a-phone-type', cardName);\n }\n if (phoneInvalid && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-valid-phone-number', cardName);\n }\n }\n function inlineVPV(notifId, channel) {\n var cardName = subheadline(notifId);\n pushDL('preferences-notifications_field-validation-error', channel.toLowerCase() + '-|-please-select-a-communication', cardName);\n }\n function addCommVPV(notifId) {\n var tempData = sessionStorageService.get(assetService.notifPref.sessionStorage.addOpt);\n var index = tempData.findIndex(function (x) {\n return x.id == notifId;\n });\n var len = Object.keys(tempData[index].notifications).length;\n var cardName = subheadline(notifId);\n if (len > 0 && len < 10) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/additional-options/add-communication');\n }\n }\n function updateConsent(data) {\n return updateConsentService.sitecore.updateConsent(data).then(function (result) {\n editConsentStatus(data);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function editConsentStatus(data) {\n var umcVersion = sessionStorageService.get(assetService.notifPref.sessionStorage.umcCard);\n var newConsentStatus = {\n consentStatus: data.action,\n version: data.version,\n consentDate: data.consentDate,\n type: assetService.notifPref.UMCActions[data.action]\n };\n umcVersion.lastEvent[0] = genericHelperService.notReferenceObjects(newConsentStatus);\n umcVersion[data.action][0] = genericHelperService.notReferenceObjects(newConsentStatus);\n sessionStorageService.set(assetService.notifPref.sessionStorage.umcCard, umcVersion);\n UMCReadConsent(umcVersion);\n }\n function dropChannel(model, extra) {\n var data = vm.notificationPreferences;\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n function dropCommunication(model, extra) {\n var data = vm.notificationPreferences;\n var addNew = notificationHelper.communicationChange(model, extra, vm.currentNotifModal, data);\n var notifId = extra.split('/')[0];\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.id === notifId) {\n cards.notifications[vm.indexNumb].communicationText = model.text;\n }\n });\n if (model.text !== '') {\n vm.disableSave = vm.isIdentical(extra.split('/')[0]);\n } else vm.disableSave = true;\n if (addNew) {\n if (extra.split('/')[0] === 'ENRL_PRCHS' || vm.modelSelected === 'TXT') {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypesMobile, null, null);\n } else {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n }\n vm.modalForm.$setUntouched();\n vm.currentNotifModal.communicationModel = '';\n vm.showModalLoader = false;\n vm.isDuplicate = false;\n vm.typeError = false;\n angular.element('#BillingAddNewCommunicationModal').modal('show');\n $('#AddCommunication').val('');\n vm.gatActiveCard = vm.indexToCardTitle(vm.currentNotifModal.notifIdModal);\n var _cardName = subheadline(notifId);\n if (model.text != 'Add New Phone Number') {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/additional-options/add-communication/add-new-email');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/additional-options/add-communication/add-new-phone-number');\n }\n }\n }\n\n // function resetAddCommunicationModalForm(modalForm){\n // modalForm.$setUntouched();\n // }\n\n function saveNewCommunication(saveChanges, button) {\n vm.typeError = false;\n if (button === 'Cancel') {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n var data = vm.notificationPreferences;\n var notifId = vm.currentNotifModal.notifIdModal;\n notificationHelper.resetChanges(notifId, data, vm.currentNotifModal).then(function () {\n return;\n });\n } else {\n saveChanges = vm.isvalidSubmit;\n saveChanges == true ? vm.showModalLoader = true : vm.showModalLoader = false;\n vm.modalForm.AddCommunication.$touched = true;\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var _data = vm.notificationPreferences;\n var _notifId = vm.currentNotifModal.notifIdModal;\n vm.modalValue = vm.currentNotifModal.communicationModel ? vm.currentNotifModal.communicationModel : '';\n if (vm.modalForm.AddCommunication.$error.email && vm.currentNotifModal.communicationModel == undefined) {\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n if (vm.currentNotifModal.communicationModel != '' && vm.currentNotifModal.phoneType == undefined) {\n vm.typeError = true;\n }\n if (saveChanges) {\n notificationHelper.createNewCommunication(saveChanges, _notifId, _data, vm.currentNotifModal, vm.communicationOptions).then(function (result) {\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\n if ($rootScope.emailErrorModal !== true && $rootScope.phoneErrorModal !== true && saveChanges !== false) {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n } else {\n if (result === undefined) {\n saveNewCommunication(false, 'Cancel');\n }\n vm.showModalLoader = false;\n $('#AddCommunication').val(vm.modalInputValue);\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n });\n }\n if (saveChanges === true) {\n vm.disableSave = false;\n } else {\n vm.disableSave = vm.isIdentical(_notifId);\n }\n if (saveChanges === true) {\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n vm.notificationPreferences,\r\n );*/\n }\n }\n }\n function changeFormatDetailed(active, notifId) {\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n currentNotif.format_condensed = !currentNotif.format_detailed;\n }\n function enrolledNotif(notifId, enrolledStatus, title) {\n vm.clickedSave[notifId] = false;\n vm.currentNotifModal.notifIdModal = notifId;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.currentNotifModal.title = title;\n vm.handleEnrollment(vm.currentNotifModal.enrolledStatus, vm.currentNotifModal.notifIdModal);\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function cancelModal() {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function toastNotificationGat(errorType, messageText) {\n /*attributePush(\r\n 'workFlow:toast notification',\r\n `headline:${errorType}`,\r\n `subheadline:${messageText}`,\r\n 'buttonText: impression',\r\n `addedSpec:${vm.gatConstants.businessFunction}`,\r\n );\r\n virtualPagePush(\r\n 'toast notification',\r\n vm.gatConstants.businessFunction,\r\n messageText,\r\n 'impression',\r\n errorType,\r\n );*/\n }\n $scope.$on(assetService.events.reloadAdditionalOptions, function (index, toastMessage) {\n $rootScope.umcBanner = {\n type: '',\n message: ''\n };\n if ($rootScope.showToast === 'success') {\n vm.loadingSpinner = true;\n $rootScope.umcBanner = {\n type: 'S',\n message: toastMessage.messageOption ? toastMessage.messageOption : 'Accepted Successfully!!'\n };\n // vm.toastData.option = toastMessage.option\n // ? toastMessage.option\n // : 'success';\n // vm.toastData.messageOption = toastMessage.messageOption\n // ? toastMessage.messageOption\n // : 'Accepted Successfully!!';\n // vm.toastData.show = true;\n // $timeout(() => {\n // vm.toastData.show = false;\n // }, 6000);\n $rootScope.showToast = '';\n pushVPV('/vpv/de/card/preferences-notifications/toggle/unlock-additional-options/additional-options/toggle/on');\n pushVPV('/vpv/de/card/preferences-notifications/success/unlock-additional-options/additional-options/add-communication/preference-successfully-saved');\n } else if ($rootScope.showToast === 'error') {\n // vm.toastData.option = toastMessage.option ? toastMessage.option : 'error';\n // vm.toastData.messageOption = toastMessage.messageOption\n // ? toastMessage.messageOption\n // : 'Unexpected error';\n // vm.toastData.show = true;\n $rootScope.umcBanner = {\n type: 'E',\n message: toastMessage.messageOption ? toastMessage.messageOption : 'Unexpected error'\n };\n $rootScope.showToast = '';\n $rootScope.umcError = false;\n //toastNotificationGat('error', vm.toastData.messageOption);\n\n var updateConsentUMC = sessionStorageService.get('updateConsentUMC');\n var readConsentUMC = sessionStorageService.get('readConsent');\n if (updateConsentUMC != undefined) {\n var umcReturnCode = updateConsentUMC.d.MessageNum ? updateConsentUMC.d.MessageNum : '';\n var umcMessage = updateConsentUMC.d.Message ? updateConsentUMC.d.Message : '';\n var umcType = updateConsentUMC.d.Type ? updateConsentUMC.d.Type : '';\n vm.updateConsentType = umcType;\n if (umcType == 'E') {\n vm.returnCodeUMC = umcReturnCode;\n vm.messageUMC = umcMessage;\n vm.endpointUMC = \"\".concat(assetService.sitecoreEndpoints.UpdateConsent);\n }\n }\n if (readConsentUMC != undefined && vm.updateConsentType != 'E') {\n var umcReturnCodeRead = updateConsentUMC.d.MessageNum ? updateConsentUMC.d.MessageNum : '';\n var umcMessageRead = updateConsentUMC.d.Message ? updateConsentUMC.d.Message : '';\n var umcTypeRead = updateConsentUMC.d.Type ? updateConsentUMC.d.Type : '';\n if (umcTypeRead == 'E') {\n vm.returnCodeUMC = umcReturnCodeRead;\n vm.messageUMC = umcMessageRead;\n vm.endpointUMC = \"\".concat(assetService.sitecoreEndpoints.ReadConsent);\n }\n }\n pushDL('preferences-notifications_error', vm.returnCodeUMC + '-|-' + $rootScope.dataLayerFormat(vm.messageUMC) + '|-' + vm.endpointUMC, 'unlock-additional-options');\n pushVPV('/vpv/de/card/preferences-notifications/error/unlock-additional-options/additional-options/' + vm.returnCodeUMC + '/trouble-updating-your-changes');\n if ($rootScope.umcErrorOnToggle) {\n $rootScope.umcErrorOnToggle = '';\n vm.umcCard.status = !vm.umcCard.status;\n }\n }\n });\n function handleEnrollment(enrolledStatus, notifId) {\n if (enrolledStatus) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n vm.notificationDropdowns[notifId].channel = [];\n vm.notificationDropdowns[notifId].communication = [];\n notificationHelper.enrolledNotif(vm.currentNotifModal.notifIdModal, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n if (vm.currentNotifModal.notifIdModal == 'ENRL_PRCHS') {\n var _cardName2 = subheadline(vm.currentNotifModal.notifIdModal);\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/additional-options/add-communication');\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/additional-options/save');\n }\n } else if (!enrolledStatus) {\n var tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences));\n var newData = _.find(tempNotificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.enrolled = false;\n newData.notifications = [];\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, tempNotificationPreferences, currentData, currentCommunication).then(function (result) {\n var _result$, _result$2;\n if ((_result$ = result[0]) !== null && _result$ !== void 0 && _result$.ReturnCodes && ((_result$2 = result[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCodes[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCode1) === null || _result$2 === void 0 ? void 0 : _result$2.Type) === 'E') {\n var _result$0$ReturnCodes, _result$0$ReturnCodes2, _result$0$ReturnCodes3;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\n var showType = (_result$0$ReturnCodes = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes === void 0 ? void 0 : _result$0$ReturnCodes.Type;\n var returnCode = (_result$0$ReturnCodes2 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes2 === void 0 ? void 0 : _result$0$ReturnCodes2.MessageNum;\n var prefError = (_result$0$ReturnCodes3 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes3 === void 0 ? void 0 : _result$0$ReturnCodes3.Message;\n $rootScope.optionsBanner[vm.currentNotifModal.notifIdModal] = {\n type: 'E',\n message: ''\n };\n $rootScope.optionsError = true;\n generateGATEvents(vm.currentNotifModal.notifIdModal, showType, returnCode, prefError);\n broadcastService.refreshPreferences();\n } else {\n var _cardName3 = subheadline(vm.currentNotifModal.notifIdModal);\n if (result[0] != undefined) {\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName3 + '/additional-options/off');\n }\n vm.notificationPreferences = tempNotificationPreferences;\n newData.enrolled = false;\n sessionStorageService.set(assetService.notifPref.sessionStorage.addOpt, vm.notificationPreferences);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n broadcastService.refreshPreferences();\n }\n });\n }\n }\n function setModels() {\n var data = vm.notificationPreferences;\n vm.preferencesReady = true;\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.notifications) {\n notificationHelper.setNotifications(cards.id, vm.communicationOptions, vm.notificationDropdowns, data);\n } else {\n cards.deleted = 10;\n cards.notifications = [];\n }\n vm.clickedSave[cards.id] = false;\n vm.showError[cards.id] = [];\n vm.showLoader[cards.id] = false;\n });\n notificationHelper.setCommunicationValue(vm.cardsModel, vm.notificationPreferences, vm.communicationOptions);\n }\n function generateGATEvents(notifId, showError, getCode, getMsg) {\n if (notifId == 'ENRL_PRCHS') {\n cardName = 'enrollments-and-purchases';\n }\n if (showError == 'S') {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/additional-options/add-communication/preference-successfully-saved');\n } else if (showError == 'E') {\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\n if (vm.preferenceAction === 'UPDATE') {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl), cardName);\n } else {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.CreatePreferences), cardName);\n }\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/additional-options/' + getCode + '/trouble-saving-your-changes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/additional-options/' + getCode + '/trouble-updating-your-changes');\n }\n }\n }\n function addNotification(notifId) {\n var data = vm.notificationPreferences;\n var phones = vm.communicationOptions.phones;\n notificationHelper.addNotification(notifId, phones, vm.notificationDropdowns, data);\n }\n function cancelChanges(notifId) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n vm.showError[notifId] = [];\n vm.clickedSave[notifId] = false;\n notificationHelper.cancelChanges(notifId, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n var cardName = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/clickthrough/' + cardName + '/additional-options/cancel');\n }\n document.addEventListener('click', function () {\n if (!vm.noChanges) {\n $rootScope.optionsBanner = {};\n }\n $rootScope.umcBanner = {};\n $rootScope.ohioBanner = {};\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n vm.noChanges = false;\n });\n function saveChanges(notifId, cardIndex, madeChanges) {\n $rootScope.optionsBanner[notifId] = {\n type: '',\n message: ''\n };\n if (madeChanges) {\n vm.showLoader[notifId] = true;\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n //vm.notificationPreferences[cardIndex].loadingChanges = true;\n notificationHelper.saveChanges(notifId, newData, currentData, currentCommunication).then(function (result) {\n var _result$0$ReturnCodes4, _result$0$ReturnCodes5, _result$0$ReturnCodes6, _result$0$ReturnCodes7;\n vm.showLoader[notifId] = false;\n vm.showType = (_result$0$ReturnCodes4 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes4 !== void 0 && _result$0$ReturnCodes4.Type ? result[0].ReturnCodes[0].ReturnCode1.Type : '';\n vm.returnCode = (_result$0$ReturnCodes5 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes5 !== void 0 && _result$0$ReturnCodes5.MessageNum ? result[0].ReturnCodes[0].ReturnCode1.MessageNum : '';\n vm.prefError = (_result$0$ReturnCodes6 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes6 !== void 0 && _result$0$ReturnCodes6.Message ? result[0].ReturnCodes[0].ReturnCode1.Message : '';\n if (result[0].ReturnCodes && ((_result$0$ReturnCodes7 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes7 === void 0 ? void 0 : _result$0$ReturnCodes7.Type) === 'E') {\n $rootScope.optionsBanner[notifId] = {\n type: 'E',\n message: ''\n };\n } else {\n $rootScope.optionsBanner[notifId] = {\n type: 'S',\n message: ''\n };\n var oldData = sessionStorageService.get(assetService.notifPref.sessionStorage.addOpt);\n gatAddDeleteEvent(notifId, newData, oldData);\n if (vm.notificationPreferences[cardIndex].confirmButton != 'Update') {\n var _cardName4 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName4 + '/additional-options/toggle/on');\n }\n }\n vm.notificationPreferences[cardIndex].loadingChanges = false;\n // vm.toastData.option = 'success';\n // vm.toastData.messageOption = vm.getSuccessMessage(cardIndex);\n // vm.toastData.show = true;\n // $timeout(() => {\n // vm.toastData.show = false;\n // }, 6000);\n broadcastService.refreshPreferences();\n $window.scrollTo(0, 0);\n }).catch(function () {\n vm.showLoader[notifId] = false;\n $rootScope.optionsBanner[notifId] = {\n type: 'E',\n message: ''\n };\n vm.notificationPreferences[cardIndex].loadingChanges = false;\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n }).then(function () {\n generateGATEvents(notifId, vm.showType, vm.returnCode, vm.prefError);\n });\n } else {\n var _newData = vm.notificationPreferences;\n var _currentData = vm.cardsModel;\n var result = notificationHelper.compareChanges(notifId, _newData, _currentData);\n if (result) {\n vm.showLoader[notifId] = false;\n vm.noChanges = true;\n $rootScope.optionsBanner[notifId] = {\n type: 'N',\n message: ''\n };\n var _cardName5 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + _cardName5 + '/additional-options/na/make-change-to-update-your-preference');\n pushDL('preferences-notifications_error', 'na-|-make-change-to-update-your-preference-|-na', _cardName5);\n }\n }\n }\n function deleteNotification(notifId, dropDownIndex) {\n var data = vm.notificationPreferences;\n var cardName = subheadline(notifId);\n var globaldata = sessionStorageService.get(assetService.notifPref.sessionStorage.addOpt);\n var index = globaldata.findIndex(function (x) {\n return x.id == notifId;\n });\n globaldata = globaldata[index].notifications;\n var deleteValue = data[index].notifications[dropDownIndex].communicationText;\n var channelType = data[index].notifications[dropDownIndex].channel;\n deleteValue = deleteValue.toLowerCase();\n if (channelType != 'MAIL' && deleteValue != 'send my communication to') {\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\n }\n if (deleteValue != 'send my communication to' && globaldata != undefined) {\n var commText = '';\n globaldata.forEach(function (notif) {\n if (notif.communicationText != undefined) {\n commText = notif.communicationText.toLowerCase();\n } else {\n commText = notif.communication.toLowerCase();\n }\n if (commText === deleteValue && notif.channel == channelType) {\n vm.errorDelete = true;\n var type = notif.channel == 'TXT' ? 'text' : notif.channel == 'VOIC' ? 'call' : 'email';\n pushVPV('/vpv/de/card/preferences-notifications/intent/' + cardName + '/additional-options/delete-intent');\n pushDL('preferences-notifications_communications-methods', 'delete-|-intent', type + '-|-' + cardName);\n }\n });\n }\n vm.showError[notifId].splice(dropDownIndex, 1);\n notificationHelper.deleteNotification(notifId, dropDownIndex, data, vm.notificationDropdowns);\n if (vm.notificationPreferences.filter(function (element) {\n return element.notifications;\n }) === '') {\n vm.disableSave = true;\n } else vm.disableSave = vm.isIdentical(notifId);\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function cancelChange(notification) {\n notification.value = !notification.value;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function communicationVal(model, extra) {\n if (model === 'Text') {\n model = 'TXT';\n } else if (model === 'Call') {\n model = 'VOIC';\n } else if (model === 'Email') {\n model = 'MAIL';\n }\n var data = vm.notificationPreferences;\n vm.modelSelected = model;\n var cardId = extra.split('/')[0];\n notificationHelper.dropdownFilter(cardId, vm.communicationOptions, vm.enrolledPref, model);\n vm.displayOptions = sessionStorageService.get('displayOptions');\n notificationHelper.commChange(model, extra, vm.displayOptions, vm.notificationDropdowns, data);\n }\n function getPreferences(preferences, comm_opt) {\n vm.notificationPreferences = preferences;\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\n vm.cardsModel = vm.cardsModel.map(function (item) {\n if (item.notifications) {\n item.notifications = genericHelperService.notReferencesArrayObjects(item.notifications);\n } else {\n item.notifications = [];\n }\n return item;\n });\n vm.communicationOptions = comm_opt;\n }\n function UMCReadConsent(umcVersions) {\n vm.umcCard.status = false;\n vm.upgradeConsent = false;\n $rootScope.currentVersion = umcVersions.ACC.length > 0 ? umcVersions.ACC[umcVersions.ACC.length - 1].version.trim() : umcVersions.lastEvent.length > 0 ? umcVersions.lastEvent[0].version.trim() : '';\n if (umcVersions.lastEvent.length > 0 && umcVersions.lastEvent[0].consentStatus !== undefined && umcVersions.lastEvent[0].consentStatus === 'ACC') {\n vm.umcCard.status = true;\n vm.upgradeConsent = !!(umcVersions.ACC[umcVersions.ACC.length - 1].version.trim() < $rootScope.UniLatestVersion && vm.umcCard.status);\n } else if (umcVersions.lastEvent.length > 0 && umcVersions.lastEvent[0].consentStatus !== undefined && umcVersions.lastEvent[0].consentStatus === 'DEC') {\n vm.umcCard.status = false;\n } else if (umcVersions.lastEvent.length > 0 && umcVersions.lastEvent[0].consentStatus !== undefined && umcVersions.lastEvent[0].consentStatus === 'IGN') {\n vm.umcCard.status = false;\n }\n }\n function openUMC(option) {\n if (option === true) {\n if ($rootScope.newMajorVersion) {\n virtualPagePush($('#hdn-UMC').attr('businessFunction'), $('#hdn-UMC').attr('headLine'), $('#hdn-UMC').attr('consentUpgradeText') + parseInt($rootScope.currentVersion), vm.on, $('#hdn-UMC').attr('consentStatusimpression'));\n } else {\n virtualPagePush($('#hdn-UMC').attr('businessFunction'), $('#hdn-UMC').attr('headLine'), vm.on, $('#hdn-UMC').attr('consentStatusimpression'));\n }\n }\n if (option === false) {\n $rootScope.closeBtn = true;\n virtualPagePush($('#hdn-UMC').attr('businessFunction'), $('#hdn-UMC').attr('headLine'), vm.off, $('#hdn-UMC').attr('consentStatusimpression'));\n } else $rootScope.closeBtn = false;\n // sessionStorageService.set(assetService.storageKeys.upgradeOption, option);\n // modalService.umcModal();\n\n umcModalService.getUMCLatestConsent().then(function (result) {\n vm.umcModalInstance = modalService.umcModal();\n vm.umcModalInstance.result.then(function (response) {}, function () {\n if (!$rootScope.closeBtn) {\n umcModalService.UMCUpdateConsent('IGN').then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function load() {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.addOpt);\n vm.enrolledPref = currPref;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n currentCommunication = $scope.$parent.currComm;\n var umcVersions = sessionStorageService.get(assetService.notifPref.sessionStorage.umcCard);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n var jurisdiction = globalAccountInfo.accountSelected.jurisdiction;\n vm.jurisdiction = assetService.jurisdictions.abbreviation[jurisdiction];\n vm.jurisdiction = vm.jurisdiction === 'DEO' || vm.jurisdiction === 'DEK' ? false : vm.jurisdiction;\n getAccountList(globalSelectedAccount);\n UMCReadConsent(umcVersions);\n getPreferences(currPref, currentCommunication);\n setModels();\n var toastMessage = sessionStorageService.get(assetService.notifPref.sessionStorage.ohioToast);\n var fromOhioChoice = sessionStorageService.get(assetService.notifPref.sessionStorage.fromOhioChoice);\n var PageTitle = sessionStorageService.get(assetService.notifPref.sessionStorage.businessFunction);\n vm.toastData = {};\n if (fromOhioChoice === 'true') {\n $rootScope.ohioBanner = {\n type: '',\n message: ''\n };\n if (toastMessage.showToast === 'success') {\n vm.loadingSpinner = true;\n // vm.toastData.option = toastMessage.option\n // ? toastMessage.option\n // : 'success';\n // vm.toastData.messageOption = toastMessage.messageOption\n // ? toastMessage.messageOption\n // : 'Accepted Successfully!!';\n // vm.toastData.show = true;\n $rootScope.ohioBanner = {\n type: 'S',\n message: toastMessage.messageOption ? toastMessage.messageOption : 'Accepted Successfully!!'\n };\n pushVPV('/vpv/de/card/preferences-notifications/success/ohio-choice-settings/additional-options/add-communication/preference-successfully-saved');\n $timeout(function () {\n vm.toastData.show = false;\n sessionStorageService.delete(assetService.notifPref.sessionStorage.fromOhioChoice);\n sessionStorageService.delete(assetService.notifPref.sessionStorage.ohioToast);\n }, vm.toastTimeout);\n } else if (toastMessage.showToast === 'error') {\n // vm.toastData.option = toastMessage.option\n // ? toastMessage.option\n // : 'error';\n // vm.toastData.messageOption = toastMessage.messageOption\n // ? toastMessage.messageOption\n // : 'Unexpected error';\n // vm.toastData.show = true;\n $rootScope.ohioBanner = {\n type: 'E',\n message: toastMessage.messageOption ? toastMessage.messageOption : 'Unexpected error'\n };\n vm.returnCodeOH = sessionStorageService.get('readConsentCode');\n vm.errorMessageOH = sessionStorageService.get('readConsentMessage');\n pushDL('preferences-notifications_error', vm.returnCodeOH + '-|-' + $rootScope.dataLayerFormat(vm.errorMessageOH) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateSupplierDetailsService), 'ohio-choice-settings');\n pushVPV('/vpv/de/card/preferences-notifications/error/ohio-choice-settings/additional-options/' + vm.returnCodeOH + '/trouble-updating-your-changes');\n sessionStorageService.delete(assetService.notifPref.sessionStorage.fromOhioChoice);\n sessionStorageService.delete(assetService.notifPref.sessionStorage.ohioToast);\n }\n }\n }\n function getAccountList(selectedAccount) {\n var params = {\n contractAccountId: selectedAccount.accountNum\n };\n return accountSearchService.sitecore.cacheAccountSearch(params).then(function (result) {\n if (result) {\n vm.ohioCardEligible = false;\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(function (items) {\n items.PropToInst.results.forEach(function (outData) {\n if (outData.Division === '01') {\n vm.ohioCardEligible = true;\n vm.ohioUser = selectedAccount.jurisdiction === 'OH01' && vm.ohioCardEligible;\n }\n sessionStorageService.set(assetService.storageKeys.isOhio, vm.ohioUser);\n });\n });\n }\n });\n }\n /* Initialization */\n function init() {\n load();\n }\n init();\n function initGatConstants(businessFunction, addedSpec, enrlPrchs) {\n vm.gatConstants.businessFunction = businessFunction;\n vm.gatConstants.addedSpec = addedSpec;\n vm.gatConstants.enrlPrchs = enrlPrchs;\n }\n function sendEditAdditionalOptions(notifId, concatEdit, madeChanges) {\n $rootScope.optionsBanner = {};\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\n var param = {\n workFlow: vm.gatConstants.businessFunction,\n buttonText: concatEdit,\n headline: vm.gatConstants.addedSpec,\n subheadline: vm.indexToCardTitle(notifId)\n };\n vm.buttonClicked = concatEdit;\n if (concatEdit === 'Update') {\n param.buttonText = 'edit';\n param.addedSpec = concatEdit;\n $rootScope.optionsError = true;\n }\n if (concatEdit === 'Save') {\n $rootScope.updateError = false;\n }\n //notificationHelper.sendEventAttribute(param);\n } else {\n var i = 0;\n vm.showError[notifId] = [];\n var newData = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n newData.notifications.forEach(function (x) {\n if ((x.communicationText == 'Send My Communication To' || x.communicationText == 'Add New Email') && x.communication == 'Send My Communication To' && x.channelText != 'Method') {\n inlineVPV(notifId, x.channelText);\n }\n });\n newData.notifications.forEach(function (x) {\n vm.showError[notifId].push(x.classError);\n i += 1;\n });\n vm.clickedSave[notifId] = true;\n }\n }\n function sendAddNotification(notifId, action) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n function sendDelete(notifId, channelTxt, label) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n function indexToCardTitle(notifId) {\n var titleTxt = '';\n switch (notifId) {\n case 'ENRL_PRCHS':\n return vm.gatConstants.enrlPrchs;\n default:\n titleTxt = 'Item';\n }\n }\n function sendAdditionalOptions(notifId, flagToggle) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n function sendNotification(stringToConcat) {\n var vpvName = '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\n $rootScope.virtualPagePush('fire-vpv', vpvName);\n }\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\n return stringBase.concat(stringToConcat);\n }\n function sendEditPayments(index, concatEdit) {\n var outage = {\n 'event-category': 'notification_preferences',\n 'event-action': 'edit',\n 'event-label': 'additional-options-|-',\n event: 'fire-event'\n };\n outage['event-action'] = outage['event-action'].concat(concatEdit);\n outage['event-label'] = index === 1 ? outage['event-label'].concat('unlock-additional-options') : outage['event-label'].concat('ohio-customer-choice');\n //dataLayer.push(outage);\n }\n function closeToast() {\n vm.toastData.show = '';\n }\n function getSuccessMessage(index) {\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n var titleTxt = '';\r\n switch(index){\r\n case 0:\r\n titleTxt = 'Enrollments and Purchases';\r\n break;\r\n default: titleTxt = 'Item';\r\n }\r\n return \"Success! \" + titleTxt + \" saved successfully!\"; */\n return 'Success! Changes saved.';\n }\n function isIdentical(notifId) {\n var enteredPairs = getPairs(vm.notificationPreferences, notifId);\n var currentPairs = getPairs(vm.cardsModel, notifId);\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\n }\n function getPairs(comms, notifId) {\n var copy = genericHelperService.notReferencesArrayObjects(comms.filter(function (x) {\n return x.id === notifId;\n })[0].notifications);\n return copy.sort(function (a, b) {\n if (a.channel !== b.channel) {\n // order by channel, then by communication\n return a.channel.localeCompare(b.channel);\n }\n return a.communication.localeCompare(b.communication);\n }).map(function (x) {\n return {\n channel: x.channel,\n communication: x.communication\n };\n });\n }\n function isUnique() {\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(vm.currentNotifModal, vm.communicationOptions);\n vm.isDuplicate = vm.currentNotifModal.disableSave;\n\n //To check for duplicate emails, length > 64\n if (vm.currentNotifModal.type == 'emails') {\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var defaultItem = vm.communicationOptions.emails.filter(function (itm) {\n return itm.text === vm.modalInputValue;\n });\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\n }\n }\n function gatNewComm(action, label, verify) {\n if (verify) {\n vm.isvalidSubmit = false;\n } else {\n vm.isvalidSubmit = true;\n notificationHelper.sendEventAttribute({\n workFlow: vm.gatConstants.businessFunction,\n buttonText: action,\n headline: vm.gatActiveCard,\n subheadline: label\n });\n }\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n}\napp.controller('BillingPreferencesController', BillingPreferencesController);\nBillingPreferencesController.$inject = ['$log', 'genericHelperService', 'NotificationPreferencesHelperService', 'assetService', 'sessionStorageService', 'ebillEnrollKubraService', 'deEnrollFromProgramService', 'commonService', 'apiApigeeConfigService', '$scope', '$rootScope', 'createPreferencesService', 'notificationPreferencesAssetsService', '$timeout', '$window', 'modalService', 'readAndDerivePreferencesService', 'getProductRecommendationsCAREService', 'careFeedbackService', 'commongaTaggingService', 'broadcastService', '$document'];\nfunction BillingPreferencesController($log, genericHelperService, notificationHelper, assetService, sessionStorageService, ebillEnrollKubraService, deEnrollFromProgramService, commonService, apiApigeeConfigService, $scope, $rootScope, createPreferencesService, notificationPreferencesAssetsService, $timeout, $window, modalService, readAndDerivePreferencesService, getProductRecommendationsCAREService, careFeedbackService, commongaTaggingService, broadcastService, $document) {\n /* Global Vars */\n\n var vm = this;\n var _strings = notificationPreferencesAssetsService.strings;\n var _active = _strings.active;\n var _serviceName = _strings.programs.ELBILL;\n var _success = assetService.strings.SUCCESS;\n var paramData = {};\n var currentCommunication = {};\n var paperlessInfo = {};\n var model;\n var extra;\n var _paramDataToEnrollPB;\n var cardName = '';\n\n /* Scope Vars */\n vm.jurisdiction = '';\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n vm.cardsModel = [];\n vm.chan_opt = [];\n vm.comm_opt = [];\n vm.channelItemsDDList = null;\n vm.preferencesReady = false;\n vm.notificationPreferences = null;\n vm.emailToDelete = null;\n vm.phoneToDelete = null;\n vm.showToast = false;\n vm.notificationToConfirm = null;\n vm.showLoader = {};\n vm.showModalLoader = false;\n vm.notificationDropdowns = {\n BILL_DEL: {\n channel: [],\n communication: []\n },\n BILL_NOTIF: {\n channel: [],\n communication: []\n },\n PMT_RMDR: {\n channel: [],\n communication: []\n },\n APP_SCHED: {\n channel: [],\n communication: []\n },\n APP_UPDT: {\n channel: [],\n communication: []\n },\n PMT_UPDT: {\n channel: [],\n communication: []\n },\n RATE_REVW: {\n channel: [],\n communication: []\n },\n BILLPRINT: {\n channel: [],\n communication: []\n },\n PREPAY: {\n channel: [],\n communication: []\n },\n PPY_AUTO: {\n channel: [],\n communication: []\n },\n PAY_CONFRM: {\n channel: [],\n communication: []\n }\n };\n vm.lowBalanceDays = new Array(10);\n vm.lowBalanceDaysBackup = new Array(10);\n vm.currentNotifModal = {\n title: '',\n type: '',\n notifIdModal: '',\n channelIdModal: null,\n enrolledStatus: false,\n disableSave: true\n };\n vm.paperlessBilling = {\n isEligible: false,\n realStatus: false\n };\n vm.isPaperlesBilling = '';\n vm.toastData = {\n option: '',\n show: false,\n messageOption: '',\n workFlow: 'toast notification'\n };\n vm.defaultEmail = '';\n vm.primaryEmail = '';\n vm.gatConstants = {};\n vm.gatActiveCard = '';\n vm.modalValue = '';\n vm.isvalidSubmit = false;\n vm.isDuplicate = false;\n vm.clickedSave = {};\n vm.showError = {};\n vm.disablePaperlessEnroll = false;\n vm.toggleClicked = false;\n vm.toggleClickedCopy = false;\n vm.errorDelete = false;\n vm.errorCode = '';\n vm.errorMessage = '';\n vm.flag = true;\n vm.paperlessCTA = '';\n vm.typeError = false;\n\n /* Function Declarations */\n vm.inlineVPV = inlineVPV;\n vm.addCommVPV = addCommVPV;\n vm.errorModalVPV = errorModalVPV;\n vm.getLowBalanceDaysText = getLowBalanceDaysText;\n vm.cancelChange = cancelChange;\n vm.checkPlaceholder = checkPlaceholder;\n vm.deleteNotification = deleteNotification;\n vm.addNotification = addNotification;\n vm.dropChannel = dropChannel;\n vm.dropCommunication = dropCommunication;\n vm.cancelChanges = cancelChanges;\n vm.saveChanges = saveChanges;\n vm.continueSaveChanges = continueSaveChanges;\n vm.changeFormatDetailed = changeFormatDetailed;\n vm.enrolledNotif = enrolledNotif;\n vm.pdfBill = pdfBill;\n //vm.handlePaperlessEnrollment = handlePaperlessEnrollment;\n vm.saveNewCommunication = saveNewCommunication;\n vm.handleEnrollment = handleEnrollment;\n vm.cancelModal = cancelModal;\n vm.cancelModalDelete = cancelModalDelete;\n vm.dayAlert = dayAlert;\n vm.sendNotification = sendNotification;\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\n vm.sendBilling = sendBilling;\n vm.sendEditBilling = sendEditBilling;\n vm.checkboxSave = checkboxSave;\n vm.phonesTypes = [];\n var _paramDataToEnroll = {};\n var _paramDataToUpdate = {};\n vm.checkedPDFOption = false;\n vm.closeToast = closeToast;\n vm.getSuccessMessage = getSuccessMessage;\n vm.disableSave = {};\n var labelflag = false;\n vm.checkedPDF = false;\n vm.enrollmodal = enrollmodal;\n vm.getData = {};\n vm.isIdentical = isIdentical;\n vm.isUnique = isUnique;\n vm.indexToCardTitle = indexToCardTitle;\n vm.initGatConstants = initGatConstants;\n vm.recordRadioGatAction = recordRadioGatAction;\n vm.gatNewComm = gatNewComm;\n vm.gatContinuePaperless = gatContinuePaperless;\n vm.sendAddNotification = sendAddNotification;\n vm.sendDelete = sendDelete;\n vm.sendToastEvents = sendToastEvents;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.gatRRLearnMore = gatRRLearnMore;\n vm.communicationVal = communicationVal;\n //vm.resetAddCommunicationModalForm = resetAddCommunicationModalForm;\n vm.callReadandDeriveService = callReadandDeriveService;\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n /**\r\n * Emit and Broadcast events\r\n */\n\n $scope.$on(assetService.events.addNewCommunication, function (event, data) {\n var newNotif = notificationHelper.getCurrentNotification(data, vm.notificationPreferences);\n newNotif.loadingChanges = false;\n notificationHelper.updateNotif(data, vm.communicationOptions, vm.notificationDropdowns, vm.notificationPreferences);\n $scope.$parent.currComm = vm.communicationOptions;\n prepaidChanels();\n });\n\n /* Function Definitions */\n function getLowBalanceDaysText() {\n var text = '';\n if (vm.lowBalanceDays) {\n text = vm.lowBalanceDays.map(function (e, i) {\n return e ? i + 1 : undefined;\n }).filter(function (e) {\n return e;\n }).join(', ').replace(/,(?!.*,)/gim, ' and');\n }\n if (text.length > 0) text = 'Additionally, you are receiving alerts for ' + text + ' days remaining.';\n return text;\n }\n\n //GAT for ADD/DELETE COMMUNICATION\n function gatAddDeleteEvent(notifId, newData, oldData) {\n var indexNew = newData.findIndex(function (x) {\n return x.id == notifId;\n });\n var lenOld = 0;\n var indexOld = '';\n if (oldData != undefined) {\n indexOld = oldData.findIndex(function (x) {\n return x.id == notifId;\n });\n }\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\n lenOld = Object.keys(oldData[indexOld].notifications).length;\n }\n var cardName = subheadline(notifId);\n var count = 0;\n var newValue = '';\n var type = '';\n if (lenOld == 0 && notifId != 'BILL_DEL') {\n newData[indexNew].notifications.forEach(function (notifNew) {\n type = notifNew.channel == 'TXT' ? 'text' : notifNew.channel == 'VOIC' ? 'call' : 'email';\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n });\n } else {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n type = 'email';\n newValue = notifNew.communicationText;\n }\n oldData[indexOld].notifications.forEach(function (notifOld) {\n if (notifOld.channel == notifNew.channel && (newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n count = 1;\n }\n });\n if (count == 0) {\n if (notifId == 'BILL_DEL') {\n pushDL('preferences-notifications_communications-methods', 'add', type);\n } else {\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n }\n }\n count = 0;\n });\n }\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\n var counter = 0,\n deleteFlag = false;\n oldData[indexOld].notifications.forEach(function (notifOld) {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n newValue = notifNew.communicationText;\n }\n if (notifOld.channel == notifNew.channel && (notifOld.communicationText != undefined && notifOld.communicationText == 'Add New Email' || newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n counter = 1;\n }\n });\n if (counter == 0) {\n deleteFlag = true;\n type = notifOld.channel == 'TXT' ? 'text' : notifOld.channel == 'VOIC' ? 'call' : 'email';\n if (notifId == 'BILL_DEL') {\n pushDL('preferences-notifications_communications-methods', 'delete', type);\n } else {\n pushDL('preferences-notifications_communications-methods', 'delete', type + '-|-' + cardName);\n }\n }\n counter = 0;\n });\n if (deleteFlag && vm.errorDelete) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/billing-payment/delete-success');\n }\n }\n if (notifId == 'BILL_DEL') {\n if (vm.notificationPreferences[0].checkedPDFOption === true) {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/billing-payment/add-communication/preference-successfully-saved/pdf-yes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/billing-payment/add-communication/preference-successfully-saved/pdf-no');\n }\n }\n }\n function subheadline(notifId) {\n if (notifId == 'BILL_DEL') {\n return 'paperless-billing';\n } else if (notifId == 'BILL_NOTIF') {\n return 'billing-notifications';\n } else if (notifId == 'PAY_CONFRM') {\n return 'payment-confirmation';\n } else if (notifId == 'PMT_UPDT') {\n return 'paperless-payment-updates';\n } else if (notifId == 'PREPAY') {\n return 'low-balance-alerts';\n } else if (notifId == 'PPY_AUTO') {\n return 'auto-reload';\n } else if (notifId == 'BILLPRINT') {\n return 'bill-format';\n }\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function prepaidChanels() {\n if ($scope.$parent.isPrepaid) {\n var keyList = Object.keys(vm.notificationDropdowns);\n keyList.forEach(function (notifsId) {\n for (var _index = 0; _index < vm.notificationDropdowns[notifsId].channel.length; _index++) {\n if (notifsId !== 'BILL_NOTIF') {\n vm.notificationDropdowns[notifsId].channel[_index] = assetService.notifPref.prepaidChanels;\n }\n }\n });\n }\n }\n function dropChannel(model, extra) {\n var data = vm.notificationPreferences;\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n function errorModalVPV(type, req, duplicate, pattern, phoneType, phoneInvalid) {\n var notifId = vm.currentNotifModal.notifIdModal;\n var cardName = subheadline(notifId);\n if (req) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-an-email', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-phone-number', cardName);\n }\n }\n if (duplicate) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-email-address-already-exists', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-phone-number-already-exists', cardName);\n }\n }\n if (pattern && type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-a-valid-email', cardName);\n }\n if (phoneType && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-type-|-please-select-a-phone-type', cardName);\n }\n if (phoneInvalid && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-valid-phone-number', cardName);\n }\n }\n function inlineVPV(notifId, channel) {\n var cardName = subheadline(notifId);\n pushDL('preferences-notifications_field-validation-error', channel.toLowerCase() + '-|-please-select-a-communication', cardName);\n }\n function addCommVPV(notifId) {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var prepaid = globalAccountInfo.accountSelected.prepaid;\n var tempData = '';\n if (prepaid === true) {\n tempData = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n } else {\n tempData = sessionStorageService.get(assetService.notifPref.sessionStorage.updatePreferencesave);\n }\n var index = tempData.findIndex(function (x) {\n return x.id == notifId;\n });\n var len = Object.keys(tempData[index].notifications).length;\n var cardName = subheadline(notifId);\n if (notifId == 'BILL_DEL' && len > 0 && len < 10 || notifId == 'BILLPRINT' && len > 3 || notifId != 'BILL_DEL' && notifId != 'BILLPRINT' && len < 10) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/billing-payment/add-communication');\n }\n }\n function dropCommunication(model, extra) {\n var data = vm.notificationPreferences;\n var divId = extra.search('/');\n var notifId = extra.substr(0, divId);\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\n var addNew = notificationHelper.communicationChange(model, extra, vm.currentNotifModal, data);\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.id === notifId) {\n cards.notifications[vm.indexNumb].communicationText = model.text;\n }\n });\n if (model.text !== '') {\n vm.disableSave[notifId] = vm.isIdentical(notifId);\n } else vm.disableSave[notifId] = true;\n if (notifId === _strings.preferences.PMT_RMDR) {\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n if (!vm.disableSave[notifId]) vm.disableSave[notifId] = !(newNotif.subThersholdvarModel || newNotif.subThersholdvar);else vm.disableSave[notifId] = newNotif.subThersholdvarModel === newNotif.subThersholdvar;\n newNotif.subThersholdvar = newNotif.subThersholdvarModel ? newNotif.subThersholdvarModel : newNotif.subThersholdvar;\n newNotif.subThersholdvarText = \"\".concat(newNotif.subThersholdvar, \" \").concat(_strings.Days);\n }\n if (addNew) {\n if (extra.split('/')[0] === 'BILL_NOTIF' || vm.modelSelected === 'TXT') {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypesMobile, null, null);\n } else {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n }\n var _newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n _newNotif.cardError = true;\n vm.modalForm.$setUntouched();\n vm.currentNotifModal.communicationModel = '';\n vm.showModalLoader = false;\n vm.isDuplicate = false;\n vm.typeError = false;\n angular.element('#BillingAddNewCommunicationModal').modal('show');\n $('#AddCommunication').val('');\n vm.gatActiveCard = vm.indexToCardTitle(notifId);\n var _cardName = subheadline(notifId);\n if (model.text != 'Add New Phone Number') {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/billing-payment/add-communication/add-new-email');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/billing-payment/add-communication/add-new-phone-number');\n }\n }\n }\n\n // function resetAddCommunicationModalForm(modalForm){\n // modalForm.$setUntouched();\n // }\n\n function saveNewCommunication(saveChanges, button) {\n vm.typeError = false;\n if (button === 'Cancel') {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n var data = vm.notificationPreferences;\n var notifId = vm.currentNotifModal.notifIdModal;\n notificationHelper.resetChanges(notifId, data, vm.currentNotifModal).then(function () {\n return;\n });\n } else {\n saveChanges = vm.isvalidSubmit;\n saveChanges == true ? vm.showModalLoader = true : vm.showModalLoader = false;\n vm.modalForm.AddCommunication.$touched = true;\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var _data = vm.notificationPreferences;\n var _notifId = vm.currentNotifModal.notifIdModal;\n vm.modalValue = vm.currentNotifModal.communicationModel ? vm.currentNotifModal.communicationModel : '';\n if (vm.modalForm.AddCommunication.$error.email && vm.currentNotifModal.communicationModel == undefined) {\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n if (vm.currentNotifModal.communicationModel != '' && vm.currentNotifModal.phoneType == undefined) {\n vm.typeError = true;\n }\n if (saveChanges) {\n notificationHelper.createNewCommunication(saveChanges, _notifId, _data, vm.currentNotifModal, vm.communicationOptions).then(function (result) {\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\n if ($rootScope.emailErrorModal !== true && $rootScope.phoneErrorModal !== true && saveChanges !== false) {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n } else {\n if (result === undefined) {\n saveNewCommunication(false, 'Cancel');\n }\n vm.showModalLoader = false;\n $('#AddCommunication').val(vm.modalInputValue);\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n });\n }\n if (saveChanges === true) {\n vm.disableSave[_notifId] = false;\n } else {\n vm.disableSave[_notifId] = vm.isIdentical(_notifId);\n }\n if (saveChanges === true) {\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );*/\n }\n }\n }\n function changeFormatDetailed(notifId, typeOption, gatAction, gatCard) {\n vm.recordRadioGatAction(gatAction, gatCard);\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.cardsModel);\n if (typeOption === _strings.rr) newNotif.optoutEdit = newNotif.rateReviewType !== currentNotif.rateReviewType;else newNotif.optoutEdit = newNotif.billFormatType !== currentNotif.billFormatType;\n if (notifId === _strings.preferences.BILLPRINT /*||\r\n notifId === _strings.preferences.RATE_REVW*/) vm.disableSave[notifId] = vm.isIdentical(notifId);\n }\n function checkboxSave() {\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n _paramDataToUpdate = {\n action: _strings.ENROLL,\n groupId: assetService.notifPref.SUBGROUPIDS.PAPERLESS,\n id: assetService.notifPref.SUBIDS.BILL_DEL,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n reqby: accountData.globalSelectedAccountEmail,\n contractAccountId: accountData.contractAccountId,\n created: [{\n channel: vm.checkedPDFOption ? assetService.notifPref.COMM_MEDIUMS.EBLP : assetService.notifPref.COMM_MEDIUMS.EBIL\n }]\n };\n var promiseE = [savePaperlessChanges()];\n commonService.executePromises(promiseE).then(function () {\n vm.paperlessBilling.status = vm.successEnrollRes;\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences, vm.paperlessBilling.status);\n });\n }\n function savePaperlessChanges() {\n return createPreferencesService.sitecore.createPreferences(_paramDataToUpdate).then(function (result) {\n //vm.paperlessBilling.status = true;\n //vm.successEnrollRes = true; // Setted true manually because for the moment, the response is not giving the value to validate.\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n });\n }\n function pdfBill(notifId, checkboxPDF) {\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.cardsModel);\n newNotif.optoutEdit = currentNotif.checkedPDFOption !== newNotif.checkedPDFOption;\n labelflag = checkboxPDF;\n vm.checkedPDFOption = checkboxPDF;\n if (vm.disableSave[notifId] === false) {\n vm.disableSave[notifId] = vm.isIdentical(notifId);\n } else if (currentNotif.checkedPDFOption === newNotif.checkedPDFOption) {\n vm.disableSave[notifId] = vm.isIdentical(notifId);\n } else {\n vm.disableSave[notifId] = false;\n }\n // if(vm.bannerData !== null){\n // vm.bannerData[notifId].checkbox = checkboxPDF;\n // sessionStorageService.set('Preferences_BannerData', vm.bannerData);\n // }\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function cancelModal() {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function cancelModalDelete() {\n angular.element('#ModalNotificationPreferenceDeleteChanel').modal('hide');\n }\n function ebillEnrollKubra(data, status) {\n // if(impDetails != null) {\n // showPaperlessUnauthorizedMessage();\n // return null;\n // }\n\n return ebillEnrollKubraService.sitecore.ebillEnrollment(data).then(function (result) {\n if (result.d.ContractAccounts.results[0].Messages.ReplyCode === _success) {\n if (!status) {\n vm.showLoader['BILL_DEL'] = false;\n $rootScope.billingBanner['BILL_DEL'] = {\n type: 'S',\n message: ''\n };\n // vm.toastData.option = 'success';\n // vm.toastData.messageOption = vm.getSuccessMessage(0);\n // vm.toastData.show = true;\n // $timeout(() => {\n // vm.toastData.show = false;\n // }, 6000);\n vm.paperlessBilling.realStatus = true;\n //sendToastEvents('BILL_DEL');\n } else {\n vm.paperlessBilling.realStatus = false;\n }\n vm.paperlessBilling.status = !status;\n } else if (result.d.ContractAccounts.results[0].Messages.ReplyCode !== _success) {\n vm.PaperlessEnrollmentFailed = true;\n vm.errorCode = result.d.ContractAccounts.results[0].Messages.MessageNum;\n vm.errorMessage = result.d.ContractAccounts.results[0].Messages.Message;\n vm.errorCode = vm.errorCode == '' || vm.errorCode == null ? 'NA' : vm.errorCode;\n vm.errorMessage = vm.errorMessage == '' || vm.errorMessage == null ? 'NA' : vm.errorMessage;\n var notifId = vm.currentNotifModal.notifIdModal;\n if (notifId === 'BILL_DEL') {\n if ($rootScope.paperlessSaveErrorCount < 2) {\n pushVPV('/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' + vm.errorCode + '/trouble-saving-your-changes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' + vm.errorCode + '/cannot-save-your-changes-right-now');\n }\n pushDL('preferences-notifications_error', vm.errorCode + '-|-' + vm.errorMessage + '-|-' + \"\".concat(assetService.sitecoreEndpoints.ebillEnrollmentUrl), 'paperless-billing');\n }\n }\n }, function (error) {\n if (error != undefined) {\n $.growl.error({\n message: error.message\n });\n }\n sessionStorageService.set(assetService.storageKeys.preferenceFlag, false);\n vm.PaperlessEnrollmentFailed = true;\n var notifId = vm.currentNotifModal.notifIdModal;\n if (notifId === 'BILL_DEL') {\n pushVPV('/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.ebillEnrollmentUrl), 'paperless-billing');\n }\n });\n }\n function handleEnrollment(enrolledStatus, notifId) {\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n var dtaUsers = sessionStorageService.get(assetService.storageKeys.accountSelector);\n var user = dtaUsers.accounts.find(function (data) {\n return data.value === accountData.contractAccountId;\n });\n //vm.notificationDropdowns[notifId].channel = [];\n vm.notificationDropdowns[notifId].communication = [];\n var status = sessionStorageService.get(assetService.storageKeys.preferenceFlag);\n vm.flag = status ? true : false;\n if (enrolledStatus) {\n if (vm.isPaperlesBilling) {\n vm.paperlessBilling.status = true;\n if (!vm.PaperlessEnrollmentFailed && vm.flag) {\n pushVPV('/vpv/de/card/preferences-notifications/load/paperless-billing/billing-payment/save');\n } else {\n sessionStorageService.set(assetService.storageKeys.preferenceFlag, true);\n vm.flag = true;\n }\n }\n if (vm.currentNotifModal.notifIdModal != 'BILL_DEL') {\n var _cardName2 = subheadline(vm.currentNotifModal.notifIdModal);\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/billing-payment/add-communication');\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/billing-payment/save');\n }\n var newNotif = notificationHelper.getCurrentNotification(vm.currentNotifModal.notifIdModal, vm.notificationPreferences);\n if (vm.currentNotifModal.notifIdModal === _strings.preferences.PMT_RMDR) {\n newNotif.subThersholdvarModel = '3';\n newNotif.subThersholdvar = newNotif.subThersholdvarModel ? newNotif.subThersholdvarModel : newNotif.subThersholdvar;\n newNotif.subThersholdvarText = \"\".concat(newNotif.subThersholdvar, \" \").concat(_strings.Days);\n }\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.enrolledNotif(vm.currentNotifModal.notifIdModal, data, dataModel, vm.notificationDropdowns, vm.communicationOptions, vm.floridaUser);\n if (vm.notificationDropdowns[vm.currentNotifModal.notifIdModal].channel[0].length === 1) {\n model = {\n value: vm.notificationDropdowns[vm.currentNotifModal.notifIdModal].channel[0][0].value\n };\n extra = \"\".concat(vm.currentNotifModal.notifIdModal, \"/\", 0);\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, vm.notificationPreferences);\n }\n if (/*vm.currentNotifModal.notifIdModal === _strings.preferences.RATE_REVW ||*/\n vm.currentNotifModal.notifIdModal === _strings.preferences.BILLPRINT) {\n var currentNotifModalIndex = vm.notificationPreferences.findIndex(function (x) {\n return x.id === vm.currentNotifModal.notifIdModal;\n });\n saveChanges(vm.currentNotifModal.notifIdModal, currentNotifModalIndex);\n }\n } else if (!enrolledStatus) {\n if (vm.isPaperlesBilling) {\n _paramDataToEnrollPB = {\n action: assetService.strings.UNENROLL,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n emailId: vm.emailAccount.EmailAddress,\n contractAccount: accountData.contractAccountId\n };\n vm.paperlessStatus = true;\n ebillEnrollKubra(_paramDataToEnrollPB, vm.paperlessStatus).then(function () {\n //setPaperlessStatus();\n if (vm.PaperlessEnrollmentFailed) {\n vm.showLoader['BILL_DEL'] = false;\n $rootScope.billingBanner['BILL_DEL'] = {\n type: 'E',\n message: 'Enrollment cannot be completed at this time.'\n };\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption =\n // 'Enrollment cannot be completed at this time.';\n // vm.toastData.show = true;\n //sendToastEvents('BILL_DEL');\n _paramDataToEnrollPB = {\n action: assetService.strings.UNENROLL,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n emailId: vm.emailAccount.EmailAddress,\n contractAccount: accountData.contractAccountId\n };\n } else {\n setPaperlessStatusUnEnroll();\n var _notifId2 = vm.currentNotifModal.notifIdModal;\n var _cardName3 = subheadline(_notifId2);\n var flag = enrolledStatus ? 'on' : 'off';\n if (flag === 'off') {\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName3 + '/billing-payment/toggle/off');\n }\n if (flag === 'on') {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName3 + '/billing-payment/save');\n }\n vm.paperlessBilling.status = false;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n currPref.forEach(function (notif) {\n if (vm.paperlessBilling.isEligible && (notif.id === _strings.preferences.PMT_RMDR || notif.id === _strings.preferences.PMT_UPDT)) {\n notif.paperlessBillingInelegible = true;\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n });\n var newData = _.find(vm.notificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.notifications = [];\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, vm.notificationPreferences, currentData, currentCommunication);\n vm.checkedPDFOption = false;\n newData.enrolled = false;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n });\n } else {\n var tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences));\n var newData = _.find(tempNotificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.notifications = [];\n newData.enrolled = false;\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, tempNotificationPreferences, currentData, currentCommunication).then(function (result) {\n var _result$, _result$2;\n if ((_result$ = result[0]) !== null && _result$ !== void 0 && _result$.ReturnCodes && ((_result$2 = result[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCodes[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCode1) === null || _result$2 === void 0 ? void 0 : _result$2.Type) === 'E') {\n var _result$0$ReturnCodes, _result$0$ReturnCodes2, _result$0$ReturnCodes3;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\n var showType = (_result$0$ReturnCodes = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes === void 0 ? void 0 : _result$0$ReturnCodes.Type;\n var returnCode = (_result$0$ReturnCodes2 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes2 === void 0 ? void 0 : _result$0$ReturnCodes2.MessageNum;\n var prefError = (_result$0$ReturnCodes3 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes3 === void 0 ? void 0 : _result$0$ReturnCodes3.Message;\n $rootScope.billingBanner[vm.currentNotifModal.notifIdModal] = {\n type: 'E',\n message: ''\n };\n $rootScope.billingError = true;\n generateGATEvents(vm.currentNotifModal.notifIdModal, showType, returnCode, prefError);\n broadcastService.refreshPreferences();\n } else {\n var _cardName4 = subheadline(vm.currentNotifModal.notifIdModal);\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName4 + '/billing-payment/off');\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\n vm.notificationPreferences[index].loadingChanges = false;\n vm.notificationPreferences = tempNotificationPreferences;\n newData.enrolled = false;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n broadcastService.refreshPreferences();\n }\n });\n }\n }\n }\n function enrolledNotif(notifId, enrolledStatus, title) {\n // if(impDetails != null) {\n // showPaperlessUnauthorizedMessage();\n // return false;\n // }\n vm.clickedSave[notifId] = false;\n vm.isPaperlesBilling = notifId === _strings.preferences.BILL_DEL;\n if (vm.isPaperlesBilling && vm.toggleClicked) {\n vm.toggleClickedCopy = vm.toggleClicked;\n vm.paperlessCTA = 'Save';\n vm.toggleClicked = false;\n vm.paperlessBilling.status = false;\n pushVPV('/vpv/de/card/preferences-notifications/toggle/paperless-billing/billing-payment/toggle/off');\n vm.cancelChanges('BILL_DEL');\n return;\n }\n if (vm.isPaperlesBilling && !vm.toggleClicked) {\n vm.paperlessCTA = 'Update';\n }\n if (vm.isPaperlesBilling && !vm.paperlessBilling.status) {\n vm.toggleClicked = true;\n vm.toggleClickedCopy = false;\n vm.paperlessCTA = 'Save';\n }\n vm.currentNotifModal.notifIdModal = notifId;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.currentNotifModal.title = title;\n vm.handleEnrollment(vm.currentNotifModal.enrolledStatus, vm.currentNotifModal.notifIdModal);\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function setModels() {\n var data = vm.notificationPreferences;\n vm.preferencesReady = true;\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.id === _strings.preferences.PREPAY) {\n cards.remainingDays.sort(function (a, b) {\n return a - b;\n });\n cards.remainingDays.forEach(function (days) {\n vm.lowBalanceDays[days - 1] = true;\n });\n }\n if (cards.id === _strings.preferences.PMT_RMDR) {\n cards.subThersholdvarDropdown = assetService.notifPref.subThersholdvarDropdown;\n }\n if (cards.notifications) {\n notificationHelper.setNotifications(cards.id, vm.communicationOptions, vm.notificationDropdowns, data);\n } else {\n cards.deleted = 10;\n cards.notifications = [];\n }\n vm.clickedSave[cards.id] = false;\n vm.showError[cards.id] = [];\n vm.showLoader[cards.id] = false;\n });\n notificationHelper.setCommunicationValue(vm.cardsModel, vm.notificationPreferences, vm.communicationOptions);\n prepaidChanels();\n }\n function addNotification(notifId) {\n //TO-DO: Refactor\n var data = vm.notificationPreferences;\n var phones = vm.communicationOptions.phones;\n notificationHelper.addNotification(notifId, phones, vm.notificationDropdowns, data);\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n var notifPos = newNotif.notifications.length - 1;\n if (vm.notificationDropdowns[notifId].channel[notifPos].length === 1) {\n model = {\n value: vm.notificationDropdowns[notifId].channel[notifPos][0].value\n };\n extra = \"\".concat(notifId, \"/\").concat(notifPos);\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n prepaidChanels();\n }\n function cancelChanges(notifId) {\n vm.clickedSave[notifId] = false;\n vm.showError[notifId] = [];\n if (notifId === 'BILL_DEL') {\n //Reset PDF checkbox\n vm.notificationPreferences.filter(function (x) {\n return x.id === 'BILL_DEL';\n })[0].checkedPDFOption = vm.cardsModel.filter(function (x) {\n return x.id === 'BILL_DEL';\n })[0].checkedPDFOption;\n //resetCheckbox value\n vm.checkedPDFOption = vm.cardsModel.filter(function (x) {\n return x.id === 'BILL_DEL';\n })[0].checkedPDFOption;\n //reset banner\n if ($rootScope.paperlessSaveErrorCount) {\n $rootScope.paperlessSaveErrorCount = 0;\n }\n vm.toggleClicked = false;\n if (!vm.toggleClickedCopy) {\n vm.toggleClickedCopy = false;\n pushVPV('/vpv/de/card/preferences-notifications/clickthrough/paperless-billing/billing-payment/cancel');\n }\n } else if (notifId === 'BILLPRINT') {\n //and bill format radio\n vm.notificationPreferences.filter(function (x) {\n return x.id === 'BILLPRINT';\n })[0].billFormatType = vm.cardsModel.filter(function (x) {\n return x.id === 'BILLPRINT';\n })[0].billFormatType;\n } /*else if (notifId === 'RATE_REVW') {\r\n vm.notificationPreferences.filter(\r\n x => x.id === 'RATE_REVW',\r\n )[0].rateReviewType = vm.cardsModel.filter(\r\n x => x.id === 'RATE_REVW',\r\n )[0].rateReviewType;\r\n }*/\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n if (notifId != 'BILL_DEL') {\n var _cardName5 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/clickthrough/' + _cardName5 + '/billing-payment/cancel');\n }\n notificationHelper.cancelChanges(notifId, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n if (data[0].enrolled === false) {\n vm.paperlessBilling.status = false;\n }\n if ($scope.$parent.isPrepaid) {\n vm.lowBalanceDays = vm.lowBalanceDaysBackup.slice();\n }\n }\n function continueSaveChanges() {\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n angular.element('#ModalNotificationPreferenceDeleteChanel').modal('hide');\n notificationHelper.saveChanges(vm.notifId, newData, currentData, currentCommunication);\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n function enrollmodal(notifId, index, enrolledStatus, madeChanges) {\n if (notifId === 'BILL_DEL' && vm.notificationPreferences[0].confirmButton === 'Save') {\n vm.toggleClicked = false;\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(vm.getData).then(function (result) {\n vm.temp = [];\n vm.temp = result.d.results[0].Partner_Preference.results.filter(function (item) {\n return item.SubGroupID === 'PAPERLESS' && item.SubID === 'BILL_DEL';\n });\n if (vm.temp.length > 0 && vm.temp[0].Comm_Medium === 'DIST' && vm.temp[0].OPTOUT === '') {\n vm.notifyStatus = 'enabled';\n sessionStorageService.set(assetService.storageKeys.notifyPrefer, vm.notifyStatus);\n vm.notifId = notifId;\n vm.indexId = index;\n vm.enrolledStatus = enrolledStatus;\n modalService.paperlessEnroll();\n } else {\n //in case of paperless billing it shows no changes made if user directly click save\n //so manually setting variable true in the case.\n madeChanges = true;\n saveChanges(notifId, index, enrolledStatus, madeChanges);\n }\n }, function (error) {\n $.growl.error({\n message: error.message\n });\n });\n } else if (madeChanges) {\n saveChanges(notifId, index, enrolledStatus, madeChanges);\n }\n }\n $scope.$on(assetService.events.unEnrollNotification, function () {\n cancelChanges(vm.notifId);\n });\n $scope.$on(assetService.events.enrollNotification, function () {\n saveChanges(vm.notifId, vm.indexId, vm.enrolledStatus, true);\n });\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n // Search the progName in the getProductsRecomendations response, if it is found, call to DELETE_PROGRAM from Sitecore\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId;\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function updatePreferences(notifId, index) {\n var oldData = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n var newPref = _.find(newData, function (preference) {\n return preference.id === notifId;\n });\n var curPref = _.find(currentData, function (preference) {\n return preference.id === notifId;\n });\n vm.showLoader[notifId] = true;\n //vm.notificationPreferences[index].loadingChanges = true;\n notificationHelper.saveChanges(notifId, newData, currentData, currentCommunication).then(function (result) {\n var _result$0$ReturnCodes4;\n vm.showLoader[notifId] = false;\n if (result[0].ReturnCodes && ((_result$0$ReturnCodes4 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes4 === void 0 ? void 0 : _result$0$ReturnCodes4.Type) === 'E') {\n $rootScope.billingBanner[notifId] = {\n type: 'E',\n message: ''\n };\n } else {\n $rootScope.billingBanner[notifId] = {\n type: 'S',\n message: ''\n };\n gatAddDeleteEvent(notifId, newData, oldData);\n }\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'success';\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\n // vm.toastData.show = true;\n // $timeout(() => {\n // vm.toastData.show = false;\n // }, 6000);\n //sendToastEvents(notifId);\n }).catch(function () {\n vm.showLoader[notifId] = false;\n $rootScope.billingBanner[notifId] = {\n type: 'E',\n message: 'Unexpected error'\n };\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n });\n if (/*notifId === _strings.preferences.RATE_REVW ||*/\n notifId === _strings.preferences.BILLPRINT) {\n /*curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\n curPref.billFormatType = notifId === _strings.preferences.BILLPRINT ? newData.billFormatType : curPref.billFormatType;\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n function checkPreference(notifId, index, currPref, newstatus) {\n var newData = newstatus;\n var currentData = vm.cardsModel;\n var newPref = _.find(newData, function (preference) {\n return preference.id === notifId;\n });\n var curPref = _.find(currentData, function (preference) {\n return preference.id === notifId;\n });\n //vm.notificationPreferences[index].loadingChanges = true;\n notificationHelper.createsaveChanges(notifId, newData, currentData, currentCommunication);\n currentCommunication = $scope.$parent.currComm;\n getPreferences(vm.notificationPreferences, currentCommunication);\n //setModels();\n if ($rootScope.paperlessSaveErrorCount > 0 && $rootScope.paperlessSaveErrorCount < 3) {\n vm.notificationPreferences[0].editionMode = true;\n } else {\n vm.notificationPreferences[0].editionMode = false;\n }\n // vm.notificationPreferences[index].loadingChanges = false;\n if (/* notifId === _strings.preferences.RATE_REVW ||*/\n\n notifId === _strings.preferences.BILLPRINT) {\n /* curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\n curPref.billFormatType = notifId === _strings.preferences.BILLPRINT ? newData.billFormatType : curPref.billFormatType;\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n function callReadandDeriveService() {\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(vm.getData).then(function (result) {\n // On Succes of Read Derive preferences service\n }, function (error) {\n $.growl.error({\n message: error.message\n });\n });\n }\n document.addEventListener('click', function () {\n if (!vm.noChanges) {\n $rootScope.billingBanner = {};\n }\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n vm.noChanges = false;\n });\n function saveChanges(notifId, index, enrolledStatus, madeChanges) {\n if (madeChanges) {\n vm.showLoader[notifId] = true;\n if (notifId === 'BILL_DEL') {\n if (vm.notificationPreferences[0].confirmButton === 'Save') {\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n if (enrolledStatus) {\n if (vm.isPaperlesBilling) {\n vm.temp = vm.notificationDropdowns.BILL_DEL.communication[0].filter(function (item) {\n return item.text.toLowerCase() === vm.primaryEmail.toLowerCase();\n });\n dropCommunication(vm.temp[0], 'BILL_DEL/0');\n _paramDataToEnrollPB = {\n action: assetService.strings.ENROLL,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n emailId: vm.primaryEmail,\n contractAccount: accountData.contractAccountId,\n billNotify: vm.checkedPDFOption ? assetService.notifPref.COMM_MEDIUMS.EBLP : assetService.notifPref.COMM_MEDIUMS.EBIL\n };\n vm.paperlessStatus = false;\n ebillEnrollKubra(_paramDataToEnrollPB, vm.paperlessStatus).then(function () {\n var requestCare = {\n accountNumber: accountData.contractAccountId,\n jurisdiction: accountData.jurisdiction,\n progName: 'P0156'\n };\n setPaperlessStatus();\n productRecommendationsCARE(requestCare);\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n currPref.forEach(function (notif) {\n if (vm.paperlessBilling.isEligible && (notif.id === _strings.preferences.PMT_RMDR || notif.id === _strings.preferences.PMT_UPDT)) {\n notif.paperlessBillingInelegible = false;\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n });\n if (vm.PaperlessEnrollmentFailed) {\n $rootScope.billingBanner[_strings.preferences.BILL_DEL] = {\n type: 'E',\n message: ''\n };\n $rootScope.paperlessSaveErrorCount += 1;\n vm.paperlessBilling.status = true;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n if ($rootScope.paperlessSaveErrorCount > 2) {\n $rootScope.billingBanner[_strings.preferences.BILL_DEL] = {\n type: 'EE',\n message: ''\n };\n vm.paperlessBilling.status = false;\n vm.paperlessBilling.editionMode = false;\n setPaperlessStatusUnEnroll();\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n var newData = _.find(vm.notificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.notifications = [];\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, vm.notificationPreferences, currentData, currentCommunication);\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption =\n // 'Enrollment cannot be completed at this time.';\n // vm.toastData.show = true;\n //sendToastEvents(notifId);\n // _paramDataToEnrollPB = {\n // action: assetService.strings.UNENROLL,\n // businessPartnerId: accountData.relatedBusinessPartnerId,\n // emailId: vm.emailAccount.EmailAddress,\n // contractAccount: accountData.contractAccountId,\n // };\n //vm.paperlessStatus = true;\n //setPaperlessStatusUnEnroll();\n // vm.paperlessBilling.status = true;\n // sessionStorageService.set(\n // assetService.notifPref.sessionStorage.paperlessBilling,\n // vm.paperlessBilling,\n // );\n // angular\n // .element('#ModalManageNotificationPreferenceChange')\n // .modal('hide');\n // let currPref = sessionStorageService.get(\n // assetService.notifPref.sessionStorage.billing,\n // );\n\n // currPref.forEach(notif => {\n // if (\n // vm.paperlessBilling.isEligible &&\n // (notif.id === _strings.preferences.PMT_RMDR ||\n // notif.id === _strings.preferences.PMT_UPDT)\n // ) {\n // notif.paperlessBillingInelegible = true;\n // }\n // sessionStorageService.set(\n // assetService.notifPref.sessionStorage.billing,\n // vm.notificationPreferences,\n // );\n // });\n // let newData = _.find(\n // vm.notificationPreferences,\n // element => element.id === vm.currentNotifModal.notifIdModal,\n // );\n // newData.notifications = [];\n // const currentData = vm.cardsModel;\n // notificationHelper.saveChanges(\n // vm.currentNotifModal.notifIdModal,\n // vm.notificationPreferences,\n // currentData,\n // currentCommunication,\n // );\n // newData.enrolled = false;\n // angular\n // .element('#ModalManageNotificationPreferenceChange')\n // .modal('hide');\n // sessionStorageService.set(\n // assetService.notifPref.sessionStorage.billing,\n // vm.notificationPreferences,\n // );\n } else {\n if (notifId == 'BILL_DEL') {\n pushVPV('/vpv/de/card/preferences-notifications/toggle/paperless-billing/billing-payment/toggle/on');\n if (vm.notificationPreferences[0].checkedPDFOption === true) {\n pushVPV('/vpv/de/card/preferences-notifications/success/paperless-billing/billing-payment/add-communication/preference-successfully-saved/pdf-yes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/success/paperless-billing/billing-payment/add-communication/preference-successfully-saved/pdf-no');\n }\n }\n }\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n var newStatus = vm.notificationPreferences;\n currentCommunication = $scope.$parent.currComm;\n checkPreference(notifId, index, currPref, newStatus);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n if (\n /*vm.currentNotifModal.notifIdModal ===\r\n _strings.preferences.RATE_REVW ||*/\n vm.currentNotifModal.notifIdModal === _strings.preferences.BILLPRINT) {\n var currentNotifModalIndex = vm.notificationPreferences.findIndex(function (x) {\n return x.id === vm.currentNotifModal.notifIdModal;\n });\n saveChanges(vm.currentNotifModal.notifIdModal, currentNotifModalIndex);\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n\n //vm.notificationPreferences[0].notifications[0].communicationText = vm.temp[0].text;\n });\n }\n }\n }\n if (vm.notificationPreferences[0].confirmButton === 'Update') {\n updatePreferences(notifId, index);\n }\n broadcastService.refreshPreferences();\n $window.scrollTo(0, 0);\n } else {\n $rootScope.billingBanner[notifId] = {\n type: '',\n message: ''\n };\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n var newPref = _.find(newData, function (preference) {\n return preference.id === notifId;\n });\n var curPref = _.find(currentData, function (preference) {\n return preference.id === notifId;\n });\n // if(newPref.notifications.length < curPref.notifications.length) {\n // vm.notifId = notifId\n // angular.element('#ModalNotificationPreferenceDeleteChanel').modal('show');\n // } else {\n // vm.notificationPreferences[index].loadingChanges = true;\n notificationHelper.saveChanges(notifId, newData, currentData, currentCommunication, vm.floridaUser).then(function (result) {\n var _result$0$ReturnCodes5, _result$0$ReturnCodes6, _result$0$ReturnCodes7, _result$0$ReturnCodes8;\n vm.showType = (_result$0$ReturnCodes5 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes5 !== void 0 && _result$0$ReturnCodes5.Type ? result[0].ReturnCodes[0].ReturnCode1.Type : '';\n vm.returnCode = (_result$0$ReturnCodes6 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes6 !== void 0 && _result$0$ReturnCodes6.MessageNum ? result[0].ReturnCodes[0].ReturnCode1.MessageNum : '';\n vm.prefError = (_result$0$ReturnCodes7 = result[0].ReturnCodes[0].ReturnCode1) !== null && _result$0$ReturnCodes7 !== void 0 && _result$0$ReturnCodes7.Message ? result[0].ReturnCodes[0].ReturnCode1.Message : '';\n if (result[0].ReturnCodes && ((_result$0$ReturnCodes8 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes8 === void 0 ? void 0 : _result$0$ReturnCodes8.Type) === 'E') {\n vm.showLoader[notifId] = false;\n $rootScope.billingBanner[notifId] = {\n type: 'E',\n message: ''\n };\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n sessionStorageService.set(assetService.notifPref.sessionStorage.outage, vm.notificationPreferences);\n } else {\n vm.showLoader[notifId] = false;\n $rootScope.billingBanner[notifId] = {\n type: 'S',\n message: ''\n };\n if (notifId != 'BILLPRINT') {\n var oldData = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n gatAddDeleteEvent(notifId, newData, oldData);\n }\n if (vm.notificationPreferences[index].confirmButton != 'Update') {\n var _cardName6 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName6 + '/billing-payment/toggle/on');\n }\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'success';\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\n // vm.toastData.show = true;\n sessionStorageService.set(assetService.notifPref.sessionStorage.billing, vm.notificationPreferences);\n }\n broadcastService.refreshPreferences();\n $window.scrollTo(0, 0);\n }).catch(function () {\n vm.notificationPreferences[index].loadingChanges = false;\n vm.showLoader[notifId] = false;\n $rootScope.billingBanner[notifId] = {\n type: 'E',\n message: 'Unexpected error'\n };\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n }).then(function () {\n //sendToastEvents(notifId);\n generateGATEvents(notifId, vm.showType, vm.returnCode, vm.prefError);\n });\n //}\n if (/*notifId === _strings.preferences.RATE_REVW ||*/\n notifId === _strings.preferences.BILLPRINT) {\n /*curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\n curPref.billFormatType = notifId === _strings.preferences.BILLPRINT ? newData.billFormatType : curPref.billFormatType;\n vm.paperlessBilling.status = false;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n }\n }\n } else {\n var _newData = vm.notificationPreferences;\n var _currentData = vm.cardsModel;\n var result = notificationHelper.compareChanges(notifId, _newData, _currentData);\n if (result) {\n vm.showLoader[notifId] = false;\n vm.noChanges = true;\n $rootScope.billingBanner[notifId] = {\n type: 'N',\n message: ''\n };\n var _cardName7 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + _cardName7 + '/billing-payment/na/make-change-to-update-your-preference');\n pushDL('preferences-notifications_error', 'na-|-make-change-to-update-your-preference-|-na', _cardName7);\n }\n }\n }\n function deleteNotification(notifId, dropDownIndex) {\n var data = vm.notificationPreferences;\n vm.showError[notifId].splice(dropDownIndex, 1);\n var cardName = subheadline(notifId);\n var globaldata = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n var index = globaldata.findIndex(function (x) {\n return x.id == notifId;\n });\n globaldata = globaldata[index].notifications;\n var deleteValue = data[index].notifications[dropDownIndex].communicationText;\n var channelType = data[index].notifications[dropDownIndex].channel;\n deleteValue = deleteValue.toLowerCase();\n if (channelType != 'MAIL' && deleteValue != 'send my communication to') {\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\n }\n if (deleteValue != 'send my communication to' && globaldata != undefined) {\n var commText = '';\n globaldata.forEach(function (notif) {\n if (notif.communicationText != undefined) {\n commText = notif.communicationText.toLowerCase();\n } else {\n commText = notif.communication.toLowerCase();\n }\n if (commText === deleteValue && notif.channel == channelType) {\n vm.errorDelete = true;\n var type = notif.channel == 'TXT' ? 'text' : notif.channel == 'VOIC' ? 'call' : 'email';\n if (notifId == 'BILL_DEL') {\n pushDL('preferences-notifications_communications-methods', 'delete-|-intent', cardName);\n } else {\n pushDL('preferences-notifications_communications-methods', 'delete-|-intent', type + '-|-' + cardName);\n }\n pushVPV('/vpv/de/card/preferences-notifications/intent/' + cardName + '/billing-payment/delete-intent');\n }\n });\n }\n notificationHelper.deleteNotification(notifId, dropDownIndex, data, vm.notificationDropdowns);\n if (vm.notificationPreferences.filter(function (element) {\n return element.notifications;\n }) == '') {\n vm.disableSave[notifId] = true;\n } else vm.disableSave[notifId] = vm.isIdentical(notifId);\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );*/\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function cancelChange(notification) {\n notification.value = !notification.value;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function communicationVal(model, extra) {\n if (model === 'Text') {\n model = 'TXT';\n } else if (model === 'Call') {\n model = 'VOIC';\n } else if (model === 'Email') {\n model = 'MAIL';\n }\n var data = vm.notificationPreferences;\n vm.modelSelected = model;\n var cardId = extra.split('/')[0];\n notificationHelper.dropdownFilter(cardId, vm.communicationOptions, vm.enrolledPref, model);\n vm.displayOptions = sessionStorageService.get('displayOptions');\n notificationHelper.commChange(model, extra, vm.displayOptions, vm.notificationDropdowns, data);\n }\n function setPaperlessStatus() {\n vm.notificationPreferences.forEach(function (notif) {\n if (notif.id === _strings.preferences.PMT_RMDR || notif.id === _strings.preferences.PMT_UPDT) {\n notif.paperlessBillingInelegible = !vm.paperlessBilling.status;\n }\n if (notif.id === _strings.preferences.BILLPRINT && !vm.checkedPDFOption) {\n notif.paperlessBillingInelegible = true;\n }\n });\n }\n function setPaperlessStatusUnEnroll() {\n vm.notificationPreferences.forEach(function (notif) {\n if (notif.id === _strings.preferences.PMT_RMDR || notif.id === _strings.preferences.PMT_UPDT) {\n notif.paperlessBillingInelegible = true;\n }\n if (notif.id === _strings.preferences.BILLPRINT) {\n notif.editionMode = false;\n notif.display = true;\n notif.paperlessBillingInelegible = false;\n }\n });\n }\n function getPreferences(preferences, comm_opt) {\n vm.jurisdiction = comm_opt.jurisdiction;\n vm.notificationPreferences = preferences;\n vm.notificationPreferences.forEach(function (card, $index) {\n card['display'] = true;\n if (vm.paperlessBilling.status && !vm.checkedPDFOption && card.id === 'BILLPRINT') {\n card.display = false;\n }\n if (card.id === _strings.preferences.PMT_RMDR) {\n card['display'] = false;\n }\n if ($index === 7) {\n card['display'] = false;\n }\n });\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\n vm.cardsModel = vm.cardsModel.map(function (item) {\n if (item.notifications) item.notifications = genericHelperService.notReferencesArrayObjects(item.notifications);else item.notifications = [];\n return item;\n });\n vm.communicationOptions = comm_opt;\n }\n function load() {\n vm.flag = true;\n vm.toggleClicked = false;\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.floridaUser = globalAccountInfo.accountSelected.jurisdiction === _strings.jurisdictions.FL01;\n vm.decUser = globalAccountInfo.accountSelected.jurisdiction === _strings.jurisdictions.NC01 || globalAccountInfo.accountSelected.jurisdiction === _strings.jurisdictions.SC01;\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n var globalAccountsEmails = sessionStorageService.get(assetService.storageKeys.globalAccounts.emails);\n //if (globalAccountsEmails && globalAccountsEmails.length >= 1)\n vm.primaryEmail = globalAccountInfo.userEmail;\n paperlessInfo = sessionStorageService.get(assetService.notifPref.sessionStorage.paperlessTriggerFromPage);\n vm.paperlessBilling = sessionStorageService.get(assetService.notifPref.sessionStorage.paperlessBilling);\n vm.paperlessBilling.realStatus = vm.paperlessBilling ? vm.paperlessBilling.status : false;\n vm.autopay = sessionStorageService.get(assetService.notifPref.sessionStorage.autopay);\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.billing);\n vm.enrolledPref = currPref;\n if (currPref[0].checkedPDFOption != undefined) {\n vm.checkedPDFOption = currPref[0].checkedPDFOption;\n } else {\n vm.checkedPDFOption = false;\n labelflag = true;\n }\n /* if (\r\n currPref.length > 7 &&\r\n (currPref[7].rateReviewType === 'N' || currPref[7].rateReviewType === '')\r\n ) {\r\n currPref[7].enrolled = false;\r\n } */\n currPref.forEach(function (notif) {\n if (notif.loadingChanges) {\n notif.loadingChanges = false;\n }\n if (!vm.autopay.status && (notif.id === _strings.preferences.APP_SCHED || notif.id === _strings.preferences.APP_UPDT)) {\n notif.autopayInelegible = true;\n }\n if (!vm.paperlessBilling.status && (notif.id === _strings.preferences.PMT_RMDR || notif.id === _strings.preferences.PMT_UPDT)) {\n notif.paperlessBillingInelegible = true;\n }\n if (vm.paperlessBilling.status && !vm.checkedPDFOption && notif.id === _strings.preferences.BILLPRINT) {\n notif.paperlessBillingInelegible = true;\n }\n if (!vm.paperlessBilling.isEligible && notif.id === _strings.preferences.BILL_DEL) {\n notif.paperlessBillingInelegible = true;\n }\n });\n if ($scope.$parent.isPrepaid) {\n vm.autoReload = sessionStorageService.get(assetService.notifPref.sessionStorage.autoReload);\n currPref.forEach(function (notif) {\n if (vm.autoReload && !vm.autoReload.status && notif.id === _strings.preferences.PPY_AUTO) {\n notif.autoReloadInelegible = true;\n }\n if (notif.id === _strings.preferences.PREPAY) {\n notif.remainingDays = notif.remainingDays ? notif.remainingDays : [];\n }\n });\n }\n currentCommunication = $scope.$parent.currComm;\n getPreferences(currPref, currentCommunication);\n vm.emailAccount = sessionStorageService.get(assetService.notifPref.sessionStorage.email);\n setModels();\n //To call the Ebill enroll from Dashboard/Billing & payment page\n if (paperlessInfo != null && paperlessInfo.trigger === assetService.notifPref.sessionStorage.triggerOn || $rootScope.paperlessSaveErrorCount <= 2 && $rootScope.paperlessSaveErrorCount > 0) {\n // if(impDetails != null) {\n // showPaperlessUnauthorizedMessage();\n // paperlessInfo.enrolledStatus = false;\n // }\n // else {\n if ($rootScope.paperlessSaveErrorCount <= 2 && $rootScope.paperlessSaveErrorCount > 0) {\n paperlessInfo = {\n notifId: assetService.notifPref.SUBIDS.BILL_DEL,\n enrolledStatus: false,\n trigger: assetService.notifPref.sessionStorage.triggerOn\n };\n $rootScope.billingBanner[_strings.preferences.BILL_DEL] = {\n type: 'E',\n message: ''\n };\n }\n vm.enrolledNotif(assetService.notifPref.SUBIDS.BILL_DEL, paperlessInfo.enrolledStatus, vm.paperlessBilling.serviceName);\n vm.notificationPreferences.filter(function (x) {\n return x.id === assetService.notifPref.SUBIDS.BILL_DEL;\n })[0].confirmButton = assetService.notifPref.sessionStorage.updateSave;\n vm.notificationPreferences.filter(function (x) {\n return x.id === assetService.notifPref.SUBIDS.BILL_DEL;\n })[0].checkedPDFOption = true;\n //vm.defaultEmail = vm.emailAccount.EmailAddress;\n paperlessInfo.enrolledStatus = true;\n //}\n paperlessInfo.trigger = assetService.notifPref.sessionStorage.triggerOff;\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessTriggerFromPage, paperlessInfo);\n }\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n vm.getData = {\n businessPartnerId: accountData.businessPartnerId,\n contractAccountId: accountData.contractAccountId,\n requestedBy: vm.emailAccount.EmailAddress\n };\n }\n function dayAlert(day, notifId) {\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.cardsModel);\n var j = 0;\n var band = false;\n vm.lowBalanceDays[day] = !vm.lowBalanceDays[day];\n newNotif.remainingDays = [];\n var _loop = function _loop(i) {\n var days = vm.lowBalanceDays[i];\n if (!days && newNotif.remainingDays.length > 0) {\n j = 0;\n newNotif.remainingDays.forEach(function (remDay) {\n if (remDay === i + 1) {\n band = true;\n return;\n }\n j += 1;\n });\n if (band) newNotif.remainingDays.splice(j, 1);\n }\n pushDay = i + 1;\n if (days) newNotif.remainingDays.push(\"\".concat(pushDay));\n };\n for (var i = 0; i < vm.lowBalanceDays.length; i++) {\n _loop(i);\n }\n if (JSON.stringify(newNotif.remainingDays) === JSON.stringify(currentNotif.remainingDays)) {\n newNotif.optoutEdit = false;\n } else {\n newNotif.optoutEdit = true;\n vm.disableSave[notifId] = false;\n }\n }\n /* Initialization */\n function init() {\n load();\n }\n init();\n function sendBilling(notifId, flagToggle) {\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\n }\n function sendNotification(stringToConcat) {\n pushVPV('/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/');\n }\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\n return stringBase.concat(stringToConcat);\n }\n function sendEditBilling(notifId, concatEdit, madeChanges) {\n $rootScope.billingBanner = {};\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\n if (vm.isPaperlesBilling) {\n if (concatEdit == 'Cancel') {\n if (vm.paperlessBilling.realStatus !== true) {\n vm.paperlessBilling.status = false;\n }\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.paperlessBilling, vm.paperlessBilling);\n }\n if (notifId == 'BILLPRINT' && concatEdit === 'Edit') {\n pushVPV('/vpv/de/card/preferences-notifications/load/bill-format/billing-payment/update');\n }\n var param = {\n workFlow: vm.gatConstants.businessFunction,\n buttonText: concatEdit,\n headline: vm.gatConstants.addedSpec,\n subheadline: vm.indexToCardTitle(notifId)\n };\n vm.buttonClicked = concatEdit;\n if (concatEdit === 'Update') {\n param.buttonText = 'edit';\n param.addedSpec = concatEdit;\n $rootScope.billingError = true;\n }\n if (concatEdit === 'Save') {\n $rootScope.billingError = false;\n }\n /*notificationHelper.sendEventAttribute(param);*/\n } else {\n var newData = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n newData.notifications.forEach(function (x) {\n if ((x.communicationText == 'Send My Communication To' || x.communicationText == 'Add New Email') && x.communication == 'Send My Communication To' && x.channelText != 'Method') {\n inlineVPV(notifId, x.channelText);\n }\n });\n var i = 0;\n vm.showError[notifId] = [];\n newData.notifications.forEach(function (x) {\n vm.showError[notifId].push(x.classError);\n i += 1;\n });\n vm.clickedSave[notifId] = true;\n }\n }\n function sendToastEvents(notifId) {\n if (notifId != 'BILL_DEL') {\n attributePush(\"workFlow: \".concat(vm.toastData.workFlow), \"headline:\".concat(vm.toastData.option), \"subheadline:\".concat(vm.toastData.messageOption), 'buttonText: impression', \"addedSpec:\".concat(vm.gatConstants.businessFunction), \"addedEvent: \".concat(vm.indexToCardTitle(notifId)));\n virtualPagePush(vm.toastData.workFlow, vm.gatConstants.businessFunction, vm.indexToCardTitle(notifId), vm.toastData.messageOption, 'impression', vm.toastData.option);\n }\n }\n function generateGATEvents(notifId, showError, getCode, getMsg) {\n var cardName = subheadline(notifId);\n if (notifId == 'BILL_NOTIF' || notifId == 'PAY_CONFRM' || notifId == 'PMT_UPDT' || notifId == 'PREPAY' || notifId == 'PPY_AUTO' || notifId == 'BILLPRINT') {\n if (showError == 'S') {\n if (notifId == 'BILLPRINT') {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/billing-payment/na/preference-successfully-saved');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/billing-payment/add-communication/preference-successfully-saved');\n }\n } else if (showError == 'E') {\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\n if (vm.preferenceAction === 'UPDATE') {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl), cardName);\n } else {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.CreatePreferences), cardName);\n }\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/billing-payment/' + getCode + '/trouble-saving-your-changes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/billing-payment/' + getCode + '/trouble-updating-your-changes');\n }\n }\n }\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function closeToast() {\n vm.toastData.show = '';\n }\n function getSuccessMessage(index) {\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n var titleTxt = '';\r\n switch (index) {\r\n case 0:\r\n titleTxt = $scope.$parent.isPrepaid ? 'Low Balance Alerts' : 'Paperless Billing';\r\n break;\r\n case 1:\r\n titleTxt = $scope.$parent.isPrepaid ? 'Auto Reload' : 'Billing Notifications';\r\n break;\r\n case 2:\r\n titleTxt = 'Payment Confirmation';\r\n break;\r\n case 3:\r\n titleTxt = 'Payment Reminders';\r\n break;\r\n case 4:\r\n titleTxt = 'Auto Payment Scheduled';\r\n break;\r\n case 5:\r\n titleTxt = 'Auto Payment Updates';\r\n break;\r\n case 6:\r\n titleTxt = 'Payment Updates';\r\n break;\r\n case 7:\r\n titleTxt = vm.floridaUser ? 'Rate Review' : 'Annual Rate Review';\r\n break;\r\n case 7:\r\n titleTxt = 'Bill Format';\r\n break;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n return 'Success! ' + titleTxt + ' saved successfully!'; */\n return 'Success! Changes saved.';\n }\n function indexToCardTitle(notifId) {\n var titleTxt = '';\n if (!$scope.$parent.isPrepaid) {\n switch (notifId) {\n case 'BILL_DEL':\n return vm.gatConstants.paperlessBilling;\n case 'BILL_NOTIF':\n return vm.gatConstants.billingNotifications;\n case 'PAY_CONFRM':\n return vm.gatConstants.paymentConfirmations;\n case 'PMT_UPDT':\n return vm.gatConstants.paymentUpdates;\n case 'BILLPRINT':\n return vm.gatConstants.billPrint;\n default:\n titleTxt = 'Item';\n }\n } else {\n switch (notifId) {\n case 'BILL_NOTIF':\n return vm.gatConstants.billingNotifications;\n case 'PAY_CONFRM':\n return vm.gatConstants.paymentConfirmations;\n case 'PREPAY':\n return vm.gatConstants.lowBalAlerts;\n case 'PPY_AUTO':\n return vm.gatConstants.autoReload;\n default:\n titleTxt = 'Item';\n }\n }\n }\n function isIdentical(notifId) {\n if (notifId === _strings.preferences.BILLPRINT) return vm.notificationPreferences[8].billFormatType === vm.cardsModel[8].billFormatType;\n /* if (notifId === _strings.preferences.RATE_REVW)\r\n return (\r\n vm.notificationPreferences[7].rateReviewType ===\r\n vm.cardsModel[7].rateReviewType\r\n ); */\n var enteredPairs = getPairs(vm.notificationPreferences, notifId);\n var currentPairs = getPairs(vm.cardsModel, notifId);\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\n }\n function getPairs(comms, notifId) {\n var copy = genericHelperService.notReferencesArrayObjects(comms.filter(function (x) {\n return x.id === notifId;\n })[0].notifications);\n return copy.sort(function (a, b) {\n if (a.channel !== b.channel)\n // order by channel, then by communication\n return a.channel.localeCompare(b.channel);\n return a.communication.localeCompare(b.communication);\n }).map(function (x) {\n return {\n channel: x.channel,\n communication: x.communication\n };\n });\n }\n function isUnique() {\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(vm.currentNotifModal, vm.communicationOptions);\n vm.isDuplicate = vm.currentNotifModal.disableSave;\n\n //To check for duplicate emails, length > 64\n if (vm.currentNotifModal.type == 'emails') {\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var defaultItem = vm.communicationOptions.emails.filter(function (itm) {\n return itm.text === vm.modalInputValue;\n });\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\n }\n }\n function showPaperlessUnauthorizedMessage() {\n vm.toastData.option = 'error';\n vm.toastData.messageOption = 'You are not authorized to perform this function on behalf of the customer.';\n vm.toastData.show = true;\n }\n function initGatConstants(businessFunction, addedSpec, pageTitle, bilDel, billNotif, payConfrm, payUpdt, billPrint, prePay, ppyAuto) {\n vm.gatConstants.businessFunction = businessFunction;\n vm.gatConstants.addedSpec = addedSpec;\n vm.gatConstants.pageTitle = pageTitle;\n vm.gatConstants.paperlessBilling = bilDel;\n vm.gatConstants.billingNotifications = billNotif;\n vm.gatConstants.paymentConfirmations = payConfrm;\n vm.gatConstants.paymentUpdates = payUpdt;\n vm.gatConstants.billPrint = billPrint;\n vm.gatConstants.lowBalAlerts = prePay;\n vm.gatConstants.autoReload = ppyAuto;\n }\n function recordRadioGatAction(action, card) {\n if (vm.gatRadioToggle) {\n // applying workaround because click event on cc-radio-button firing twice for some reason ¯\\_(ツ)_/¯\n vm.gatRadioToggle = false;\n return;\n } else vm.gatRadioToggle = true;\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: card,\r\n });*/\n }\n function gatNewComm(action, label, verify) {\n if (verify) {\n vm.isvalidSubmit = false;\n } else {\n vm.isvalidSubmit = true;\n notificationHelper.sendEventAttribute({\n workFlow: vm.gatConstants.businessFunction,\n buttonText: action,\n headline: vm.gatActiveCard,\n subheadline: label\n });\n }\n }\n function gatContinuePaperless(action, label) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle('BILL_DEL'),\r\n subheadline: label,\r\n });*/\n }\n function sendAddNotification(notifId, action) {\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\n }\n function sendDelete(notifId, channelTxt, label) {\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\n }\n function gatRRLearnMore(action) {\n notificationHelper.sendEventAttribute({\n workFlow: vm.gatConstants.businessFunction,\n buttonText: action,\n headline: vm.gatConstants.addedSpec,\n subheadline: vm.indexToCardTitle(7)\n });\n }\n}\napp.controller('PaymentsPreferencesController', PaymentsPreferencesController);\nPaymentsPreferencesController.$inject = ['genericHelperService', 'NotificationPreferencesHelperService', 'assetService', 'sessionStorageService', '$rootScope'];\nfunction PaymentsPreferencesController(genericHelperService, notificationHelper, assetService, sessionStorageService, $rootScope) {\n /* Global Vars */\n\n var vm = this;\n\n /* Scope Vars */\n vm.cardsModel = [];\n vm.chan_opt = [];\n vm.comm_opt = [];\n vm.channelItemsDDList = null;\n vm.preferencesReady = false;\n vm.notificationPreferences = null;\n vm.emailToDelete = null;\n vm.phoneToDelete = null;\n vm.notificationToConfirm = null;\n vm.notificationDropdowns = {\n PAY_REMIND: {\n channel: [],\n communication: []\n },\n PAY_CONFRM: {\n channel: [],\n communication: []\n }\n };\n vm.currentNotifModal = {\n title: '',\n type: '',\n notifIdModal: '',\n channelIdModal: null,\n enrolledStatus: false\n };\n\n /* Function Declarations */\n\n vm.cancelChange = cancelChange;\n vm.deleteNotification = deleteNotification;\n vm.addNotification = addNotification;\n vm.dropChannel = dropChannel;\n vm.dropCommunication = dropCommunication;\n vm.cancelChanges = cancelChanges;\n vm.saveChanges = saveChanges;\n vm.changeFormatDetailed = changeFormatDetailed;\n vm.enrolledNotif = enrolledNotif;\n vm.saveNewCommunication = saveNewCommunication;\n vm.handleEnrollment = handleEnrollment;\n vm.cancelModal = cancelModal;\n vm.checkPlaceholder = checkPlaceholder;\n vm.sendNotification = sendNotification;\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\n vm.sendPayment = sendPayment;\n vm.sendEditPayments = sendEditPayments;\n vm.phonesTypes = [];\n\n /* Function Definitions */\n function dropChannel(model, extra) {\n var data = vm.notificationPreferences;\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n function dropCommunication(model, extra) {\n var data = vm.notificationPreferences;\n var addNew = notificationHelper.communicationChange(model, extra, vm.currentNotifModal, data);\n if (addNew) angular.element('#BillingAddNewCommunicationModal').modal('show');\n }\n function saveNewCommunication(saveChanges) {\n var data = vm.notificationPreferences;\n var notifId = vm.currentNotifModal.notifIdModal;\n notificationHelper.createNewCommunication(saveChanges, notifId, data, vm.currentNotifModal, vm.communicationOptions);\n notificationHelper.updateNotif(notifId, vm.communicationOptions, vm.notificationDropdowns, data);\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n }\n function changeFormatDetailed(active, notifId) {\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n currentNotif.format_condensed = !currentNotif.format_detailed;\n }\n function enrolledNotif(notifId, enrolledStatus, title) {\n angular.element('#ModalManageNotificationPreferenceChange').modal('show');\n vm.currentNotifModal.notifIdModal = notifId;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.currentNotifModal.title = title;\n }\n function cancelModal() {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function handleEnrollment(enrolledStatus) {\n if (enrolledStatus) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.enrolledNotif(vm.currentNotifModal.notifIdModal, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n } else if (!enrolledStatus) {\n var newData = _.find(vm.notificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.notifications = [];\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, vm.notificationPreferences, currentData);\n newData.enrolled = false;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n }\n function setModels() {\n var data = vm.notificationPreferences;\n vm.preferencesReady = true;\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.notifications) {\n notificationHelper.setNotifications(cards.id, vm.communicationOptions, vm.notificationDropdowns, data);\n } else {\n cards.deleted = 5;\n cards.notifications = [];\n }\n });\n }\n function addNotification(notifId) {\n var data = vm.notificationPreferences;\n var phones = vm.communicationOptions.phones;\n notificationHelper.addNotification(notifId, phones, vm.notificationDropdowns, data);\n }\n function cancelChanges(notifId) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.cancelChanges(notifId, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n }\n function saveChanges(notifId) {\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(notifId, newData, currentData);\n }\n function deleteNotification(notifId, dropDownIndex) {\n var data = vm.notificationPreferences;\n notificationHelper.deleteNotification(notifId, dropDownIndex, data, vm.notificationDropdowns);\n }\n function cancelChange(notification) {\n notification.value = !notification.value;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function getPreferences(preferences, comm_opt) {\n vm.notificationPreferences = preferences;\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\n vm.cardsModel = vm.cardsModel.map(function (item) {\n if (item.notifications) item.notifications = genericHelperService.notReferencesArrayObjects(item.notifications);else item.notifications = [];\n return item;\n });\n vm.communicationOptions = comm_opt;\n if (vm.communicationOptions.phones.length < 5) vm.communicationOptions.phones.push(assetService.notifPref.addNewComm.phone);\n if (vm.communicationOptions.emails.length < 5) vm.communicationOptions.emails.push(assetService.notifPref.addNewComm.email);\n }\n function load() {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n var currComm = {\n phones: [],\n emails: []\n };\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.payments);\n currComm.phones = sessionStorageService.get(assetService.notifPref.sessionStorage.commOpt.notifPhones);\n currComm.emails = sessionStorageService.get(assetService.storageKeys.globalAccounts.emails);\n getPreferences(currPref, currComm);\n setModels();\n }\n\n /* Initialization */\n function init() {\n load();\n }\n init();\n function sendPayment(index, flagToggle) {\n var outage = {\n event: 'fire-vpv',\n 'vpv-name': '/vpv/authenticated/notification-preferences/payments/'\n };\n switch (index) {\n case 0:\n outage['vpv-name'] = outage['vpv-name'].concat('payment-reminder/');\n break;\n case 1:\n outage['vpv-name'] = outage['vpv-name'].concat('payment-confirmation/');\n break;\n }\n outage['vpv-name'] = flagToggle ? outage['vpv-name'].concat('ON') : outage['vpv-name'].concat('OFF');\n dataLayer.push(outage);\n }\n function sendNotification(stringToConcat) {\n var vpvName = '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\n $rootScope.virtualPagePush('fire-vpv', vpvName);\n }\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\n return stringBase.concat(stringToConcat);\n }\n function sendEditPayments(index, concatEdit) {\n var outage = {\n 'event-category': 'notification_preferences',\n 'event-action': 'edit',\n 'event-label': 'payments-|-',\n event: 'fire-event'\n };\n outage['event-action'] = outage['event-action'].concat(concatEdit);\n outage['event-label'] = index === 1 ? outage['event-label'].concat('payment-reminder') : outage['event-label'].concat('payment-confirmation');\n dataLayer.push(outage);\n }\n}\napp.controller('OutagesPreferencesController', OutagesPreferencesController);\nOutagesPreferencesController.$inject = ['genericHelperService', 'NotificationPreferencesHelperService', 'assetService', 'sessionStorageService', '$scope', '$rootScope', '$timeout', '$window', 'commongaTaggingService', 'broadcastService', '$document'];\nfunction OutagesPreferencesController(genericHelperService, notificationHelper, assetService, sessionStorageService, $scope, $rootScope, $timeout, $window, commongaTaggingService, broadcastService, $document) {\n /* Global Vars */\n\n var vm = this;\n var currentCommunication = {};\n var cardName = '';\n\n /* Scope Vars */\n vm.cardsModel = [];\n vm.chan_opt = [];\n vm.comm_opt = [];\n vm.channelItemsDDList = null;\n vm.preferencesReady = false;\n vm.notificationPreferences = null;\n vm.emailToDelete = null;\n vm.phoneToDelete = null;\n vm.notificationToConfirm = null;\n vm.showLoader = {};\n vm.notificationDropdowns = {\n ACTIVE_OUT: {\n channel: [],\n communication: []\n },\n SRVO_NOT: {\n channel: [],\n communication: []\n },\n APPT_REM: {\n channel: [],\n communication: []\n },\n PPY_DISC: {\n channel: [],\n communication: []\n }\n };\n vm.currentNotifModal = {\n title: '',\n type: '',\n communicationModel: '',\n notifIdModal: '',\n channelIdModal: null,\n enrolledStatus: false,\n disableSave: true\n };\n vm.toastData = {\n option: '',\n show: false,\n messageOption: '',\n workFlow: 'toast notification'\n };\n vm.gatConstants = {};\n vm.gatActiveCard = '';\n vm.modalValue = '';\n vm.isvalidSubmit = false;\n vm.isDuplicate = false;\n vm.clickedSave = {};\n vm.showError = {};\n vm.mobileView = window.innerWidth <= 705;\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\n vm.typeError = false;\n vm.errorDelete = false;\n\n /* Function Declarations */\n vm.addCommVPV = addCommVPV;\n vm.inlineVPV = inlineVPV;\n vm.errorModalVPV = errorModalVPV;\n vm.cancelChange = cancelChange;\n vm.deleteNotification = deleteNotification;\n vm.addNotification = addNotification;\n vm.dropChannel = dropChannel;\n vm.dropCommunication = dropCommunication;\n vm.cancelChanges = cancelChanges;\n vm.saveChanges = saveChanges;\n vm.changeFormatDetailed = changeFormatDetailed;\n vm.checkPlaceholder = checkPlaceholder;\n vm.enrolledNotif = enrolledNotif;\n vm.saveNewCommunication = saveNewCommunication;\n vm.handleEnrollment = handleEnrollment;\n vm.sendNotification = sendNotification;\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\n vm.sendOutage = sendOutage;\n vm.sendEditOutage = sendEditOutage;\n vm.phonesTypes = [];\n vm.disableSave = {};\n vm.disableModalSave = true;\n vm.closeToast = closeToast;\n vm.getSuccessMessage = getSuccessMessage;\n vm.isIdentical = isIdentical;\n vm.isUnique = isUnique;\n vm.indexToCardTitle = indexToCardTitle;\n vm.initGatConstants = initGatConstants;\n vm.gatNewComm = gatNewComm;\n vm.sendAddNotification = sendAddNotification;\n vm.sendDelete = sendDelete;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.communicationVal = communicationVal;\n vm.showModalLoader = false;\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n //vm.resetAddCommunicationModalForm = resetAddCommunicationModalForm;\n /**\r\n * Emit and Broadcast events\r\n */\n\n $scope.$on(assetService.events.addNewCommunication, function (event, data) {\n var newNotif = notificationHelper.getCurrentNotification(data, vm.notificationPreferences);\n newNotif.loadingChanges = false;\n notificationHelper.updateNotif(data, vm.communicationOptions, vm.notificationDropdowns, vm.notificationPreferences);\n prepaidChanels();\n $scope.$parent.currComm = vm.communicationOptions;\n });\n function prepaidChanels() {\n if ($scope.$parent.isPrepaid) {\n var keyList = Object.keys(vm.notificationDropdowns);\n keyList.forEach(function (notifsId) {\n for (var _index = 0; _index < vm.notificationDropdowns[notifsId].channel.length; _index++) {\n vm.notificationDropdowns[notifsId].channel[_index] = assetService.notifPref.prepaidChanels;\n }\n });\n }\n }\n\n //GAT for ADD/DELETE COMMUNICATION\n function gatAddDeleteEvent(notifId, newData, oldData) {\n var indexNew = newData.findIndex(function (x) {\n return x.id == notifId;\n });\n var lenOld = 0;\n var indexOld = '';\n if (oldData != undefined) {\n indexOld = oldData.findIndex(function (x) {\n return x.id == notifId;\n });\n }\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\n lenOld = Object.keys(oldData[indexOld].notifications).length;\n }\n var cardName = subheadline(notifId);\n var count = 0;\n var newValue = '';\n var type = '';\n if (lenOld == 0) {\n newData[indexNew].notifications.forEach(function (notifNew) {\n type = notifNew.channel == 'TXT' ? 'text' : notifNew.channel == 'VOIC' ? 'call' : 'email';\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n });\n } else {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n type = 'email';\n newValue = notifNew.communicationText;\n }\n oldData[indexOld].notifications.forEach(function (notifOld) {\n if (notifOld.channel == notifNew.channel && (newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n count = 1;\n }\n });\n if (count == 0) {\n pushDL('preferences-notifications_communications-methods', 'add', type + '-|-' + cardName);\n }\n count = 0;\n });\n }\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\n var counter = 0,\n deleteFlag = false;\n oldData[indexOld].notifications.forEach(function (notifOld) {\n newData[indexNew].notifications.forEach(function (notifNew) {\n if (notifNew.channel != 'MAIL') {\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\n } else {\n newValue = notifNew.communicationText;\n }\n if (notifOld.channel == notifNew.channel && (notifOld.communicationText != undefined && notifOld.communicationText == 'Add New Email' || notifOld.communicationText == 'Add New Phone Number' || newValue.toLowerCase() === notifOld.communication.toLowerCase() || notifOld.communicationText != undefined && newValue.toLowerCase() === notifOld.communicationText.toLowerCase())) {\n counter = 1;\n }\n });\n if (counter == 0) {\n deleteFlag = true;\n type = notifOld.channel == 'TXT' ? 'text' : notifOld.channel == 'VOIC' ? 'call' : 'email';\n pushDL('preferences-notifications_communications-methods', 'delete', type + '-|-' + cardName);\n }\n counter = 0;\n });\n if (deleteFlag && vm.errorDelete) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/outages-and-services/delete-success');\n }\n }\n }\n function subheadline(notifId) {\n if (notifId == 'ACTIVE_OUT') {\n return 'outage-alerts';\n }\n if (notifId == 'SRVO_NOT') {\n return 'service-orders';\n }\n if (notifId == 'APPT_REM') {\n return 'appointments';\n }\n if (notifId == 'PPY_DISC') {\n return 'electric-connectdisconnect';\n }\n }\n function errorModalVPV(type, req, duplicate, pattern, phoneType, phoneInvalid) {\n var notifId = vm.currentNotifModal.notifIdModal;\n var cardName = subheadline(notifId);\n if (req) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-an-email', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-phone-number', cardName);\n }\n }\n if (duplicate) {\n if (type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-email-address-already-exists', cardName);\n } else {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-phone-number-address-already-exists', cardName);\n }\n }\n if (pattern && type == 'email') {\n pushDL('preferences-notifications_field-validation-error', 'email-|-please-enter-a-valid-email', cardName);\n }\n if (phoneType && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-type-|-please-select-a-phone-type', cardName);\n }\n if (phoneInvalid && type == 'phone') {\n pushDL('preferences-notifications_field-validation-error', 'phone-number-|-please-enter-a-valid-phone-number', cardName);\n }\n }\n function inlineVPV(notifId, channel) {\n var cardName = subheadline(notifId);\n pushDL('preferences-notifications_field-validation-error', channel.toLowerCase() + '-|-please-select-a-communication', cardName);\n }\n function addCommVPV(notifId) {\n var tempData = sessionStorageService.get(assetService.notifPref.sessionStorage.outage);\n var index = tempData.findIndex(function (x) {\n return x.id == notifId;\n });\n var len = Object.keys(tempData[index].notifications).length;\n var cardName = subheadline(notifId);\n if (len > 0 && len < 10) {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + cardName + '/outages-and-services/add-communication');\n }\n }\n\n /* Function Definitions */\n function dropChannel(model, extra) {\n var data = vm.notificationPreferences;\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n function dropCommunication(model, extra) {\n var data = vm.notificationPreferences;\n var addNew = notificationHelper.communicationChange(model, extra, vm.currentNotifModal, data);\n var notifId = extra.split('/')[0];\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.id === notifId) {\n cards.notifications[vm.indexNumb].communicationText = model.text;\n }\n });\n if (model.text !== '') {\n vm.disableSave[notifId] = vm.isIdentical(notifId);\n } else vm.disableSave[notifId] = true;\n if (addNew) {\n if (vm.modelSelected === 'TXT') {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypesMobile, null, null);\n } else {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n }\n vm.modalForm.$setUntouched();\n vm.currentNotifModal.communicationModel = '';\n vm.showModalLoader = false;\n vm.isDuplicate = false;\n vm.typeError = false;\n angular.element('#BillingAddNewCommunicationModal').modal('show');\n $('#AddCommunication').val('');\n vm.gatActiveCard = vm.indexToCardTitle(vm.currentNotifModal.notifIdModal);\n var _cardName = subheadline(notifId);\n if (model.text != 'Add New Phone Number') {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/outages-and-services/add-communication/add-new-email');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName + '/outages-and-services/add-communication/add-new-phone-number');\n }\n }\n }\n function generateGATEvents(notifId, showError, getCode, getMsg) {\n cardName = subheadline(notifId);\n if (showError == 'S') {\n pushVPV('/vpv/de/card/preferences-notifications/success/' + cardName + '/outages-and-services/add-communication/preference-successfully-saved');\n } else if (showError == 'E') {\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\n if (vm.preferenceAction === 'UPDATE') {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl), cardName);\n } else {\n pushDL('preferences-notifications_error', getCode + '-|-' + $rootScope.dataLayerFormat(getMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.CreatePreferences), cardName);\n }\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/outages-and-services/' + getCode + '/trouble-saving-your-changes');\n } else {\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/outages-and-services/' + getCode + '/trouble-updating-your-changes');\n }\n }\n }\n function saveNewCommunication(saveChanges, button) {\n vm.typeError = false;\n if (button === 'Cancel') {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n var data = vm.notificationPreferences;\n var notifId = vm.currentNotifModal.notifIdModal;\n notificationHelper.resetChanges(notifId, data, vm.currentNotifModal).then(function () {\n return;\n });\n } else {\n saveChanges = vm.isvalidSubmit;\n saveChanges == true ? vm.showModalLoader = true : vm.showModalLoader = false;\n vm.modalForm.AddCommunication.$touched = true;\n var _data = vm.notificationPreferences;\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var _notifId = vm.currentNotifModal.notifIdModal;\n vm.modalValue = vm.currentNotifModal.communicationModel ? vm.currentNotifModal.communicationModel : '';\n if (vm.modalForm.AddCommunication.$error.email && vm.currentNotifModal.communicationModel == undefined) {\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n if (vm.currentNotifModal.communicationModel != '' && vm.currentNotifModal.phoneType == undefined) {\n vm.typeError = true;\n }\n if (saveChanges) {\n notificationHelper.createNewCommunication(saveChanges, _notifId, _data, vm.currentNotifModal, vm.communicationOptions).then(function (result) {\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\n if ($rootScope.emailErrorModal !== true && $rootScope.phoneErrorModal !== true && saveChanges !== false) {\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n } else {\n if (result === undefined) {\n saveNewCommunication(false, 'Cancel');\n }\n vm.showModalLoader = false;\n $('#AddCommunication').val(vm.modalInputValue);\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\n }\n }); //.then(function(){vm.disableSave = isIdentical(notifId);});\n }\n if (saveChanges === true) {\n vm.disableSave[_notifId] = false;\n } else {\n vm.disableSave[_notifId] = vm.isIdentical(_notifId);\n }\n //vm.disableSave[notifId] = false; //vm.isIdentical(notifId);\n\n /*if (saveChanges === true) {\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n }*/\n }\n }\n\n // function resetAddCommunicationModalForm(modalForm) {\n // modalForm.$setUntouched();\n // }\n\n function changeFormatDetailed(active, notifId) {\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n currentNotif.format_condensed = !currentNotif.format_detailed;\n }\n function enrolledNotif(notifId, enrolledStatus, title) {\n vm.clickedSave[notifId] = false;\n vm.currentNotifModal.notifIdModal = notifId;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.currentNotifModal.title = title;\n handleEnrollment(vm.currentNotifModal.enrolledStatus, vm.currentNotifModal.notifIdModal);\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function handleEnrollment(enrolledStatus, notifId) {\n if (enrolledStatus) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n vm.notificationDropdowns[notifId].channel = [];\n vm.notificationDropdowns[notifId].communication = [];\n notificationHelper.enrolledNotif(vm.currentNotifModal.notifIdModal, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n var _cardName2 = subheadline(vm.currentNotifModal.notifIdModal);\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/outages-and-services/add-communication');\n pushVPV('/vpv/de/card/preferences-notifications/load/' + _cardName2 + '/outages-and-services/save');\n } else if (!enrolledStatus) {\n //creating a temporary copy of notificationPrefences to send in the API call - if we send original the front end\n // is getting affected white api returns a response\n var tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences));\n var newData = _.find(tempNotificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.enrolled = false;\n newData.notifications = [];\n var currentData = vm.cardsModel;\n vm.scrollY = window.scrollY;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, tempNotificationPreferences, currentData, currentCommunication).then(function (result) {\n var _result$, _result$2;\n if ((_result$ = result[0]) !== null && _result$ !== void 0 && _result$.ReturnCodes && ((_result$2 = result[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCodes[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCode1) === null || _result$2 === void 0 ? void 0 : _result$2.Type) === 'E') {\n var _result$0$ReturnCodes, _result$0$ReturnCodes2, _result$0$ReturnCodes3;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\n var showType = (_result$0$ReturnCodes = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes === void 0 ? void 0 : _result$0$ReturnCodes.Type;\n var returnCode = (_result$0$ReturnCodes2 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes2 === void 0 ? void 0 : _result$0$ReturnCodes2.MessageNum;\n var prefError = (_result$0$ReturnCodes3 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes3 === void 0 ? void 0 : _result$0$ReturnCodes3.Message;\n $rootScope.outagesBanner[vm.currentNotifModal.notifIdModal] = {\n type: 'E',\n message: ''\n };\n $rootScope.updateError = true;\n generateGATEvents(vm.currentNotifModal.notifIdModal, showType, returnCode, prefError);\n } else {\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\n vm.notificationPreferences[index].loadingChanges = false;\n vm.notificationPreferences = tempNotificationPreferences;\n newData.enrolled = false;\n var _cardName3 = subheadline(vm.currentNotifModal.notifIdModal);\n if (result[0] != undefined) {\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName3 + '/outages-and-services/off');\n }\n sessionStorageService.set(assetService.notifPref.sessionStorage.outage, vm.notificationPreferences);\n }\n });\n broadcastService.refreshPreferences();\n }\n }\n function setModels() {\n var data = vm.notificationPreferences;\n vm.notificationPreferences.forEach(function (x) {\n vm.disableSave[x.id] = true;\n vm.clickedSave[x.id] = false;\n vm.showError[x.id] = [];\n vm.showLoader[x.id] = false;\n });\n vm.preferencesReady = true;\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.notifications) {\n notificationHelper.setNotifications(cards.id, vm.communicationOptions, vm.notificationDropdowns, data);\n } else {\n cards.deleted = 10;\n cards.notifications = [];\n }\n cards.editionMode = false;\n });\n notificationHelper.setCommunicationValue(vm.cardsModel, vm.notificationPreferences, vm.communicationOptions);\n prepaidChanels();\n }\n function addNotification(notifId) {\n var data = vm.notificationPreferences;\n var phones = vm.communicationOptions.phones;\n var newNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.cardsModel);\n if (newNotif == currentNotif) {\n vm.disableSave[notifId] = true;\n } else {\n notificationHelper.addNotification(notifId, phones, vm.notificationDropdowns, data);\n }\n prepaidChanels();\n }\n function cancelChanges(notifId) {\n vm.showError[notifId] = [];\n vm.clickedSave[notifId] = false;\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.cancelChanges(notifId, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n var cardName = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/clickthrough/' + cardName + '/outages-and-services/cancel');\n\n /*if ($scope.$parent.isPrepaid) {\r\n vm.notificationPreferences.forEach(cards => {\r\n cards.enrolled = true;\r\n });\r\n }*/\n }\n document.addEventListener('click', function () {\n if (!vm.noChanges) {\n $rootScope.outagesBanner = {};\n }\n $rootScope.emailErrorModal = false;\n $rootScope.phoneErrorModal = false;\n vm.noChanges = false;\n });\n function saveChanges(notifId, index, madeChanges) {\n $rootScope.outagesBanner[notifId] = {\n type: '',\n message: ''\n };\n if (madeChanges) {\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n //vm.notificationPreferences[index].loadingChanges = true;\n vm.showLoader[notifId] = true;\n notificationHelper.saveChanges(notifId, newData, currentData, currentCommunication).then(function (result) {\n var _result$0$ReturnCodes4, _result$0$ReturnCodes5, _result$0$ReturnCodes6, _result$0$ReturnCodes7;\n vm.showType = (_result$0$ReturnCodes4 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes4 === void 0 ? void 0 : _result$0$ReturnCodes4.Type;\n vm.returnCode = (_result$0$ReturnCodes5 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes5 === void 0 ? void 0 : _result$0$ReturnCodes5.MessageNum;\n vm.prefError = (_result$0$ReturnCodes6 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes6 === void 0 ? void 0 : _result$0$ReturnCodes6.Message;\n if (result[0].ReturnCodes && ((_result$0$ReturnCodes7 = result[0].ReturnCodes[0].ReturnCode1) === null || _result$0$ReturnCodes7 === void 0 ? void 0 : _result$0$ReturnCodes7.Type) === 'E') {\n vm.showLoader[notifId] = false;\n $rootScope.outagesBanner[notifId] = {\n type: 'E',\n message: ''\n };\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n sessionStorageService.set(assetService.notifPref.sessionStorage.outage, vm.notificationPreferences);\n } else {\n vm.showLoader[notifId] = false;\n $rootScope.outagesBanner[notifId] = {\n type: 'S',\n message: ''\n };\n vm.notificationPreferences[index].loadingChanges = false;\n var oldData = sessionStorageService.get(assetService.notifPref.sessionStorage.outage);\n gatAddDeleteEvent(notifId, newData, oldData);\n if (vm.notificationPreferences[index].confirmButton != 'Update') {\n var _cardName4 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/toggle/' + _cardName4 + '/outages-and-services/toggle/on');\n }\n // vm.toastData.option = 'success';\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\n // vm.toastData.show = true;\n\n sessionStorageService.set(assetService.notifPref.sessionStorage.outage, vm.notificationPreferences);\n }\n broadcastService.refreshPreferences();\n $window.scrollTo(0, 0);\n }).catch(function () {\n vm.showLoader[notifId] = false;\n $rootScope.outagesBanner[notifId] = {\n type: 'E',\n message: 'Unexpected error'\n };\n vm.notificationPreferences[index].loadingChanges = false;\n // vm.toastData.option = 'error';\n // vm.toastData.messageOption = 'Unexpected error';\n // vm.toastData.show = true;\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );*/\n broadcastService.refreshPreferences();\n $window.scrollTo(0, 0);\n }).then(function () {\n generateGATEvents(notifId, vm.showType, vm.returnCode, vm.prefError);\n });\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );*/\n //broadcastService.refreshPreferences();\n vm.clickedSave[notifId] = false;\n // $window.scrollTo(0, 0);\n } else {\n var _newData = vm.notificationPreferences;\n var _currentData = vm.cardsModel;\n var result = notificationHelper.compareChanges(notifId, _newData, _currentData);\n if (result) {\n vm.showLoader[notifId] = false;\n vm.noChanges = true;\n $rootScope.outagesBanner[notifId] = {\n type: 'N',\n message: ''\n };\n var _cardName5 = subheadline(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + _cardName5 + '/outages-and-services/na/make-change-to-update-your-preference');\n pushDL('preferences-notifications_error', 'na-|-make-change-to-update-your-preference-|-na', _cardName5);\n }\n }\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function deleteNotification(notifId, dropDownIndex) {\n var data = vm.notificationPreferences;\n var cardName = subheadline(notifId);\n var globaldata = sessionStorageService.get(assetService.notifPref.sessionStorage.outage);\n var index = globaldata.findIndex(function (x) {\n return x.id == notifId;\n });\n globaldata = globaldata[index].notifications;\n var deleteValue = data[index].notifications[dropDownIndex].communicationText;\n var channelType = data[index].notifications[dropDownIndex].channel;\n deleteValue = deleteValue.toLowerCase();\n if (channelType != \"MAIL\" && deleteValue != 'send my communication to') {\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\n }\n if (deleteValue != 'send my communication to' && globaldata != undefined) {\n var commText = '';\n globaldata.forEach(function (notif) {\n if (notif.communicationText != undefined) {\n commText = notif.communicationText.toLowerCase();\n } else {\n commText = notif.communication.toLowerCase();\n }\n if (commText === deleteValue && notif.channel == channelType) {\n vm.errorDelete = true;\n var type = notif.channel == 'TXT' ? 'text' : notif.channel == 'VOIC' ? 'call' : 'email';\n pushVPV('/vpv/de/card/preferences-notifications/intent/' + cardName + '/outages-and-services/delete-intent');\n pushDL('preferences-notifications_communications-methods', 'delete-|-intent', type + '-|-' + cardName);\n }\n });\n }\n vm.showError[notifId].splice(dropDownIndex, 1);\n notificationHelper.deleteNotification(notifId, dropDownIndex, data, vm.notificationDropdowns);\n if (vm.notificationPreferences.filter(function (element) {\n return element.notifications;\n }) == '') {\n vm.disableSave[notifId] = true;\n } else vm.disableSave[notifId] = vm.isIdentical(notifId);\n // sessionStorageService.set(\n // assetService.notifPref.sessionStorage.outage,\n // vm.notificationPreferences,\n // );\n notificationHelper.dropdownFilter(notifId, vm.communicationOptions, vm.enrolledPref, '');\n }\n function cancelChange(notification) {\n notification.value = !notification.value;\n }\n function communicationVal(model, extra) {\n if (model === 'Text') {\n model = 'TXT';\n } else if (model === 'Call') {\n model = 'VOIC';\n } else if (model === 'Email') {\n model = 'MAIL';\n }\n var data = vm.notificationPreferences;\n var cardId = extra.split('/')[0];\n vm.modelSelected = model;\n notificationHelper.dropdownFilter(cardId, vm.communicationOptions, vm.enrolledPref, model);\n vm.displayOptions = sessionStorageService.get('displayOptions');\n notificationHelper.commChange(model, extra, vm.displayOptions, vm.notificationDropdowns, data);\n }\n function getPreferences(preferences, comm_opt) {\n vm.notificationPreferences = preferences;\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\n vm.cardsModel = vm.cardsModel.map(function (item) {\n if (item.notifications) item.notifications = genericHelperService.notReferencesArrayObjects(item.notifications);else item.notifications = [];\n return item;\n });\n vm.communicationOptions = comm_opt;\n }\n function load() {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.outage);\n vm.enrolledPref = currPref;\n currentCommunication = $scope.$parent.currComm;\n getPreferences(currPref, currentCommunication);\n setModels();\n }\n\n /* Initialization */\n function init() {\n load();\n }\n init();\n function sendOutage(notifId, flagToggle) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n function sendNotification(stringToConcat) {\n var vpvName = '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\n /*$rootScope.virtualPagePush('fire-vpv', vpvName);*/\n }\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\n return stringBase.concat(stringToConcat);\n }\n function sendEditOutage(notifId, concatEdit, madeChanges) {\n $rootScope.outagesBanner = {};\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\n var param = {\n workFlow: vm.gatConstants.businessFunction,\n buttonText: concatEdit,\n headline: vm.gatConstants.addedSpec,\n subheadline: vm.indexToCardTitle(notifId)\n };\n vm.buttonClicked = concatEdit;\n if (concatEdit === 'Update') {\n param.buttonText = 'edit';\n param.addedSpec = concatEdit;\n $rootScope.updateError = true;\n }\n if (concatEdit === 'Save') {\n $rootScope.updateError = false;\n }\n /*notificationHelper.sendEventAttribute(param);*/\n } else {\n var i = 0;\n vm.showError[notifId] = [];\n var newData = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n newData.notifications.forEach(function (x) {\n if ((x.communicationText == 'Send My Communication To' || x.communicationText == 'Add New Email') && x.communication == 'Send My Communication To' && x.channelText != 'Method') {\n inlineVPV(notifId, x.channelText);\n }\n });\n newData.notifications.forEach(function (x) {\n vm.showError[notifId].push(x.classError);\n i += 1;\n });\n vm.clickedSave[notifId] = true;\n }\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function closeToast() {\n vm.toastData.show = '';\n }\n function getSuccessMessage(index) {\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n var titleTxt = '';\r\n switch(index){\r\n case 0:\r\n titleTxt = $scope.$parent.isPrepaid ? \"Electric Connect/Disconnect\" : \"Outages Alerts\";\r\n break;\r\n case 1:\r\n titleTxt = \"Service Orders\";\r\n break;\r\n case 2:\r\n titleTxt = \"Appointments\";\r\n break;\r\n default: titleTxt = 'Item';\r\n }\r\n return \"Success! \" + titleTxt + \" saved successfully!\"; */\n return 'Success! Changes saved.';\n }\n function indexToCardTitle(notifId) {\n var titleTxt = '';\n switch (notifId) {\n case 'ACTIVE_OUT':\n return vm.gatConstants.outageAlerts;\n case 'SRVO_NOT':\n return vm.gatConstants.serviceOrders;\n case 'APPT_REM':\n return vm.gatConstants.Appointments;\n case 'PPY_DISC':\n return vm.gatConstants.ElectricConnectDisconnect;\n default:\n titleTxt = 'Item';\n }\n }\n function isIdentical(notifId) {\n var enteredPairs = getPairs(vm.notificationPreferences, notifId);\n var currentPairs = getPairs(vm.cardsModel, notifId);\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\n }\n function getPairs(comms, notifId) {\n var copy = genericHelperService.notReferencesArrayObjects(comms.filter(function (x) {\n return x.id === notifId;\n })[0].notifications);\n return copy.sort(function (a, b) {\n if (a.channel !== b.channel)\n // order by channel, then by communication\n return a.channel.localeCompare(b.channel);\n return a.communication.localeCompare(b.communication);\n }).map(function (x) {\n return {\n channel: x.channel,\n communication: x.communication\n };\n });\n }\n function isUnique() {\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(vm.currentNotifModal, vm.communicationOptions);\n vm.isDuplicate = vm.currentNotifModal.disableSave;\n\n //To check for duplicate emails, length > 64\n if (vm.currentNotifModal.type == 'emails') {\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\n var defaultItem = vm.communicationOptions.emails.filter(function (itm) {\n return itm.text === vm.modalInputValue;\n });\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\n }\n }\n function initGatConstants(businessFunction, addedSpec, ActiveOut, ServoNot, ApptRem, PPYDesc) {\n vm.gatConstants.businessFunction = businessFunction;\n vm.gatConstants.addedSpec = addedSpec;\n vm.gatConstants.outageAlerts = ActiveOut;\n vm.gatConstants.serviceOrders = ServoNot;\n vm.gatConstants.Appointments = ApptRem;\n vm.gatConstants.ElectricConnectDisconnect = PPYDesc;\n }\n function gatNewComm(action, label, verify) {\n if (verify) {\n vm.isvalidSubmit = false;\n } else {\n vm.isvalidSubmit = true;\n notificationHelper.sendEventAttribute({\n workFlow: vm.gatConstants.businessFunction,\n buttonText: action,\n headline: vm.gatActiveCard,\n subheadline: label\n });\n }\n }\n function sendAddNotification(notifId, action) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n function sendDelete(notifId, channelTxt, label) {\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\n }\n}\napp.controller('ServiceOrdersPreferencesController', ServiceOrdersPreferencesController);\nServiceOrdersPreferencesController.$inject = ['genericHelperService', 'NotificationPreferencesHelperService', 'assetService', 'sessionStorageService', '$rootScope'];\nfunction ServiceOrdersPreferencesController(genericHelperService, notificationHelper, assetService, sessionStorageService, $rootScope) {\n /* Global Vars */\n\n var vm = this;\n\n /* Scope Vars */\n vm.cardsModel = [];\n vm.chan_opt = [];\n vm.comm_opt = [];\n vm.channelItemsDDList = null;\n vm.preferencesReady = false;\n vm.notificationPreferences = null;\n vm.emailToDelete = null;\n vm.phoneToDelete = null;\n vm.notificationToConfirm = null;\n vm.notificationDropdowns = {\n SRVO_NOT: {\n channel: [],\n communication: []\n }\n };\n vm.currentNotifModal = {\n title: '',\n type: '',\n notifIdModal: '',\n channelIdModal: null,\n enrolledStatus: false\n };\n\n /* Function Declarations */\n\n vm.cancelChange = cancelChange;\n vm.deleteNotification = deleteNotification;\n vm.addNotification = addNotification;\n vm.dropChannel = dropChannel;\n vm.dropCommunication = dropCommunication;\n vm.cancelChanges = cancelChanges;\n vm.checkPlaceholder = checkPlaceholder;\n vm.saveChanges = saveChanges;\n vm.changeFormatDetailed = changeFormatDetailed;\n vm.enrolledNotif = enrolledNotif;\n vm.saveNewCommunication = saveNewCommunication;\n vm.handleEnrollment = handleEnrollment;\n vm.cancelModal = cancelModal;\n vm.sendNotification = sendNotification;\n vm.phonesTypes = [];\n\n /* Function Definitions */\n function dropChannel(model, extra) {\n var data = vm.notificationPreferences;\n notificationHelper.channelChange(model, extra, vm.communicationOptions, vm.notificationDropdowns, data);\n }\n function dropCommunication(model, extra) {\n var data = vm.notificationPreferences;\n var addNew = notificationHelper.communicationChange(model, extra, vm.currentNotifModal, data);\n if (addNew) angular.element('#BillingAddNewCommunicationModal').modal('show');\n }\n function saveNewCommunication(saveChanges) {\n var data = vm.notificationPreferences;\n var notifId = vm.currentNotifModal.notifIdModal;\n notificationHelper.createNewCommunication(saveChanges, notifId, data, vm.currentNotifModal, vm.communicationOptions);\n notificationHelper.updateNotif(notifId, vm.communicationOptions, vm.notificationDropdowns, data);\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\n }\n function changeFormatDetailed(active, notifId) {\n var currentNotif = notificationHelper.getCurrentNotification(notifId, vm.notificationPreferences);\n currentNotif.format_condensed = !currentNotif.format_detailed;\n }\n function enrolledNotif(notifId, enrolledStatus, title) {\n angular.element('#ModalManageNotificationPreferenceChange').modal('show');\n vm.currentNotifModal.notifIdModal = notifId;\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\n vm.currentNotifModal.title = title;\n }\n function cancelModal() {\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function handleEnrollment(enrolledStatus) {\n if (enrolledStatus) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.enrolledNotif(vm.currentNotifModal.notifIdModal, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n } else if (!enrolledStatus) {\n var newData = _.find(vm.notificationPreferences, function (element) {\n return element.id === vm.currentNotifModal.notifIdModal;\n });\n newData.notifications = [];\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(vm.currentNotifModal.notifIdModal, vm.notificationPreferences, currentData);\n newData.enrolled = false;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n }\n function setModels() {\n var data = vm.notificationPreferences;\n vm.preferencesReady = true;\n vm.notificationPreferences.forEach(function (cards) {\n if (cards.notifications) {\n notificationHelper.setNotifications(cards.id, vm.communicationOptions, vm.notificationDropdowns, data);\n } else {\n cards.deleted = 5;\n cards.notifications = [];\n }\n });\n }\n function addNotification(notifId) {\n var data = vm.notificationPreferences;\n var phones = vm.communicationOptions.phones;\n notificationHelper.addNotification(notifId, phones, vm.notificationDropdowns, data);\n }\n function cancelChanges(notifId) {\n var data = vm.notificationPreferences;\n var dataModel = vm.cardsModel;\n notificationHelper.cancelChanges(notifId, data, dataModel, vm.notificationDropdowns, vm.communicationOptions);\n }\n function saveChanges(notifId) {\n var newData = vm.notificationPreferences;\n var currentData = vm.cardsModel;\n notificationHelper.saveChanges(notifId, newData, currentData);\n }\n function deleteNotification(notifId, dropDownIndex) {\n var data = vm.notificationPreferences;\n notificationHelper.deleteNotification(notifId, dropDownIndex, data, vm.notificationDropdowns);\n }\n function cancelChange(notification) {\n notification.value = !notification.value;\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\n }\n function checkPlaceholder() {\n setTimeout(function () {\n $('#AddCommunication').removeClass('ng-touched');\n }, '200');\n }\n function getPreferences(preferences, comm_opt) {\n vm.notificationPreferences = preferences;\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\n vm.cardsModel = vm.cardsModel.map(function (item) {\n if (item.notifications) item.notifications = genericHelperService.notReferencesArrayObjects(item.notifications);else item.notifications = [];\n return item;\n });\n vm.communicationOptions = comm_opt;\n if (vm.communicationOptions.phones.length < 5) vm.communicationOptions.phones.push(assetService.notifPref.addNewComm.phone);\n if (vm.communicationOptions.emails.length < 5) vm.communicationOptions.emails.push(assetService.notifPref.addNewComm.email);\n }\n function load() {\n vm.phonesTypes = genericHelperService.arrayToDrop(assetService.notifPref.phonesTypes, null, null);\n var currComm = {\n phones: [],\n emails: []\n };\n var currPref = sessionStorageService.get(assetService.notifPref.sessionStorage.servOrd);\n currComm.phones = sessionStorageService.get(assetService.notifPref.sessionStorage.commOpt.notifPhones);\n currComm.emails = sessionStorageService.get(assetService.storageKeys.globalAccounts.emails);\n getPreferences(currPref, currComm);\n setModels();\n }\n\n /* Initialization */\n function init() {\n load();\n }\n init();\n function sendNotification(stringToConcat) {\n var vpvName = '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\n vpvName = vpvName.concat(stringToConcat);\n $rootScope.virtualPagePush('fire-vpv', vpvName);\n }\n}\napp.factory('NotificationPreferencesFactory', function ($q, apiConfigService, apiApigeeConfigService, assetService, errorHandlingService, apiService, tokenFactory) {\n var getHeader = function getHeader() {\n var token = tokenFactory.getCCToken();\n var headers = assetService.apiHeaders.authorization;\n headers.Authorization = \"Bearer \".concat(token);\n return headers;\n };\n var getCommOpt = function getCommOpt(url) {\n var header = '';\n return $q(function (resolve, reject) {\n apiService.getDataAsync(url, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var getPreferences = function getPreferences(data) {\n var header = getHeader();\n var targetEndpointUrl = apiConfigService.get.readAndDerivePreferencesUrl(data);\n return $q(function (resolve, reject) {\n apiService.getDataAsync(targetEndpointUrl, header, false).then(function (result) {\n resolve(result);\n }, function (error) {\n reject(errorHandlingService.getException(error));\n });\n });\n };\n var updatePreferences = function updatePreferences(url, paymentPreferences) {\n var header = getHeader();\n return $q(function (resolve, reject) {\n apiService.putDataAsync(url, paymentPreferences, header).then(function (result) {\n resolve(result);\n }, function (error) {\n if (error.data) {\n reject({\n reason: error.data.fault.detail.errorcode,\n message: error.data.fault.faultstring,\n status: error.status\n });\n } else {\n reject({\n reason: assetService.errors.unknownError.reason,\n message: assetService.errors.unknownError.message,\n status: assetService.errors.unknownError.statusCode\n });\n }\n });\n });\n };\n return {\n getCommOpt: getCommOpt,\n getPreferences: getPreferences,\n updatePreferences: updatePreferences\n };\n});\napp.factory('NotificationPreferencesHelperService', function ($log, $rootScope, assetService, genericHelperService, createPreferencesService, sessionStorageService, commonService, updatePreferencesService, updatePhoneNumberService, maintainUserProfileService, dateHelperService, ebillEnrollKubraService, accountSearchService, $window, broadcastService, notificationPreferencesAssetsService, commongaTaggingService) {\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n var addressNumber = sessionStorageService.get(assetService.notifPref.sessionStorage.commOpt.addressNumber);\n var strings = notificationPreferencesAssetsService.strings;\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var isPrepaid = globalAccountInfo.accountSelected.prepaid;\n var getCurrentNotification = function getCurrentNotification(notifId, data) {\n return _.find(data, function (element) {\n return element.id === notifId;\n });\n };\n var beautifyPhone = function beautifyPhone(value) {\n if (value.length < 11) return \"(\".concat(value.substr(0, 3), \") \").concat(value.substr(3, 3), \"-\").concat(value.substr(6, 4));\n return value;\n };\n function createDropObj(dropList) {\n return dropList.map(function (element) {\n return {\n text: beautifyPhone(element),\n value: element\n };\n });\n }\n function createDrop(value, text, phones, phonesTextEnabled) {\n var dropObj = [];\n for (var _i = 0; _i < text.length; _i++) {\n var dropObjEntry = {\n value: value[_i],\n text: text[_i]\n };\n if (phones) {\n dropObjEntry.text = beautifyPhone(dropObjEntry.text);\n dropObjEntry.textEnabled = phonesTextEnabled[_i];\n }\n dropObj.push(dropObjEntry);\n }\n return dropObj;\n }\n function createDrop1(value, text, show, phones, phonesTextEnabled) {\n var dropObj1 = [];\n for (var _i2 = 0; _i2 < text.length; _i2++) {\n var dropObjEntry1 = {\n value: value[_i2],\n text: text[_i2],\n show: show[_i2]\n };\n if (phones) {\n dropObjEntry1.text = beautifyPhone(dropObjEntry1.text);\n dropObjEntry1.textEnabled = phonesTextEnabled[_i2];\n }\n dropObj1.push(dropObjEntry1);\n }\n return dropObj1;\n }\n var setNotifications = function setNotifications(notifId, communicationOptions, notificationDropdowns, data) {\n var currentNotif = getCurrentNotification(notifId, data);\n var phones = communicationOptions.phones;\n var emails = communicationOptions.emails;\n var commTypeText = [];\n var notifDrop = notificationDropdowns;\n notifDrop[currentNotif.id].channel = [];\n notifDrop[currentNotif.id].communication = [];\n currentNotif.deleted = 10 - currentNotif.notifications.length;\n currentNotif.notifications.forEach(function (notif) {\n var commType = notif.channel === assetService.notifPref.channelComm.email.channel ? emails : phones;\n var availableChannels = [];\n var availableChannelsTxt = [];\n if (strings.prefChannelFilterConfig && strings.prefChannelFilterConfig[notifId] && strings.prefChannelFilterConfig[notifId].length) {\n availableChannels = assetService.notifPref.channelItems.filter(function (x) {\n return !strings.prefChannelFilterConfig[notifId].includes(x);\n });\n availableChannelsTxt = assetService.notifPref.channelItemsText.filter(function (x) {\n return !strings.prefChannelFilterConfig[notifId].includes(assetService.notifPref.channelItems[assetService.notifPref.channelItemsText.indexOf(x)]);\n });\n } else {\n availableChannels = assetService.notifPref.channelItems;\n availableChannelsTxt = assetService.notifPref.channelItemsText;\n }\n var dropDown = createDrop(availableChannels, availableChannelsTxt);\n notifDrop[currentNotif.id].channel.push(dropDown);\n notif.channelText = assetService.notifPref.channels[notif.channel];\n var commText = !notif.communicationText ? notif.communication : notif.communicationText;\n var communicaiton = false;\n if (notif.channel !== strings.channels.MAIL) {\n communicaiton = commType.find(function (communications) {\n var findComm = false;\n if (communications.text !== '') {\n var comText = communications.text.replace(/[^a-zA-Z 0-9]+/g, '');\n comText = comText.replace(/\\s+/g, '');\n var commTxt = commText.replace(/[^a-zA-Z 0-9]+/g, '');\n commTxt = commTxt.replace(/\\s+/g, '');\n findComm = comText === commTxt;\n }\n return findComm;\n });\n // To filter text-enabled numbers QC-63557\n if (notif.channel === assetService.notifPref.channelComm.text.channel) {\n commTypeText = commType.filter(function (x) {\n if (notif.channel !== assetService.notifPref.channelComm.text.channel || x.text === assetService.notifPref.addNewComm.phone) return true;\n return x.textEnabled;\n });\n }\n } else {\n communicaiton = _.find(commType, function (x) {\n return x.text.toLocaleLowerCase() === commText.toLocaleLowerCase();\n });\n }\n if (!communicaiton) {\n communicaiton = _.find(commType, function (x) {\n return x.value.toLocaleLowerCase() === commText.toLocaleLowerCase();\n });\n }\n if (communicaiton) {\n if (notif.channel === assetService.notifPref.channelComm.email.channel) {\n notifDrop[currentNotif.id].communication.push(commType);\n notif.communicationText = communicaiton.text;\n } else {\n if (notif.channel === assetService.notifPref.channelComm.text.channel) {\n notifDrop[currentNotif.id].communication.push(commTypeText);\n } else {\n notifDrop[currentNotif.id].communication.push(commType);\n }\n notif.communicationText = beautifyPhone(communicaiton.text);\n }\n }\n });\n currentNotif.disableUnEnroll = updateDisableToggle(currentNotif);\n };\n var addNotification = function addNotification(notifId, phoneItems, notificationDropdowns, data) {\n var currentNotif = getCurrentNotification(notifId, data);\n currentNotif.deleted -= 1;\n var newNotif = {\n channel: assetService.notifPref.channelComm.text.channel,\n communication: window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText,\n channelModel: assetService.notifPref.channelComm.text.channel,\n communicationModel: window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText\n };\n currentNotif.notifications.push(newNotif);\n var availableChannels = [];\n var availableChannelsTxt = [];\n if (strings.prefChannelFilterConfig && strings.prefChannelFilterConfig[notifId] && strings.prefChannelFilterConfig[notifId].length) {\n availableChannels = assetService.notifPref.channelItems.filter(function (x) {\n return !strings.prefChannelFilterConfig[notifId].includes(x);\n });\n availableChannelsTxt = assetService.notifPref.channelItemsText.filter(function (x) {\n return !strings.prefChannelFilterConfig[notifId].includes(assetService.notifPref.channelItems[assetService.notifPref.channelItemsText.indexOf(x)]);\n });\n } else {\n availableChannels = assetService.notifPref.channelItems;\n availableChannelsTxt = assetService.notifPref.channelItemsText;\n }\n var dropDown = createDrop(availableChannels, availableChannelsTxt);\n notificationDropdowns[notifId].channel.push(dropDown);\n newNotif.channelText = assetService.notifPref.defaultChannelText;\n newNotif.communicationText = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n //notificationDropdowns[notifId].communication.push(phoneItems);\n\n findError(notifId, data);\n };\n var errorMesage = function errorMesage(notifId, data) {\n var currentNotif = getCurrentNotification(notifId, data);\n currentNotif.cardError = false;\n var error = _.find(currentNotif.notifications, function (item) {\n return item.classError === true;\n });\n if (error) currentNotif.cardError = true;\n };\n var findError = function findError(notifId, data) {\n var currentNotif = getCurrentNotification(notifId, data);\n var emailText = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n var phoneText = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n currentNotif.notifications.forEach(function (notif) {\n var notifFind = currentNotif.notifications.filter(function (element) {\n return element.communication === notif.communication && element.channel === notif.channel;\n });\n notif.classError = notifFind.length > 1;\n if (notif.communication === emailText || notif.communication === phoneText) {\n notif.classError = true;\n }\n });\n errorMesage(notifId, data);\n };\n var deleteNotification = function deleteNotification(notifId, dropDownIndex, data, notificationDropdowns) {\n var currentNotif = getCurrentNotification(notifId, data);\n currentNotif.deleted += 1;\n currentNotif.notifications.splice(dropDownIndex, 1);\n notificationDropdowns[currentNotif.id].channel.splice(dropDownIndex, 1);\n notificationDropdowns[currentNotif.id].communication.splice(dropDownIndex, 1);\n findError(notifId, data);\n };\n function addPhoneNumber(data, notifId) {\n return updatePhoneNumberService.sitecore.updatePhoneNumber(data).then(function (result) {\n var _result$ReturnCodes$, _result$ReturnCodes$2;\n if (result !== null && result !== void 0 && (_result$ReturnCodes$ = result.ReturnCodes[0]) !== null && _result$ReturnCodes$ !== void 0 && (_result$ReturnCodes$ = _result$ReturnCodes$.ReturnCode1) !== null && _result$ReturnCodes$ !== void 0 && _result$ReturnCodes$.Type && (result === null || result === void 0 || (_result$ReturnCodes$2 = result.ReturnCodes[0]) === null || _result$ReturnCodes$2 === void 0 || (_result$ReturnCodes$2 = _result$ReturnCodes$2.ReturnCode1) === null || _result$ReturnCodes$2 === void 0 ? void 0 : _result$ReturnCodes$2.Type) == 'E') {\n var _result$ReturnCodes$3, _result$ReturnCodes$4;\n $rootScope.phoneErrorModal = true;\n var errorMessage = result === null || result === void 0 || (_result$ReturnCodes$3 = result.ReturnCodes[0]) === null || _result$ReturnCodes$3 === void 0 || (_result$ReturnCodes$3 = _result$ReturnCodes$3.ReturnCode1) === null || _result$ReturnCodes$3 === void 0 ? void 0 : _result$ReturnCodes$3.Message;\n var errorCode = result === null || result === void 0 || (_result$ReturnCodes$4 = result.ReturnCodes[0]) === null || _result$ReturnCodes$4 === void 0 || (_result$ReturnCodes$4 = _result$ReturnCodes$4.ReturnCode1) === null || _result$ReturnCodes$4 === void 0 ? void 0 : _result$ReturnCodes$4.MessageNum;\n var card = 'trouble-saving-your-phone';\n var action = errorCode + '-|-' + $rootScope.dataLayerFormat(errorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.UpdatePhoneNumberUrl);\n gatModal(notifId, errorCode, action, card);\n } else {\n $rootScope.phoneErrorModal = false;\n }\n return result;\n }, function (error) {\n $rootScope.phoneErrorModal = true;\n var card = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + card + '/' + tab + '/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.UpdatePhoneNumberUrl), card);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label\n });\n };\n function tabName(notifId) {\n if (notifId == 'BILL_DEL' || notifId == 'BILL_NOTIF' || notifId == 'PAY_CONFRM' || notifId == 'PMT_UPDT' || notifId == 'PREPAY' || notifId == 'PPY_AUTO') {\n return 'billing-payment';\n }\n if (notifId == 'ACTIVE_OUT' || notifId == 'SRVO_NOT' || notifId == 'APPT_REM' || notifId == 'PPY_DISC') {\n return 'outages-and-services';\n }\n if (notifId == 'ENRL_PRCHS') {\n return 'additional-options';\n }\n }\n function subheadline(notifId) {\n if (notifId == 'BILL_DEL') {\n return 'paperless-billing';\n }\n if (notifId == 'BILL_NOTIF') {\n return 'billing-notifications';\n }\n if (notifId == 'PAY_CONFRM') {\n return 'payment-confirmation';\n }\n if (notifId == 'PMT_UPDT') {\n return 'paperless-payment-updates';\n }\n if (notifId == 'PREPAY') {\n return 'low-balance-alerts';\n }\n if (notifId == 'PPY_AUTO') {\n return 'auto-reload';\n }\n if (notifId == 'BILLPRINT') {\n return 'bill-format';\n }\n if (notifId == 'ACTIVE_OUT') {\n return 'outage-alerts';\n }\n if (notifId == 'SRVO_NOT') {\n return 'service-orders';\n }\n if (notifId == 'APPT_REM') {\n return 'appointments';\n }\n if (notifId == 'PPY_DISC') {\n return 'electric-connectdisconnect';\n }\n if (notifId == 'ENRL_PRCHS') {\n return 'enrollments-and-purchases';\n }\n }\n function gatModal(notifId, errorCode, action, card) {\n var cardName = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + cardName + '/' + tab + '/' + errorCode + '/' + card);\n pushDL('preferences-notifications_error', action, cardName);\n }\n function gatError(notifId, errorCode, action, card) {\n if (notifId == 'BILL_DEL') {\n pushVPV('/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' + errorCode + '/' + card);\n pushDL('preferences-notifications_error', action, 'paperless-billing');\n }\n }\n function addEmail(data, notifId) {\n return maintainUserProfileService.sitecore.maintainUserProfile(data).then(function (result) {\n var _result$ReturnCodes$5, _result$ReturnCodes$6;\n if (result !== null && result !== void 0 && (_result$ReturnCodes$5 = result.ReturnCodes[1]) !== null && _result$ReturnCodes$5 !== void 0 && (_result$ReturnCodes$5 = _result$ReturnCodes$5.ReturnCode2) !== null && _result$ReturnCodes$5 !== void 0 && _result$ReturnCodes$5.Type && (result === null || result === void 0 || (_result$ReturnCodes$6 = result.ReturnCodes[1]) === null || _result$ReturnCodes$6 === void 0 || (_result$ReturnCodes$6 = _result$ReturnCodes$6.ReturnCode2) === null || _result$ReturnCodes$6 === void 0 ? void 0 : _result$ReturnCodes$6.Type) == 'E') {\n var _result$ReturnCodes$7, _result$ReturnCodes$8;\n $rootScope.emailErrorModal = true;\n var errorMessage = result === null || result === void 0 || (_result$ReturnCodes$7 = result.ReturnCodes[1]) === null || _result$ReturnCodes$7 === void 0 || (_result$ReturnCodes$7 = _result$ReturnCodes$7.ReturnCode2) === null || _result$ReturnCodes$7 === void 0 ? void 0 : _result$ReturnCodes$7.Message;\n var errorCode = result === null || result === void 0 || (_result$ReturnCodes$8 = result.ReturnCodes[1]) === null || _result$ReturnCodes$8 === void 0 || (_result$ReturnCodes$8 = _result$ReturnCodes$8.ReturnCode2) === null || _result$ReturnCodes$8 === void 0 ? void 0 : _result$ReturnCodes$8.MessageNum;\n var card = 'trouble-saving-your-email';\n var action = errorCode + '-|-' + $rootScope.dataLayerFormat(errorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.MaintainUserProfile);\n gatModal(notifId, errorCode, action, card);\n } else {\n $rootScope.emailErrorModal = false;\n }\n return result;\n }, function (error) {\n $rootScope.emailErrorModal = true;\n var card = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + card + '/' + tab + '/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.MaintainUserProfile), card);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function updatePreferences(data, notifId) {\n return updatePreferencesService.sitecore.updatePreferences(data).then(function (result) {\n var _result$ReturnCodes$9, _result$ReturnCodes$10;\n var buttonAction = 'UPDATE';\n sessionStorageService.set(assetService.notifPref.sessionStorage.preferenceAction, buttonAction);\n if ((_result$ReturnCodes$9 = result.ReturnCodes[0].ReturnCode1) !== null && _result$ReturnCodes$9 !== void 0 && _result$ReturnCodes$9.Type && ((_result$ReturnCodes$10 = result.ReturnCodes[0]) === null || _result$ReturnCodes$10 === void 0 ? void 0 : _result$ReturnCodes$10.ReturnCode1.Type) == 'E') {\n var _result$ReturnCodes$11, _result$ReturnCodes$12, _result$ReturnCodes$13, _result$ReturnCodes$14;\n var errorMessage = ((_result$ReturnCodes$11 = result.ReturnCodes[0]) === null || _result$ReturnCodes$11 === void 0 ? void 0 : _result$ReturnCodes$11.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$12 = result.ReturnCodes[0]) === null || _result$ReturnCodes$12 === void 0 ? void 0 : _result$ReturnCodes$12.ReturnCode1.Message : '';\n var errorCode = ((_result$ReturnCodes$13 = result.ReturnCodes[0]) === null || _result$ReturnCodes$13 === void 0 ? void 0 : _result$ReturnCodes$13.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$14 = result.ReturnCodes[0]) === null || _result$ReturnCodes$14 === void 0 ? void 0 : _result$ReturnCodes$14.ReturnCode1.MessageNum : '';\n var card = 'trouble-updating-your-changes';\n var action = errorCode + '-|-' + $rootScope.dataLayerFormat(errorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl);\n gatError(notifId, errorCode, action, card);\n }\n console.log('Preferences updated');\n return result;\n }, function (error) {\n var card = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + card + '/' + tab + '/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl), card);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function updateCreatePreferences(data, notificationAction, notifId) {\n return updatePreferencesService.sitecore.updatePreferences(data).then(function (result) {\n var _result$ReturnCodes$15, _result$ReturnCodes$16;\n var buttonAction = 'UPDATE';\n sessionStorageService.set(assetService.notifPref.sessionStorage.preferenceAction, buttonAction);\n if ((_result$ReturnCodes$15 = result.ReturnCodes[0].ReturnCode1) !== null && _result$ReturnCodes$15 !== void 0 && _result$ReturnCodes$15.Type && ((_result$ReturnCodes$16 = result.ReturnCodes[0]) === null || _result$ReturnCodes$16 === void 0 ? void 0 : _result$ReturnCodes$16.ReturnCode1.Type) == 'E') {\n var _result$ReturnCodes$17, _result$ReturnCodes$18, _result$ReturnCodes$19, _result$ReturnCodes$20;\n var errorMessage = ((_result$ReturnCodes$17 = result.ReturnCodes[0]) === null || _result$ReturnCodes$17 === void 0 ? void 0 : _result$ReturnCodes$17.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$18 = result.ReturnCodes[0]) === null || _result$ReturnCodes$18 === void 0 ? void 0 : _result$ReturnCodes$18.ReturnCode1.Message : '';\n var errorCode = ((_result$ReturnCodes$19 = result.ReturnCodes[0]) === null || _result$ReturnCodes$19 === void 0 ? void 0 : _result$ReturnCodes$19.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$20 = result.ReturnCodes[0]) === null || _result$ReturnCodes$20 === void 0 ? void 0 : _result$ReturnCodes$20.ReturnCode1.MessageNum : '';\n var card = 'trouble-updating-your-changes';\n var action = errorCode + '-|-' + $rootScope.dataLayerFormat(errorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl);\n gatError(notifId, errorCode, action, card);\n }\n console.log('Preferences updated');\n data.created = notificationAction.create;\n data.action = strings.preferences_actions.PREF_CREATE;\n createPreferences(data, notifId).then(function () {\n if (notificationAction.update.length !== 0) {\n data.updated = notificationAction.update;\n data.action = strings.preferences_actions.PREF_UPDATE;\n [updatePreferences(data, notifId)];\n }\n });\n return result;\n }, function (error) {\n var card = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + card + '/' + tab + '/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.updateDndPreferenceUrl), card);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function createPreferences(data, notifId) {\n return createPreferencesService.sitecore.createPreferences(data).then(function (result) {\n var _result$ReturnCodes$21, _result$ReturnCodes$22;\n var buttonAction = 'CREATE';\n sessionStorageService.set(assetService.notifPref.sessionStorage.preferenceAction, buttonAction);\n if ((_result$ReturnCodes$21 = result.ReturnCodes[0].ReturnCode1) !== null && _result$ReturnCodes$21 !== void 0 && _result$ReturnCodes$21.Type && ((_result$ReturnCodes$22 = result.ReturnCodes[0]) === null || _result$ReturnCodes$22 === void 0 ? void 0 : _result$ReturnCodes$22.ReturnCode1.Type) == 'E') {\n var _result$ReturnCodes$23, _result$ReturnCodes$24, _result$ReturnCodes$25, _result$ReturnCodes$26;\n var errorMessage = ((_result$ReturnCodes$23 = result.ReturnCodes[0]) === null || _result$ReturnCodes$23 === void 0 ? void 0 : _result$ReturnCodes$23.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$24 = result.ReturnCodes[0]) === null || _result$ReturnCodes$24 === void 0 ? void 0 : _result$ReturnCodes$24.ReturnCode1.Message : '';\n var errorCode = ((_result$ReturnCodes$25 = result.ReturnCodes[0]) === null || _result$ReturnCodes$25 === void 0 ? void 0 : _result$ReturnCodes$25.ReturnCode1.Type) == 'E' ? (_result$ReturnCodes$26 = result.ReturnCodes[0]) === null || _result$ReturnCodes$26 === void 0 ? void 0 : _result$ReturnCodes$26.ReturnCode1.MessageNum : '';\n var card = 'trouble-updating-your-changes';\n var action = errorCode + '-|-' + $rootScope.dataLayerFormat(errorMessage) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.CreatePreferences);\n gatError(notifId, errorCode, action, card);\n }\n console.log('Preferences updated');\n return result;\n }, function (error) {\n var card = subheadline(notifId);\n var tab = tabName(notifId);\n pushVPV('/vpv/de/card/preferences-notifications/error/' + card + '/' + tab + '/na/problem-loading-preferences-notifications');\n pushDL('preferences-notifications_error', 'na-|-na-|-' + \"\".concat(assetService.sitecoreEndpoints.CreatePreferences), card);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n var compareChanges = function compareChanges(notifId, newData, currentData) {\n var notifNew = [];\n var notifCurrent = [];\n var notifNewData = getCurrentNotification(notifId, newData);\n var notifCurrentData = getCurrentNotification(notifId, currentData);\n notifNewData.notifications.forEach(function (item) {\n notifNew.push({\n communication: item.communication,\n channel: item.channel\n });\n });\n notifCurrentData.notifications.forEach(function (item) {\n notifCurrent.push({\n communication: item.communication,\n channel: item.channel\n });\n });\n var tempA = notifNew.sort(function (a, b) {\n if (a.channel !== b.channel)\n // order by channel, then by communication\n return a.channel.localeCompare(b.channel);\n return a.communication.localeCompare(b.communication);\n });\n var tempB = notifCurrent.sort(function (a, b) {\n if (a.channel !== b.channel)\n // order by channel, then by communication\n return a.channel.localeCompare(b.channel);\n return a.communication.localeCompare(b.communication);\n });\n if (JSON.stringify(notifNew) === JSON.stringify(notifCurrent) || JSON.stringify(tempA) === JSON.stringify(tempB)) {\n return true;\n } else return false;\n };\n var resetChanges = function resetChanges(notifId, data, modalData) {\n var currentNotif = getCurrentNotification(notifId, data);\n currentNotif.notifications[modalData.channelIdModal].communication = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n currentNotif.notifications[modalData.channelIdModal].communicationText = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n findError(notifId, data);\n currentNotif.loadingChanges = false;\n return new Promise(function (resolve) {\n resolve();\n });\n };\n var saveChanges = function saveChanges(notifId, newData, currentData, currentCommunication, floridaUser) {\n var created = 0;\n var deleted = 0;\n var promises = [];\n var promisesFirst = [];\n var promisesSecond = [];\n var notifNew = [];\n var notifCurrent = [];\n var updatePrefId = [];\n var newPrefIds = [];\n var notificationAction = {\n delete: [],\n update: [],\n create: []\n };\n // action payload items for paperless update only\n var NotificationActionPaperless = {\n update: []\n };\n var notifNewData = getCurrentNotification(notifId, newData);\n var notifCurrentData = getCurrentNotification(notifId, currentData);\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n notifNewData.notifications.forEach(function (item) {\n notifNew.push({\n communication: item.communication,\n channel: item.channel\n });\n newPrefIds.push(item.prefId);\n });\n var updateBillingPDF = notifNewData.checkedPDFOption !== notifCurrentData.checkedPDFOption;\n var updateRemainDays = notifNewData.remainingDays !== notifCurrentData.remainingDays;\n var subThersholdvar = notifNewData.subThersholdvar !== notifCurrentData.subThersholdvar;\n if (notifCurrentData || updateBillingPDF || subThersholdvar) {\n notifCurrentData.notifications.forEach(function (item) {\n notifCurrent.push({\n communication: item.communication,\n channel: item.channel,\n prefId: item.prefId\n });\n });\n deleted = notifCurrent.length - notifNew.length;\n created = notifNew.length - notifCurrent.length;\n notifCurrent.forEach(function (element) {\n var delNotif = _.find(notifNew, function (item) {\n return element.communication === item.communication && element.channel === item.channel;\n });\n //del notif contains items which are not changed so we add them in our varaible to call update pref\n if (delNotif && notifCurrentData.checkedPDFOption !== notifNewData.checkedPDFOption) {\n element.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n NotificationActionPaperless.update.push(element); //adding unaffected elements\n }\n if (!delNotif || deleted === 0 && created === 0 && (updateBillingPDF || updateRemainDays || subThersholdvar)) {\n var notif = _.find(notifCurrentData.notifications, function (curNotif) {\n return curNotif.prefId === element.prefId;\n });\n //checking if channel is still present in new communication (only updated)\n var inNewPref = _.find(newPrefIds, function (item) {\n return item === notif.prefId;\n });\n if (deleted > 0 && !notifCurrentData.isCardAutoEnrolled && inNewPref === undefined) {\n if (notifId === strings.preferences.BILL_DEL) {\n element.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n notificationAction.delete.push(element);\n deleted -= 1;\n } else if (\n //added the logic to add optout flag as X\n //for auto enrolled preference delete/Update\n notifCurrentData.isCardAutoEnrolled) {\n element.optout = 'X';\n notificationAction.create.push(element);\n } else {\n updatePrefId.push(notif.prefId);\n }\n } else {\n var _notif = _.find(notifCurrentData.notifications, function (curNotif) {\n return curNotif.prefId === element.prefId;\n });\n\n //delNotif.prefId = notif.prefId;\n if (delNotif && NotificationActionPaperless.update && NotificationActionPaperless.update.length > 0) {\n updatePrefId.push(_notif.prefId);\n } else {\n delNotif.prefId = _notif.prefId;\n }\n }\n });\n if (updatePrefId.length > 0) {\n updatePrefId.forEach(function (element) {\n var notif = _.find(notifNew, function (item) {\n return !item.prefId;\n });\n var isUpdated = _.find(notifNewData.notifications, function (item) {\n return item.prefId == element;\n });\n if (notif && isUpdated) {\n notif.prefId = element;\n if (notifId === strings.preferences.BILL_DEL) {\n notif.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n if (!notifCurrentData.isCardAutoEnrolled) notificationAction.update.push(notif);\n } else {\n delNotif = _.find(notifCurrent, function (item) {\n return item.prefId == element;\n });\n if (delNotif && notifId && notifId === strings.preferences.BILL_DEL) {\n delNotif.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n notificationAction.delete.push(delNotif);\n }\n });\n }\n } else {\n created = notifNew.length;\n }\n if (created > 0 || notifCurrentData.isCardAutoEnrolled || created == 0 && deleted == 0) {\n notifNew.forEach(function (element) {\n if (!element.prefId || notifCurrentData.isCardAutoEnrolled) {\n if (notifId === strings.preferences.BILL_DEL) {\n element.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n notificationAction.create.push(element);\n }\n });\n }\n if (notifCurrent.length - notifNew.length > 0) {\n notifNew.forEach(function (newElement) {\n var count = 0;\n if (newElement.prefId != undefined) {\n notifCurrent.forEach(function (currentElement) {\n if (newElement.prefId === currentElement.prefId) {\n count = 1;\n }\n });\n if (count === 0) {\n notificationAction.update.forEach(function (actionUElement) {\n if (newElement.prefId === actionUElement.prefId) {\n count = 1;\n }\n });\n if (count === 0) {\n notificationAction.create.forEach(function (actionCElement) {\n if (newElement.prefId === actionCElement.prefId) {\n count = 1;\n }\n });\n if (count === 0) {\n notificationAction.create.push(newElement);\n }\n }\n }\n } else {\n if (newElement && notifId && notifId === strings.preferences.BILL_DEL) {\n newElement.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n notificationAction.create.push(newElement);\n }\n });\n }\n var data = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId,\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId\n };\n var dataSecond = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId,\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId\n };\n var dataFirst = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId,\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId\n };\n\n //payload data for paperless extra update call\n var dataPaperless = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId,\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId\n };\n if (notifNewData.subThersholdvar) {\n data.subThersholdvar = notifNewData.subThersholdvar;\n dataFirst.subThersholdvar = notifCurrentData.subThersholdvar;\n dataSecond.subThersholdvar = notifNewData.subThersholdvarModel;\n }\n if (notifNewData.remainingDays && notifNewData.remainingDays.length > 0) {\n data.numberOfDays = notifNewData.remainingDays;\n dataFirst.numberOfDays = notifCurrentData.remainingDays;\n dataSecond.numberOfDays = notifNewData.remainingDays;\n }\n if (notifNewData.id === strings.preferences.RATE_REVW) {\n data.rateReviewType = !!notifNewData.rateReviewType && floridaUser ? notifNewData.rateReviewType : strings.rate_review_type.A;\n dataFirst.rateReviewType = !!notifCurrentData.rateReviewType && floridaUser ? notifNewData.rateReviewType : strings.rate_review_type.A;\n dataSecond.rateReviewType = !!notifNewData.rateReviewType && floridaUser ? notifNewData.rateReviewType : strings.rate_review_type.A;\n if (notificationAction.delete.length > 0) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n promises = [updatePreferences(data, notifId)];\n } else {\n if (!notifNewData.previousEnrolled) {\n data.created = [{\n chanel: '',\n communication: ''\n }];\n data.action = strings.preferences_actions.PREF_CREATE;\n promises = [createPreferences(data, notifId)];\n } else {\n dataFirst.updated = [{\n chanel: '',\n communication: ''\n }];\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\n dataSecond.created = [{\n chanel: '',\n communication: ''\n }];\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\n updatePreferences(dataFirst, notifId).then(function () {\n window.setTimeout(function () {\n createPreferences(dataSecond, notifId).then(function () {\n console.log('Preferences Updated');\n notifCurrentData.rateReviewType = notifNewData.rateReviewType;\n });\n }, 900);\n });\n }\n }\n notifNewData.previousEnrolled = notifNewData.enrolled;\n } else {\n if (notifNewData.id === strings.preferences.BILLPRINT) {\n data.billFormatType = !!notifNewData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n dataFirst.billFormatType = !!notifCurrentData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n dataSecond.billFormatType = !!notifNewData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n if (notificationAction.delete.length > 0) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n promises = [updatePreferences(data, notifId)];\n } else {\n if (!notifNewData.previousEnrolled) {\n data.created = [{\n chanel: '',\n communication: ''\n }];\n data.action = strings.preferences_actions.PREF_CREATE;\n promises = [createPreferences(data, notifId)];\n } else {\n dataFirst.updated = [{\n chanel: '',\n communication: ''\n }];\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\n dataSecond.created = [{\n chanel: '',\n communication: ''\n }];\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\n promises = [createPreferences(dataSecond, notifId)];\n }\n notifNewData.previousEnrolled = true;\n }\n } else if (notificationAction.delete.length > 0 && notificationAction.create.length > 0) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n\n // in case of create and delete first update existing items (if any with new checkbox), then normal update create pref \n if (notifNewData.id === strings.preferences.BILL_DEL && NotificationActionPaperless.update.length > 0) {\n if (notificationAction.update.length === 0) {\n dataPaperless.updated = NotificationActionPaperless.update;\n dataPaperless.action = strings.preferences_actions.PREF_UPDATE;\n promises = [updatePreferences(dataPaperless, notifId)];\n }\n promises = [updateCreatePreferences(data, notificationAction, notifId)];\n } else {\n promises = [updateCreatePreferences(data, notificationAction, notifId)];\n }\n } else {\n if ((notificationAction.delete.length > 0 || notificationAction.create.length > 0) && notificationAction.update.length === 0 && JSON.stringify(notificationAction.update) !== JSON.stringify(NotificationActionPaperless.update)) {\n if (NotificationActionPaperless.update.length > 0 && notifNewData.id === strings.preferences.BILL_DEL) {\n dataPaperless.updated = NotificationActionPaperless.update;\n dataPaperless.action = strings.preferences_actions.PREF_UPDATE;\n promises = [updatePreferences(dataPaperless, notifId)];\n }\n }\n if (notificationAction.delete.length > 0) {\n if (notifNewData.id === strings.preferences.PREPAY) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_UPDATE;\n //notifNewData.loadingChanges = true;\n promises = [updatePreferences(data, notifId)];\n // window.setTimeout(() => {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n data.numberOfDays = [];\n promises = [updatePreferences(data, notifId)];\n console.log('Preferences Updated');\n notifCurrentData.remainingDays = notifNewData.remainingDays;\n notifNewData.loadingChanges = false;\n //});\n // }, 900);\n // });\n } else {\n if (notifNewData.id === strings.preferences.BILL_DEL) {\n //if paperless and unenroll case (no notifications in newData)\n if (notifNewData.notifications.length === 0) {\n var tempData = [];\n //checking if primary email was present as communication channel.\n tempData = notificationAction.delete.filter(function (x) {\n return x.communication.slice(-3) !== '001';\n });\n if (tempData.length !== 0) {\n data.updated = tempData;\n data.action = strings.preferences_actions.PREF_DELETE;\n promises = [updatePreferences(data, notifId)];\n }\n }\n //if paperless but not unenroll case\n else {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n promises = [updatePreferences(data, notifId)];\n }\n }\n //if not paperless (as it was )\n else {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n promises = [updatePreferences(data, notifId)];\n }\n }\n }\n if (notificationAction.update.length > 0) {\n data.updated = notificationAction.update;\n data.action = strings.preferences_actions.PREF_UPDATE;\n promises = [updatePreferences(data, notifId)];\n }\n if (notificationAction.create.length > 0) {\n data.created = notificationAction.create;\n data.action = strings.preferences_actions.PREF_CREATE;\n promises = [createPreferences(data, notifId)];\n }\n }\n }\n var updateResult = commonService.executePromises(promises).then(function (res) {\n notifNewData.disableUnEnroll = updateDisableToggle(notifNewData);\n if (notifId === strings.preferences.PREPAY) notifCurrentData.remainingDays = notifNewData.remainingDays;\n if (notifId === strings.preferences.PMT_RMDR) notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\n if (notifId === strings.preferences.BILLPRINT) notifCurrentData.billFormatType = notifNewData.billFormatType;\n if (!notifNewData.enrolled) notifNewData.deleted = 10;\n console.log('Preferences Updated');\n return res;\n });\n notifCurrentData.notifications = [];\n notifNewData.notifications.forEach(function (notifElement) {\n console.log('entry');\n if (notifElement.channel !== strings.channels.MAIL) {\n var _communicationTextData = _.find(currentCommunication.phones, function (communication) {\n return communication.value === notifElement.communication;\n });\n if (_communicationTextData) notifElement.communicationText = beautifyPhone(_communicationTextData.text);\n } else {\n communicationTextData = _.find(currentCommunication.emails, function (communication) {\n return communication.value === notifElement.communication;\n });\n if (communicationTextData) notifElement.communicationText = communicationTextData.text;\n }\n notifCurrentData.notifications.push(function (_ref) {\n var channel = _ref.channel,\n communication = _ref.communication,\n prefId = _ref.prefId;\n return {\n channel: channel,\n communication: communication,\n prefId: prefId\n };\n }(notifElement));\n });\n if (notifId === strings.preferences.PMT_RMDR) {\n notifNewData.subThersholdvarText = \"\".concat(notifNewData.subThersholdvar, \" Days\");\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\n }\n if (notifId === strings.preferences.BILL_DEL) {\n notifCurrentData.checkedPDFOption = notifNewData.checkedPDFOption;\n }\n if (notifNewData.optoutEdit) {\n notifCurrentData.optout = notifNewData.optout;\n notifCurrentData.optoutModel = notifNewData.optoutModel;\n notifNewData.optoutEdit = false;\n }\n\n //if (!notifNewData.cardError) notifNewData.editionMode = false;\n\n return updateResult;\n };\n var createsaveChanges = function createsaveChanges(notifId, newData, currentData, currentCommunication) {\n var created = 0;\n var deleted = 0;\n var promises = [];\n var promisesFirst = [];\n var promisesSecond = [];\n var notifNew = [];\n var notifCurrent = [];\n var addPrefId = [];\n var notificationAction = {\n delete: [],\n update: [],\n create: []\n };\n var notifNewData = getCurrentNotification(notifId, newData);\n var notifCurrentData = getCurrentNotification(notifId, currentData);\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n notifNewData.notifications.forEach(function (item) {\n notifNew.push({\n communication: item.communication,\n channel: item.channel\n });\n });\n var updateBillingPDF = notifNewData.checkedPDFOption !== notifCurrentData.checkedPDFOption;\n var updateRemainDays = notifNewData.remainingDays !== notifCurrentData.remainingDays;\n if (notifCurrentData || updateBillingPDF) {\n notifCurrentData.notifications.forEach(function (item) {\n notifCurrent.push({\n communication: item.communication,\n channel: item.channel,\n prefId: item.prefId\n });\n });\n deleted = notifCurrent.length - notifNew.length;\n created = notifNew.length - notifCurrent.length;\n notifCurrent.forEach(function (element) {\n var delNotif = _.find(notifNew, function (item) {\n return element.communication === item.communication && element.channel === item.channel;\n });\n if (!delNotif || deleted === 0 && created === 0 && (updateBillingPDF || updateRemainDays)) {\n var notif = _.find(notifCurrentData.notifications, function (curNotif) {\n return curNotif.prefId === element.prefId;\n });\n if (deleted > 0) {\n notificationAction.delete.push(element);\n deleted -= 1;\n } else addPrefId.push(notif.prefId);\n } else {\n var _notif2 = _.find(notifCurrentData.notifications, function (curNotif) {\n return curNotif.prefId === element.prefId;\n });\n delNotif.prefId = _notif2.prefId;\n }\n });\n if (addPrefId.length > 0) {\n addPrefId.forEach(function (element) {\n var notif = _.find(notifNew, function (item) {\n return !item.prefId;\n });\n if (notif) {\n notif.prefId = element;\n if (notifId === strings.preferences.BILL_DEL) {\n if (newData[0].confirmButton === 'Save') {\n var emailAccount = sessionStorageService.get(assetService.notifPref.sessionStorage.email);\n var currStatus = _.find(currentCommunication.emails, function (communication) {\n return communication.selected === true;\n });\n if (emailAccount.EmailAddress === currStatus.text) {\n notifCurrentData.isCardAutoEnrolled = true;\n }\n }\n notif.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n if (notifId === strings.preferences.BILL_DEL && !notifCurrentData.isCardAutoEnrolled) {\n notificationAction.update.push(notif);\n } else {\n notificationAction.create.push(notif);\n }\n }\n });\n }\n } else {\n created = notifNew.length;\n }\n if (created > 0) {\n notifNew.forEach(function (element) {\n var updateStatus;\n if (!element.prefId) {\n if (notifId === strings.preferences.BILL_DEL) {\n if (newData[0].confirmButton === 'Save') {\n var emailAccount = sessionStorageService.get(assetService.notifPref.sessionStorage.email);\n var currStatus = _.find(currentCommunication.emails, function (communication) {\n return communication.selected === true;\n });\n updateStatus = true;\n }\n element.channel = notifNewData.checkedPDFOption === true ? strings.channels.EBLP : strings.channels.EBIL;\n }\n if (updateStatus === true) {\n notificationAction.update.push(element);\n } else {\n notificationAction.create.push(element);\n }\n }\n });\n }\n var data = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId\n };\n var dataSecond = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId\n };\n var dataFirst = {\n groupId: notifNewData.groupId,\n id: notifNewData.id,\n prefId: notifNewData.prefId,\n contractAccountId: accountData.contractAccountId,\n businessPartnerId: accountData.businessPartnerId\n };\n if (notifNewData.subThersholdvar) {\n data.subThersholdvar = notifNewData.subThersholdvar;\n dataFirst.subThersholdvar = notifCurrentData.subThersholdvar;\n dataSecond.subThersholdvar = notifNewData.subThersholdvarModel;\n }\n if (notifNewData.remainingDays && notifNewData.remainingDays.length > 0) {\n data.numberOfDays = notifNewData.remainingDays;\n dataFirst.numberOfDays = notifCurrentData.remainingDays;\n dataSecond.numberOfDays = notifNewData.remainingDays;\n }\n if (notifNewData.id === strings.preferences.RATE_REVW) {\n data.rateReviewType = !!notifNewData.rateReviewType ? notifNewData.rateReviewType : strings.rate_review_type.A;\n dataFirst.rateReviewType = !!notifCurrentData.rateReviewType ? notifNewData.rateReviewType : strings.rate_review_type.A;\n dataSecond.rateReviewType = !!notifNewData.rateReviewType ? notifNewData.rateReviewType : strings.rate_review_type.A;\n if (notificationAction.delete.length > 0) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n } else {\n if (!notifNewData.previousEnrolled) {\n data.created = [{\n chanel: '',\n communication: ''\n }];\n data.action = strings.preferences_actions.PREF_CREATE;\n } else {\n dataFirst.updated = [{\n chanel: '',\n communication: ''\n }];\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\n dataSecond.created = [{\n chanel: '',\n communication: ''\n }];\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\n notifCurrentData.billFormatType = notifNewData.billFormatType;\n }\n }\n notifNewData.previousEnrolled = notifNewData.enrolled;\n } else {\n if (notifNewData.id === strings.preferences.BILLPRINT) {\n data.billFormatType = !!notifNewData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n dataFirst.billFormatType = !!notifCurrentData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n dataSecond.billFormatType = !!notifNewData.billFormatType ? notifNewData.billFormatType : strings.font_type.detailed;\n if (notificationAction.delete.length > 0) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n } else {\n if (!notifNewData.previousEnrolled) {\n data.created = [{\n chanel: '',\n communication: ''\n }];\n data.action = strings.preferences_actions.PREF_CREATE;\n } else {\n dataFirst.updated = [{\n chanel: '',\n communication: ''\n }];\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\n dataSecond.created = [{\n chanel: '',\n communication: ''\n }];\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\n notifCurrentData.billFormatType = notifNewData.billFormatType;\n }\n notifNewData.previousEnrolled = true;\n }\n } else {\n if (notificationAction.delete.length > 0) {\n if (notifNewData.id === strings.preferences.PREPAY) {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_UPDATE;\n //notifNewData.loadingChanges = true;\n } else {\n data.updated = notificationAction.delete;\n data.action = strings.preferences_actions.PREF_DELETE;\n }\n }\n if (notificationAction.update.length > 0) {\n data.updated = notificationAction.update;\n data.action = strings.preferences_actions.PREF_UPDATE;\n }\n if (notificationAction.create.length > 0) {\n data.created = notificationAction.create;\n data.action = strings.preferences_actions.PREF_CREATE;\n }\n }\n }\n var updateResult = commonService.executePromises(promises).then(function (res) {\n if (notifId === strings.preferences.PREPAY) notifCurrentData.remainingDays = notifNewData.remainingDays;\n if (notifId === strings.preferences.PMT_RMDR) notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\n console.log('Preferences Updated');\n return res;\n });\n notifCurrentData.notifications = [];\n notifNewData.notifications.forEach(function (notifElement) {\n console.log('entryy');\n if (notifElement.channel !== strings.channels.MAIL) {\n communicationTextData = _.find(currentCommunication.phones, function (communication) {\n return communication.value === notifElement.communication;\n });\n if (communicationTextData) notifElement.communicationText = beautifyPhone(communicationTextData.text);\n } else {\n communicationTextData = _.find(currentCommunication.emails, function (communication) {\n return communication.value === notifElement.communication;\n });\n if (communicationTextData) notifElement.communicationText = communicationTextData.text;\n }\n notifCurrentData.notifications.push(function (_ref2) {\n var channel = _ref2.channel,\n communication = _ref2.communication,\n prefId = _ref2.prefId;\n return {\n channel: channel,\n communication: communication,\n prefId: prefId\n };\n }(notifElement));\n });\n if (notifId === strings.preferences.PMT_RMDR) {\n notifNewData.subThersholdvarText = \"\".concat(notifNewData.subThersholdvar, \" Days\");\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\n }\n if (notifId === strings.preferences.BILL_DEL) {\n notifCurrentData.checkedPDFOption = notifNewData.checkedPDFOption;\n }\n if (notifNewData.optoutEdit) {\n notifCurrentData.optout = notifNewData.optout;\n notifCurrentData.optoutModel = notifNewData.optoutModel;\n notifNewData.optoutEdit = false;\n }\n if (!notifNewData.cardError) notifNewData.editionMode = false;\n return updateResult;\n };\n var cancelChanges = function cancelChanges(notifId, data, dataModel, notificationDropdowns, communicationOptions) {\n var currentNotif = getCurrentNotification(notifId, data);\n var notifModel = getCurrentNotification(notifId, dataModel);\n currentNotif.cardError = false;\n if (!notifModel.notifications) currentNotif.notifications = [];else currentNotif.notifications = genericHelperService.notReferencesArrayObjects(notifModel.notifications);\n setNotifications(notifId, communicationOptions, notificationDropdowns, data);\n if (currentNotif.notifications.length === 0) {\n currentNotif.enrolled = false;\n currentNotif.enrolledStatus = '';\n notificationDropdowns[notifId].channel = [];\n notificationDropdowns[notifId].communication = [];\n }\n currentNotif.editionMode = false;\n if (notifId === strings.preferences.PMT_RMDR) {\n currentNotif.subThersholdvar = notifModel.subThersholdvar;\n currentNotif.subThersholdvarText = \"\".concat(notifModel.subThersholdvar, \" Days\");\n }\n findError(notifId, data);\n };\n var createNewCommunication = function createNewCommunication(saveChanges, notifId, data, modalData, communicationOptions) {\n var type = modalData.type;\n var promises = [];\n var currentNotif = getCurrentNotification(notifId, data);\n //currentNotif.loadingChanges = true;\n\n if (!saveChanges) {\n modalData.communicationModel = '';\n }\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n var addressNumber = sessionStorageService.get(assetService.notifPref.sessionStorage.commOpt.addressNumber);\n var phoneNumberRaw = modalData.communicationModel.replaceAll('(', '').replaceAll(')', '').replaceAll(' ', '').replaceAll('-', '');\n if (saveChanges) {\n if (modalData.type === strings.channels_type.phones) {\n var mydata = {\n newPhone: phoneNumberRaw,\n action: strings.preferences_actions.ADD_PHN,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n preferredFlag: false,\n dndStartTime: strings.PT00H00M00S,\n dndStopTime: strings.PT00H00M00S,\n typeOfContact: modalData.phoneType\n };\n promises = [addPhoneNumber(mydata, notifId)];\n } else {\n var reqTime = dateHelperService.convertToISOTime(moment());\n var emailAddress = [{\n AddressNumber: addressNumber,\n EmailNew: modalData.communicationModel,\n CUDFlag: strings.C\n }];\n var _data = {\n requestedTime: reqTime,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n addressNumber: addressNumber,\n emailAccounts: emailAddress\n };\n var dataForEmail = {\n requestedTime: reqTime,\n businessPartnerId: accountData.relatedBusinessPartnerId,\n emailAccounts: emailAddress\n };\n promises = [addEmail(dataForEmail, notifId)];\n }\n var update = commonService.executePromises(promises).then(function (result) {\n var _result$, _result$2, _result$3, _result$4;\n if ((_result$ = result[0]) !== null && _result$ !== void 0 && (_result$ = _result$.ReturnCodes[0]) !== null && _result$ !== void 0 && (_result$ = _result$.ReturnCode1) !== null && _result$ !== void 0 && _result$.Type && ((_result$2 = result[0]) === null || _result$2 === void 0 || (_result$2 = _result$2.ReturnCodes[0]) === null || _result$2 === void 0 ? void 0 : _result$2.ReturnCode1.Type) != 'E' || (_result$3 = result[0]) !== null && _result$3 !== void 0 && (_result$3 = _result$3.ReturnCodes[1]) !== null && _result$3 !== void 0 && (_result$3 = _result$3.ReturnCode2) !== null && _result$3 !== void 0 && _result$3.Type && ((_result$4 = result[0]) === null || _result$4 === void 0 || (_result$4 = _result$4.ReturnCodes[1]) === null || _result$4 === void 0 ? void 0 : _result$4.ReturnCode2.Type) != 'E') {\n communicationOptions[type].pop();\n var communicationValue = '';\n if (modalData.type === strings.channels_type.phones) {\n var _addressNumber = result[0].d.PhoneSrcToAction_NAV.results[0].AddressNumber;\n var consNumber = result[0].d.PhoneSrcToAction_NAV.results[0].SequenceNumber;\n communicationValue = \"\".concat(_addressNumber).concat(consNumber);\n } else {\n var _addressNumber2 = result[0].d.MaintainProfileReqCA.results[0].AddressNumber;\n var _consNumber = result[0].d.MaintainProfileReqCA.results[0].Consnumber;\n communicationValue = \"\".concat(_addressNumber2).concat(_consNumber);\n }\n var newComm = {\n text: modalData.communicationModel,\n value: communicationValue\n };\n currentNotif.notifications[modalData.channelIdModal].communication = communicationValue;\n currentNotif.notifications[modalData.channelIdModal].communicationModel = communicationValue;\n currentNotif.notifications[modalData.channelIdModal].communicationText = modalData.communicationModel;\n if (modalData.type === strings.channels_type.phones) {\n // QC-45718/CCOT-13063\n if (result[0].d.PhoneSrcToAction_NAV.results[0].TypeOfContact.toLocaleUpperCase() === 'HOME') {\n var voiceChannelStr = assetService.notifPref.channelComm.voice.channel;\n currentNotif.notifications[modalData.channelIdModal].channel = voiceChannelStr;\n currentNotif.notifications[modalData.channelIdModal].channelModel = voiceChannelStr;\n currentNotif.notifications[modalData.channelIdModal].channelText = assetService.notifPref.channels[voiceChannelStr];\n newComm.textEnabled = false;\n } else newComm.textEnabled = true;\n }\n communicationOptions[type].push(newComm);\n communicationOptions[type].push({\n text: modalData.title,\n value: modalData.title\n });\n modalData.communicationModel = undefined;\n findError(notifId, data);\n broadcastService.addNewCommunication(notifId);\n } else {\n return result ? result[0] : undefined;\n }\n });\n return update;\n } else {\n currentNotif.loadingChanges = false;\n return new Promise(function (resolve) {\n resolve();\n });\n }\n };\n var updateNotif = function updateNotif(notifId, communicationOptions, notificationDropdowns, data) {\n data.forEach(function (card) {\n setNotifications(card.id, communicationOptions, notificationDropdowns, data);\n });\n findError(notifId, data);\n };\n var channelChange = function channelChange(model, extra, communicationOptions, notificationDropdowns, data) {\n var divId = extra.search('/');\n var notifId = extra.substr(0, divId);\n var channelId = Number(extra.substr(divId + 1, extra.length));\n var phones = communicationOptions.phones;\n var emails = communicationOptions.emails;\n var commType = model.value === assetService.notifPref.channelComm.email.channel ? emails : phones;\n var currentNotif = getCurrentNotification(notifId, data);\n\n //if(currentNotif.notifications[channelId].channel !== model.value) {\n notificationDropdowns[notifId].communication[channelId] = [{\n value: '',\n text: ''\n }];\n currentNotif.notifications[channelId].communication = window.innerWidth <= 705 ? assetService.notifPref.defaultcommunicationChannelTextMobile : assetService.notifPref.defaultcommunicationChannelText;\n // model.value === assetService.notifPref.channelComm.email.channel\n // ? assetService.notifPref.channelComm.email.communication\n // : assetService.notifPref.channelComm.text.communication;\n currentNotif.notifications[channelId].communicationText = currentNotif.notifications[channelId].communication;\n currentNotif.notifications[channelId].communicationModel = currentNotif.notifications[channelId].communication;\n currentNotif.notifications[channelId].channel = model.value;\n currentNotif.notifications[channelId].channelText = assetService.notifPref.channels[currentNotif.notifications[channelId].channel];\n currentNotif.cardError = false;\n //}\n\n //window.setTimeout(() => {\n notificationDropdowns[notifId].communication[channelId] = commType.filter(function (x) {\n // QC-45718/CCOT-13063\n if (currentNotif.notifications[channelId].channel !== assetService.notifPref.channelComm.text.channel || x.text === assetService.notifPref.addNewComm.phone) return true;\n return x.textEnabled;\n });\n //}, 5);\n\n findError(notifId, data);\n };\n var commChange = function commChange(model, extra, communicationOptions, notificationDropdowns, data) {\n var divId = extra.search('/');\n var notifId = extra.substr(0, divId);\n var channelId = Number(extra.substr(divId + 1, extra.length));\n var phones = communicationOptions.phones;\n var emails = communicationOptions.emails;\n var commType = model === assetService.notifPref.channelComm.email.channel ? emails : phones;\n var currentNotif = getCurrentNotification(notifId, data);\n\n //if(currentNotif.notifications[channelId].channel !== model.value) {\n notificationDropdowns[notifId].communication[channelId] = [{\n value: '',\n text: ''\n }];\n currentNotif.cardError = false;\n //}\n\n //window.setTimeout(() => {\n notificationDropdowns[notifId].communication[channelId] = commType.filter(function (x) {\n // QC-45718/CCOT-13063\n if (currentNotif.notifications[channelId].channel !== assetService.notifPref.channelComm.text.channel || x.text === assetService.notifPref.addNewComm.phone) return true;\n return x.textEnabled;\n });\n //}, 5);\n\n findError(notifId, data);\n };\n var dropdownFilter = function dropdownFilter(cardId, communicationOptions, enrolledPref, model) {\n var displayOptions = {\n emails: [],\n phones: []\n };\n var groupVal = [];\n var enrolledComms = [];\n var allEmails = [];\n var allPhones = [];\n var emailPresent = [];\n var phonePresent = [];\n var showSelections = [];\n var showPhSelections = [];\n var emails = [];\n var phones = [];\n for (i = 0; i < enrolledPref.length; i++) {\n if (enrolledPref[i].id == cardId) {\n groupVal = enrolledPref[i];\n }\n }\n if (model && model === 'Method') {\n displayOptions.emails = [];\n displayOptions.phones = [];\n } else {\n if (groupVal && (groupVal.notifications != undefined || groupVal.confirmButton != 'SAVE')) {\n var mailLength = groupVal.notifications.length;\n for (i = 0; i < mailLength; i++) {\n enrolledComms.push((groupVal.notifications[i].communicationText ? groupVal.notifications[i].communicationText : groupVal.notifications[i].communication).toLowerCase().concat(groupVal.notifications[i].channel));\n }\n var emailLength = communicationOptions.emails.length;\n var phoneLength = communicationOptions.phones.length;\n for (i = 0; i < emailLength; i++) {\n if (communicationOptions.emails[i].text !== 'Add New Email') {\n allEmails.push(communicationOptions.emails[i].text.toLowerCase().concat(model));\n } else if (communicationOptions.emails[i].text === 'Add New Email') {\n allEmails.push(communicationOptions.emails[i].text.concat(model));\n }\n }\n for (i = 0; i < phoneLength; i++) {\n allPhones.push(communicationOptions.phones[i].text.concat(model));\n }\n for (i = 0; i < emailLength; i++) {\n if (_.includes(enrolledComms, allEmails[i])) {\n emailPresent.push(false);\n } else {\n emailPresent.push(true);\n }\n }\n for (i = 0; i < phoneLength; i++) {\n if (_.includes(enrolledComms, allPhones[i])) {\n phonePresent.push(false);\n } else {\n phonePresent.push(true);\n }\n }\n var emailsTxt = communicationOptions.emails.map(function (email) {\n return email.text;\n });\n var emailsVal = communicationOptions.emails.map(function (email) {\n return email.value;\n });\n var phonesTxt = communicationOptions.phones.map(function (phone) {\n return phone.text;\n });\n var phonesVal = communicationOptions.phones.map(function (phone) {\n return phone.value;\n });\n var textPresent = communicationOptions.phones.map(function (phone) {\n return phone.textEnabled;\n });\n showSelections = createDrop1(emailsVal, emailsTxt, emailPresent, false);\n showPhSelections = createDrop1(phonesVal, phonesTxt, phonePresent, true, textPresent);\n for (i = 0; i < showSelections.length; i++) {\n if (showSelections[i].show == true) {\n emails.push(showSelections[i]);\n }\n }\n for (i = 0; i < showPhSelections.length; i++) {\n if (showPhSelections[i].show == true) {\n phones.push(showPhSelections[i]);\n }\n }\n displayOptions.emails = emails;\n displayOptions.phones = phones;\n } else {\n displayOptions.emails = communicationOptions.emails;\n displayOptions.phones = communicationOptions.phones;\n }\n }\n sessionStorageService.set('displayOptions', displayOptions);\n };\n var communicationChange = function communicationChange(model, extra, currentNotifModal, data) {\n var divId = extra.search('/');\n var notifId = extra.substr(0, divId);\n var channelId = Number(extra.substr(divId + 1, extra.length));\n var currentNotif = getCurrentNotification(notifId, data);\n var remainDays = _.filter(assetService.notifPref.subThersholdvarDropdown, function (element) {\n return element.value === model.value;\n });\n if (remainDays.length === 0 || channelId !== 10) {\n if (model.value === assetService.notifPref.addNewComm.email || model.value === assetService.notifPref.addNewComm.phone) {\n currentNotifModal.title = model.value;\n currentNotifModal.type = model.value === assetService.notifPref.addNewComm.email ? assetService.notifPref.modalUpdate.emails : assetService.notifPref.modalUpdate.phones;\n currentNotifModal.notifIdModal = notifId;\n currentNotifModal.channelIdModal = channelId;\n currentNotif.notifications[channelId].addNew = true;\n currentNotif.notifications[channelId].communicationModel = undefined;\n } else {\n currentNotif.notifications[channelId].communication = model.value;\n currentNotif.notifications[channelId].addNew = false;\n }\n }\n var dataReturn = channelId === 10 ? false : currentNotif.notifications[channelId].addNew;\n currentNotif.cardError = false;\n findError(notifId, data);\n return dataReturn;\n };\n var setCommunicationValue = function setCommunicationValue(currentPref, newPref, communicationOptions) {\n var i = 0;\n currentPref.forEach(function (pref) {\n if (pref.notifications.length > 0) {\n var j = 0;\n pref.notifications.forEach(function (chanels) {\n var mediumChannel = chanels.channel === strings.channels.MAIL ? strings.channels_type.emails : strings.channels_type.phones;\n var communication;\n if (mediumChannel === strings.channels_type.phones) {\n communication = communicationOptions[mediumChannel].find(function (communications) {\n var findComm = false;\n if (communications.text !== '') {\n var comText = communications.text.replace(/[^a-zA-Z 0-9]+/g, '');\n comText = comText.replace(/\\s+/g, '');\n findComm = comText === chanels.communication;\n }\n return findComm;\n });\n } else {\n communication = communicationOptions[mediumChannel].find(function (communications) {\n return communications.text.toLowerCase() === chanels.communication.toLowerCase();\n });\n }\n if (communication) {\n currentPref[i].notifications[j].communication = communication.value;\n newPref[i].notifications[j].communication = communication.value;\n }\n // else{\n // currentPref[i].notifications.splice(j,1);\n // newPref[i].notifications.splice(j,1);\n // }\n j += 1;\n });\n }\n i += 1;\n });\n };\n var setCardCommunication = function setCardCommunication(newPref) {\n newPref.forEach(function (card) {\n if (card.notifications.length === 0 && card.id !== 'BILLPRINT') {\n card.enrolled = false;\n }\n });\n };\n var enrolledNotif = function enrolledNotif(notifId, data, dataModel, notificationDropdowns, communicationOptions, floridaUser) {\n var currentNotif = getCurrentNotification(notifId, data);\n var notifModel = getCurrentNotification(notifId, dataModel);\n var phones = communicationOptions.phones;\n currentNotif.cardError = false;\n if (notifId === strings.preferences.RATE_REVW || notifId === strings.preferences.BILLPRINT) {\n currentNotif.previousEnrolled = currentNotif.enrolled;\n }\n currentNotif.enrolled = !currentNotif.enrolled;\n if (notifId === strings.preferences.RATE_REVW && !floridaUser || notifId !== strings.preferences.RATE_REVW && notifId !== strings.preferences.BILLPRINT) {\n if (notifModel.notifications.length === 0) {\n if (notifId !== strings.preferences.BILL_DEL && notifId !== strings.preferences.PREPAY && notifId !== strings.preferences.PMT_RMDR) {\n addNotification(notifId, phones, notificationDropdowns, data);\n //addNotification(notifId, phones, notificationDropdowns, data);\n // let model = { value: assetService.notifPref.channelComm.voice.channel };\n // extra = `${notifId}/1`;\n // channelChange(model, extra, communicationOptions, notificationDropdowns, data);\n } else {\n addNotification(notifId, phones, notificationDropdowns, data);\n var model = {\n value: assetService.notifPref.channelComm.email.channel\n };\n var extra = notifId !== strings.preferences.BILL_DEL && notifId !== strings.preferences.PREPAY && notifId !== strings.preferences.PMT_RMDR ? \"\".concat(notifId, \"/2\") : \"\".concat(notifId, \"/0\");\n channelChange(model, extra, communicationOptions, notificationDropdowns, data);\n }\n currentNotif.editionMode = true;\n } else findError(notifId, data);\n if (!currentNotif.enrolled) cancelChanges(notifId, data, dataModel, notificationDropdowns, communicationOptions);\n }\n if (notifId === strings.preferences.RATE_REVW || notifId === strings.preferences.BILLPRINT) {\n currentNotif.editionMode = false;\n }\n };\n var updateDisableSave = function updateDisableSave(currentNotifModal, communicationOptions) {\n var optionsCopy = JSON.parse(JSON.stringify(communicationOptions[currentNotifModal.type])); // stringify and parse for shallow copy\n var filteredOptions = optionsCopy.filter(function (x) {\n var optionRaw = x.text.replace('(', '').replace(' ', '').replace(')', '').replace('-', '');\n var inputRaw = currentNotifModal.communicationModel ? currentNotifModal.communicationModel.replace('(', '').replace(' ', '').replace(')', '').replace('-', '') : '';\n return optionRaw === inputRaw;\n });\n if (currentNotifModal.type === 'emails') {\n var emailCheck = optionsCopy.filter(function (x) {\n var emailOptions = x.text.toLowerCase();\n var emailinput = currentNotifModal.communicationModel ? currentNotifModal.communicationModel.toLowerCase() : '';\n return emailOptions === emailinput;\n });\n filteredOptions = emailCheck;\n }\n return !!filteredOptions.length;\n };\n var sendEventAttribute = function sendEventAttribute(objParams) {\n var params = ['workFlow:' + objParams.workFlow, 'buttonText:' + objParams.buttonText, 'headline:' + objParams.headline];\n if (objParams.subheadline) params.push('subheadline:' + objParams.subheadline);\n if (objParams.addedSpec) params.push('addedSpec:' + objParams.addedSpec);\n if (objParams.addedHeadline) params.push('addedHeadline:' + objParams.addedHeadline);\n if (!objParams.subheadline) {\n commongaTaggingService.attributePush(params);\n } else {\n if (objParams.subheadline != 'Paperless Billing') {\n commongaTaggingService.attributePush(params);\n }\n }\n };\n var updateDisableToggle = function updateDisableToggle(card) {\n var accountData = sessionStorageService.get(assetService.notifPref.sessionStorage.accountData);\n if (!accountData || !accountData.relatedBusinessPartnerId || !accountData.businessPartnerId) {\n console.warn('BP unavailable in session');\n return false;\n }\n if (accountData.relatedBusinessPartnerId !== accountData.businessPartnerId) return false;\n if (!card.enrolled) return false;\n return notificationPreferencesAssetsService.strings.cardToggleMapping.unEnrollable.includes(card.id);\n };\n return {\n setNotifications: setNotifications,\n saveChanges: saveChanges,\n createsaveChanges: createsaveChanges,\n cancelChanges: cancelChanges,\n deleteNotification: deleteNotification,\n createNewCommunication: createNewCommunication,\n updateNotif: updateNotif,\n addNotification: addNotification,\n channelChange: channelChange,\n commChange: commChange,\n dropdownFilter: dropdownFilter,\n communicationChange: communicationChange,\n enrolledNotif: enrolledNotif,\n getCurrentNotification: getCurrentNotification,\n beautifyPhone: beautifyPhone,\n createDrop: createDrop,\n createDrop1: createDrop1,\n setCommunicationValue: setCommunicationValue,\n setCardCommunication: setCardCommunication,\n updateDisableSave: updateDisableSave,\n sendEventAttribute: sendEventAttribute,\n compareChanges: compareChanges,\n resetChanges: resetChanges\n };\n});\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nccPrepaidAddSpeedPay.$inject = ['$log', 'assetService', 'speedpayService', 'getPrepaidDetailsService', 'getAccountBalanceForPrepaid', 'commonService', 'sessionStorageService', 'getLoggedInUserDetailsService', 'getAccountBalanceForRegularAccountService', 'commongaTaggingService'];\napp.controller('ccPrepaidAddSpeedPay', ccPrepaidAddSpeedPay);\nfunction ccPrepaidAddSpeedPay($log, assetService, speedpayService, getPrepaidDetailsService, getAccountBalanceForPrepaid, commonService, sessionStorageService, getLoggedInUserDetailsService, getAccountBalanceForRegularAccountService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalSelectedAccount = null;\n var globalAccountInfo = null;\n var accountBalanceDetails = null;\n var prepaidDetails = null;\n var billingInfo = null;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.speedpay = speedpay;\n vm.user = '';\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.goToPage = goToPage;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n /* --------------Function Definitions-----------------------*/\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function goToPage(url) {\n location.href = url;\n }\n function speedpay() {\n var zipcode = vm.user.accountData.zipCode;\n speedpayService.getSpeedpayUrl({\n action: assetService.strings.START,\n login: vm.user.value,\n password: zipcode,\n UserID: vm.currentUser.cdpId,\n returnUrl: window.location.origin + vm.returnUrl\n }).then(function (result) {\n location.href = result;\n });\n }\n function loadUserDetails(globalAccountInfo) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n var dtaUsers = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.user = dtaUsers.accounts.find(function (data) {\n return data.value === globalSelectedAccount.accountNum;\n });\n }\n function load() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n loadUserDetails(globalAccountInfo);\n commonService.executePromises([getPrepaidDetails({\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\n bankDetail: false\n }), getAccountBalance({\n contractAccountId: globalAccountInfo.accountSelected.accountNum\n }), getAccountBalanceRegular({\n accountList: [{\n contractAccountNumber: globalAccountInfo.accountSelected.accountNum,\n zipCode: globalAccountInfo.accountSelected.zipCode\n }]\n })]).then(function (result) {\n setModels();\n vm.loadingSpinner = false;\n vm.showComponent = true;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function getPrepaidDetails(params) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(function (result) {\n prepaidDetails = _objectSpread({}, result.d.PrepaidToBP.results[0].BPToCA.results[0]);\n }, function (error) {\n vm.showFailedState = true;\n });\n }\n function getAccountBalance(params) {\n return getAccountBalanceForPrepaid.sitecore.getAccountBalanceForPrepaid(params).then(function (result) {\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\n }, function (error) {\n vm.showFailedState = true;\n });\n }\n function getAccountBalanceRegular(params) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(params).then(function (result) {\n billingInfo = result.getAccountAndBillingInfoResList[0];\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setModels() {\n vm.costPerDay = parseFloat(prepaidDetails.AverageCostPerDay).toFixed(2);\n var accountBalance = accountBalanceDetails.PrepaidBalance; // billingInfo.totalDueDlrs || 0;\n //store balance in session\n sessionStorageService.set(assetService.storageKeys.accountBalance, accountBalance);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.loadingSpinner = true;\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n load();\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n } else {\n load();\n }\n };\n init();\n}\nccPrepaidAddFundsSuccess.$inject = ['$log', 'assetService', 'getAccountBalanceForPrepaid', 'commonService', 'sessionStorageService', 'getLoggedInUserDetailsService', 'getAccountBalanceForRegularAccountService', 'commongaTaggingService'];\napp.controller('ccPrepaidAddFundsSuccess', ccPrepaidAddFundsSuccess);\nfunction ccPrepaidAddFundsSuccess($log, assetService, getAccountBalanceForPrepaid, commonService, sessionStorageService,\n// getLoggedInUserDetailsService,\ngetAccountBalanceForRegularAccountService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var accountBalanceDetails = null;\n var billingInfo = null;\n\n /* --------------Gloabl Vars-----------------------*/\n\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.showSuccessMessage = false;\n vm.goToPage = goToPage;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n\n /* --------------Function Definitions-----------------------*/\n\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function goToPage(url) {\n location.href = url;\n }\n function load() {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n commonService.executePromises([getAccountBalance({\n contractAccountId: globalAccountInfo.accountSelected.accountNum\n }), getAccountBalanceRegular({\n accountList: [{\n contractAccountNumber: globalAccountInfo.accountSelected.accountNum,\n zipCode: globalAccountInfo.accountSelected.zipCode\n }]\n })]).then(function (result) {\n showSuccessMessage();\n vm.loadingSpinner = false;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function showSuccessMessage() {\n var previousAccountBalance = sessionStorageService.get(assetService.storageKeys.accountBalance);\n var currentAccountBalance = accountBalanceDetails.PrepaidBalance;\n // billingInfo.totalDueDlrs || 0;\n\n if (parseFloat(currentAccountBalance) > parseFloat(previousAccountBalance)) {\n var addedAmount = parseFloat(currentAccountBalance) - parseFloat(previousAccountBalance);\n vm.addedAmount = addedAmount.toFixed(2);\n vm.showSuccessMessage = true;\n vm.showComponent = true;\n //store latest balance in session\n sessionStorageService.set(assetService.storageKeys.accountBalance, currentAccountBalance);\n virtualPagePush('prepaid-advantage', 'add-funds', 'success', 'confirmation');\n } else {\n location.href = vm.ErrorPageUrl;\n }\n }\n function getAccountBalance(params) {\n return getAccountBalanceForPrepaid.sitecore.getAccountBalanceForPrepaid(params).then(function (result) {\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\n }, function (error) {\n vm.showFailedState = true;\n });\n }\n function getAccountBalanceRegular(params) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(params).then(function (result) {\n billingInfo = result.getAccountAndBillingInfoResList[0];\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.loadingSpinner = true;\n load();\n };\n init();\n}\napp.controller('ccPrepaidAddFunds', ccPrepaidAddFunds);\nccPrepaidAddFunds.$inject = ['prepaidService', '$state', 'assetService', 'sessionStorageService', '$scope'];\nfunction ccPrepaidAddFunds(prepaidService, $state, assetService, sessionStorageService, $scope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.loadingSpinner = true;\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n $state.go(prepaidService.prepaidRouteState.ADDFUNDS_LP);\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.loadingSpinner = true;\n load();\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n// eslint-disable-next-line no-use-before-define\napp.controller('CCAutoReloadWhenController', CCAutoReloadWhenController);\n\n// eslint-disable-next-line no-use-before-define\nCCAutoReloadWhenController.$inject = ['$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService'];\n\n// eslint-disable-next-line max-len\nfunction CCAutoReloadWhenController($state, $scope, $rootScope, assetService, sessionStorageService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.newAmountsArray = [];\n\n /* --------------Global Vars-----------------------*/\n vm.autoReload = {\n when: {}\n };\n $rootScope.mainBtnActivate = true;\n $rootScope.apiValidation = true;\n\n /* --------------Function Declarations-----------------------*/\n vm.formatNewAmounts = formatNewAmounts;\n vm.sumAll = sumAll;\n /* --------------Function Definitions-----------------------*/\n function sumAll() {\n vm.newTotalAmount = 0;\n vm.totalNoWarmth = 0;\n var element = vm.autoReload.when.amount;\n if (isNaN(Number(element.charAt(0)))) {\n if (element.charAt(0) === '-') {\n vm.newTotalAmount += Number(element);\n } else {\n var sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n vm.newTotalAmount += Number(sub);\n }\n } else {\n vm.newTotalAmount += Number(element);\n }\n vm.autoReload.when.amount = vm.newTotalAmount.toFixed(2);\n vm.formCompleted();\n }\n vm.formCompleted = function () {\n if (vm.autoReload.when.whenOption === 'BalanceEqualToOrBelow') {\n vm.autoReload.when.daysRemaining = undefined;\n $rootScope.mainBtnActivate = !vm.autoReload.when.amount;\n }\n if (vm.autoReload.when.whenOption === 'DaysRemaining') {\n vm.autoReload.when.amount = undefined;\n $rootScope.mainBtnActivate = !vm.autoReload.when.daysRemaining;\n }\n vm.loadingSpinner = false;\n vm.showComponent = true;\n };\n function formatNewAmounts(index, ident) {\n //sumAll();\n vm.newAmountsArray[index] = {\n id: ident,\n bill: isNaN(vm.bindedAmounts[index].charAt(0)) ? vm.bindedAmounts[index].charAt(0) == '-' ? vm.bindedAmounts[index] : vm.bindedAmounts[index].substring(1).replace(/,/g, '') : vm.bindedAmounts[index]\n };\n }\n function load() {\n $rootScope.btnType = false;\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n if (storage) vm.autoReload = storage || {};\n if (storage) vm.autoReload.when = storage.when || {};\n //come to the service\n vm.autoReload.prepaid = storage.averageCostPerDay;\n if (vm.autoReload.prepaid != '') {\n vm.autoReload.prepaid = parseFloat(vm.autoReload.prepaid).toFixed(2);\n vm.autoReload.averageCostPerDay = vm.autoReload.prepaid;\n }\n if (!vm.autoReload.when.whenOption) {\n vm.autoReload.when.whenOption = 'BalanceEqualToOrBelow';\n }\n vm.formCompleted();\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n $scope.$on('saveData', function (event, data) {\n $rootScope.btnType = true;\n $rootScope.apiValidation = false;\n $rootScope.mainBtnActivate = false;\n if (vm.autoReload.when.whenOption === 'DaysRemaining') {\n vm.autoReload.when.amount = vm.autoReload.prepaid;\n }\n $scope.$emit('changueTrackSelected', assetService.autoReload.stepPosition.reloadAmount);\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\n });\n vm.nextComponent = function (trackName) {};\n vm.gotoStep = function (trackName) {};\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n// eslint-disable-next-line no-use-before-define\napp.controller('CCAutoReloadAmountController', CCAutoReloadAmountController);\n\n// eslint-disable-next-line no-use-before-define\nCCAutoReloadAmountController.$inject = ['$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'commongaTaggingService'];\n\n// eslint-disable-next-line max-len\nfunction CCAutoReloadAmountController($state, $scope, $rootScope, assetService, sessionStorageService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.init = init;\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n addedSpec: ''\n };\n vm.workFlow = '';\n vm.headline = '';\n vm.buttonText = '';\n vm.virtual = [];\n /* --------------Global Vars-----------------------*/\n vm.autoReload = {\n reload: {}\n };\n $rootScope.mainBtnActivate = true;\n $rootScope.apiValidation = false;\n vm.showError = false;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n /* --------------Function Declarations-----------------------*/\n vm.sumAll = sumAll;\n\n /* --------------Function Definitions-----------------------*/\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function sumAll() {\n vm.newTotalAmount = 0;\n var element = vm.autoReload.reload.reloadAmount;\n if (isNaN(Number(element.charAt(0)))) {\n if (element.charAt(0) === '-') {\n vm.newTotalAmount += Number(element);\n } else {\n var sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n vm.newTotalAmount += Number(sub);\n }\n if (Number(sub) < 15 || Number(sub) > 500) {\n vm.showError = true;\n } else {\n vm.showError = false;\n }\n } else {\n vm.newTotalAmount += Number(element);\n }\n vm.autoReload.reload.reloadAmount = vm.newTotalAmount.toFixed(2);\n vm.formCompleted();\n }\n vm.formCompleted = function () {\n $rootScope.mainBtnActivate = !vm.autoReload.reload.reloadAmount;\n if (vm.showError) {\n $rootScope.mainBtnActivate = true;\n }\n vm.loadingSpinner = false;\n vm.showComponent = true;\n };\n function load() {\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n if (storage) vm.autoReload = storage || {};\n if (storage) vm.autoReload.reload = storage.reload || {};\n vm.autoReload.averageCostPerDay = storage.averageCostPerDay;\n if (vm.autoReload.averageCostPerDay != '') {\n vm.autoReload.averageCostPerDay = parseFloat(vm.autoReload.averageCostPerDay).toFixed(2);\n }\n //come to the service\n vm.formCompleted();\n }\n $scope.$on('cancelling', function (event, data) {\n vm.autoReload = {\n reload: {\n reloadAmount: ''\n },\n when: {\n amount: '',\n daysRemaining: ''\n }\n };\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\n });\n\n /* --------------Emit and Broadcast events-----------------------*/\n $scope.$on('saveData', function (event, data) {\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\n attributePush('workFlow:' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'subheadline:' + vm.taggingElements.subHeadline, 'buttonText:' + vm.taggingElements.buttonText, 'addedSpec:' + vm.taggingElements.addedSpec);\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, vm.taggingElements.subHeadline, vm.taggingElements.buttonText, vm.taggingElements.addedSpec);\n });\n vm.nextComponent = function (trackName) {};\n vm.gotoStep = function (trackName) {};\n\n /* ---------------Initialization-------------------*/\n function init(workflow, headline, subheadline, buttonText, addedSpec) {\n vm.taggingElements.workflow = workflow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subheadline;\n vm.taggingElements.buttonText = buttonText;\n vm.taggingElements.addedSpec = addedSpec;\n load();\n }\n\n //init();\n}\n// eslint-disable-next-line no-use-before-define\napp.controller('CCAutoReloadBancAcctController', CCAutoReloadBancAcctController);\n\n// eslint-disable-next-line no-use-before-define\nCCAutoReloadBancAcctController.$inject = ['$log', '$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'getPrepaidDetailsService', 'genericHelperService', 'manageBankAccountsForPrepaidService', 'getAccountBalanceForRegularAccountService', 'speedpayService', 'commongaTaggingService', 'ccAutoPayAssetService'];\n\n// eslint-disable-next-line max-len\nfunction CCAutoReloadBancAcctController($log, $state, $scope, $rootScope, assetService, sessionStorageService, getPrepaidDetailsService, genericHelperService, manageBankAccountsForPrepaidService, getAccountBalanceForRegularAccountService, speedpayService, commongaTaggingService, ccAutoPayAssetService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.statusIsProcessing = false;\n /* --------------Global Vars-----------------------*/\n vm.bankAccounts = [];\n vm.bankList = [];\n vm.bankAccount = {};\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.selectedAccount = {};\n vm.autoReload = {\n payment: {}\n };\n vm.banckAccounts = [];\n vm.data = {};\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n addedSpec: ''\n };\n vm.mainBtnActivate = true;\n $rootScope.apiValidation = true;\n $rootScope.btnType = false;\n $rootScope.editBtn = false;\n vm.dropdownT = 'dropText';\n vm.dropdownV = assetService.autoReload.dropdownKeys.value;\n var _kwValue = assetService.strings.VALUE;\n vm.disableBankAccount = false;\n vm.showDrops = false;\n vm.showAddbankAccountLink = true;\n vm.bankAccountPresent = false;\n vm.accNumEmpty = false;\n vm.accNameEmpty = false;\n vm.accRoutingEmpty = false;\n vm.accNumEmpty = false;\n vm.accConfirmNumEmpty = false;\n vm.accTypeEmpty = false;\n vm.doNotAcceptCheck = false;\n vm.getaccountNumLimit = undefined;\n vm.getNicknamelimit = undefined;\n /* --------------Function Declarations-----------------------*/\n vm.clearAutoReload = clearAutoReload;\n\n /* --------------Function Definitions-----------------------*/\n vm.init = init;\n vm.getPrepaidDetails = getPrepaidDetails;\n vm.manageBankAccountsForPrepaid = manageBankAccountsForPrepaid;\n vm.hideBankForm = hideBankForm;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.populateGATagging = populateGATagging;\n var creditOrDebitCardWithSpeedpay = assetService.autoReload.paymentOptions.CreditOrDebitCardWithSpeedpay;\n var bankAccount = assetService.autoReload.paymentOptions.BankAccount;\n vm.errorCode = '';\n vm.BankAccountDefaultText = 'Select Bank Account';\n vm.goToSpeedpay = goToSpeedpay;\n vm.gatEvents = gatEvents;\n vm.checkNickname = checkNickname;\n vm.noNameError = noNameError;\n vm.checkAcctNum = checkAcctNum;\n vm.noAccError = noAccError;\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\n vm.noConfirmAccError = noConfirmAccError;\n\n /* ---------------Initialization-------------------*/\n\n function checkNickname() {\n var nameLength = vm.data.bankAccountNickname ? vm.data.bankAccountNickname.length : 0;\n if (nameLength >= vm.getNicknamelimit) {\n vm.showNameError = true;\n }\n }\n function noNameError() {\n var nameLength = vm.data.bankAccountNickname ? vm.data.bankAccountNickname.length : 0;\n if (nameLength > vm.getNicknamelimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function checkAcctNum() {\n var accLength = vm.data.accountNumber ? vm.data.accountNumber.length : 0;\n if (accLength >= vm.getaccountNumLimit) {\n vm.showAccError = true;\n }\n }\n function noAccError() {\n var accLength = vm.data.accountNumber ? vm.data.accountNumber.length : 0;\n if (accLength > vm.getaccountNumLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function checkConfirmAcctNum() {\n var accCLength = vm.data.confirmAccountNumber ? vm.data.confirmAccountNumber.length : 0;\n if (accCLength >= vm.getaccountNumLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function noConfirmAccError() {\n var accCLength = vm.data.confirmAccountNumber ? vm.data.confirmAccountNumber.length : 0;\n if (accCLength > vm.getaccountNumLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function populateGATagging(workFlow, headline, subheadline, buttonText) {\n vm.taggingElements.workflow = workFlow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subheadline;\n vm.taggingElements.buttonText = buttonText;\n }\n function clearAutoReload(url) {\n vm.autoReload = {\n reload: {\n reloadAmount: ''\n },\n when: {\n amount: '',\n daysRemaining: ''\n }\n };\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\n window.location.href = url;\n }\n vm.formCompleted = function () {\n if (vm.autoReload.payment.paymentOption === bankAccount) {\n if (!vm.newBA) {\n vm.mainBtnActivate = !vm.autoReload.payment.banckAccount;\n } else {\n vm.mainBtnActivate = $scope.autoReload.$invalid || vm.data.confirmAccountNumber !== vm.data.accountNumber || !vm.data.accountNumber;\n }\n }\n if (vm.autoReload.payment.paymentOption === creditOrDebitCardWithSpeedpay) {\n vm.autoReload.payment.banckAccount = undefined;\n vm.autoReload.payment.banckAccountId = undefined;\n vm.data.bankAccountNickname = undefined;\n vm.data.routingNumber = undefined;\n vm.data.routingNumber2 = undefined;\n vm.data.accountNumber = undefined;\n vm.data.confirmAccountNumber = undefined;\n vm.data.accountType = undefined;\n vm.newBA = false;\n vm.mainBtnActivate = false;\n }\n };\n function getPrepaidDetails() {\n getPrepaidDetailsService.sitecore.getPrepaidDetails(vm.getData).then(function (result) {\n if (result.MessageNum !== '102') {\n vm.bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\n vm.bankList.forEach(function (bankAccount) {\n bankAccount.dropText = '';\n if (bankAccount.BankDescription) {\n bankAccount.dropText = bankAccount.BankDescription + ' - ' + '******' + bankAccount.BankAccountNumber.slice(-4);\n } else {\n bankAccount.dropText = ' ' + ' - ' + '******' + bankAccount.BankAccountNumber.slice(-4);\n }\n });\n vm.bankAccounts = genericHelperService.createDropdownList(vm.bankList, vm.dropdownV, vm.dropdownT);\n vm.bankAccounts.push({\n text: 'Add Account',\n value: ccAutoPayAssetService.strings.addAccount\n });\n }\n if (vm.bankList.length > 0) {\n vm.bankAccountPresent = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function manageBankAccountsForPrepaid(trackName) {\n manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(vm.data).then(function (result) {\n vm.errorCode = $scope.analytics.ServiceErrorCode;\n if (result.d.ManageBankAcc_NAV.ReplyCode === assetService.replyCodes.SUCCESS) {\n vm.autoReload.payment.banckAccountId = result.d.ManageBankAcc_NAV.BankId;\n vm.gotoStep(trackName);\n vm.autoReload.payment.warning = false;\n $scope.$emit('classTrack', 'ccAutoReloadReview');\n vm.statusIsProcessing = false;\n } else if (result.d.ManageBankAcc_NAV.MessageNum === vm.errorCode) {\n vm.statusIsProcessing = true;\n } else {\n vm.statusIsProcessing = true;\n vm.autoReload.payment.warning = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n if (vm.statusIsProcessing == true) {\n attributePush('workFlow:' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'subheadline:' + vm.taggingElements.subHeadline, 'buttonText:' + vm.taggingElements.buttonText);\n virtualPagePush('prepaid-advantage', 'auto-reload', 'payment-method', 'select-a-reload-amount', 'add', 'error');\n }\n }\n function gatEvents() {\n if (vm.data.bankAccountNickname != undefined && vm.data.routingNumber2 != undefined && vm.data.accountNumber != undefined && vm.data.confirmAccountNumber != undefined && vm.selectAccountType != undefined) {\n attributePush(\"workFlow:\".concat($('#hidden-value').attr('workFlow')), \"headline:\".concat($('#hidden-value').attr('headLine')), \"subheadline:\".concat($('#hidden-value').attr('subheadLine')), \"buttonText:\".concat($('#hidden-value').attr('buttonText')));\n virtualPagePush(\"\".concat($('#hidden-value').attr('workFlow')), \"\".concat($('#hidden-value').attr('headLine')), \"\".concat($('#hidden-value').attr('subheadLine')), \"\".concat($('#hidden-value').attr('buttonText')), \"\".concat($('#hidden-value').attr('addedSpec')), \"\".concat($('#hidden-value').attr('bankLabel')), \"\".concat($('#hidden-value').attr('buttonLabel')));\n }\n }\n vm.addnew = function ($event) {\n if ($event) {\n $event.preventDefault();\n }\n vm.newBA = true;\n vm.showDrops = true;\n vm.bankAccounts.forEach(function (item) {\n //delete item.selected;\n //Select the add account option in dropdown\n if (item.value === ccAutoPayAssetService.strings.addAccount) {\n vm.autoReload.payment.banckAccountId = '';\n item.selected = true;\n vm.BankAccountDefaultText = item.text;\n vm.selectedAccount = item.value;\n getAccountType();\n if (vm.autoReloadForm == null) {\n vm.autoReloadForm = {};\n }\n vm.autoReloadForm.bankAccount = item.value;\n }\n });\n showBankDetailsForm();\n };\n function showBankDetailsForm() {\n vm.newBA = true;\n vm.showDrops = true;\n vm.autoReload.payment.banckAccount = false;\n vm.mainBtnActivate = false;\n vm.formCompleted();\n }\n function getAccountBalance(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n vm.temp = [];\n vm.temp = result.getAccountAndBillingInfoResList.filter(function (item) {\n return item.contractAccountNumber == data.accountList[0].contractAccountNumber;\n });\n\n // vm.paynowStatus = (vm.temp[0].cashOnly === 'T' || vm.temp[0].noCheckDraftInd === 'T') ? \"failure\" : \"success\";\n\n if (vm.temp[0].cashOnly === 'T') {\n vm.disableBankAccount = true;\n } else {\n if (vm.temp[0].noCheckDraftInd === 'T') {\n vm.disableBankAccount = true;\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.statusIsProcessing = false;\n $rootScope.$broadcast('btnShow', true);\n // vm.banckAccounts = [{ text: 'Steve´s Ally', value: 'Steve´s Ally' }];\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n if (storage) vm.autoReload = storage || {};\n if (storage.payment) {\n vm.autoReload.payment = storage.payment;\n } else {\n vm.autoReload.payment = {\n paymentOption: ''\n };\n }\n vm.autoReload.copyTBD = 1.5;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n accountBalanceRes = sessionStorageService.get('accountBalanceRes');\n vm.currentAccount = accountBalanceRes.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == _globalSelectedAccount.accountNum;\n });\n vm.indicatorStatusCurrentAccount = vm.currentAccount[0];\n vm.doNotAcceptCheck = vm.indicatorStatusCurrentAccount.noCheckDraftInd === 'T' ? true : false;\n vm.getData = {\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.relatedBPNumber) || _globalAccountInfo.accountSelected.primaryBp,\n //contractAccountId: _globalSelectedAccount.accountNum,\n bankDetail: true\n };\n vm.getPrepaidDetails();\n getAccountBalance({\n accountList: [{\n contractAccountNumber: _globalSelectedAccount.accountNum\n }]\n });\n vm.formCompleted();\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n $scope.$on('dropdown', function (event, data) {\n vm.autoReload.payment.banckAccountId = data.value;\n });\n $scope.onSelectItem = function (item) {\n vm.showDrops = false;\n vm.newBA = false;\n vm.BankAccountDefaultText = item.text;\n vm.selectedAccount = _.find(vm.bankList, function (bankAcc) {\n return bankAcc.BankAccountId === item.value;\n });\n getAccountType();\n if (item.value === 'addAccount') {\n vm.showDrops = true;\n showBankDetailsForm();\n } else {\n vm.showDrops = false;\n vm.showAddbankAccountLink = false;\n }\n };\n $scope.onSelectItems = function (item) {\n vm.selectedAccount = _.find(vm.bankList, function (bankAcc) {\n return bankAcc.BankAccountId === item.value;\n });\n };\n function getAccountType() {\n vm.accountTypeValue = '';\n vm.accountType.forEach(function (item) {\n if (vm.selectedAccount && item.value === vm.selectedAccount.BankAccountType) {\n vm.accountTypeValue = item.text;\n }\n });\n }\n $scope.onSelectAccountType = function (item) {\n vm.formCompleted();\n };\n function hideBankForm() {\n vm.autoReloadForm.bankAccountInfo = true;\n if (vm.autoReloadForm.bankAccount) {\n vm.addBA = false;\n vm.mainBtnActivate = false;\n vm.autoReload.payment.banckAccountId = vm.autoReloadForm.bankAccount;\n }\n }\n vm.gotoStep = function (trackName) {\n $rootScope.btnType = true;\n $rootScope.editBtn = true;\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\n $rootScope.$broadcast('btnShow', false);\n $scope.$emit('changueTrackSelected', assetService.autoReload.stepPosition[trackName]);\n };\n function redirection() {\n vm.autoReload.payment.warning = false;\n vm.gotoStep(vm.trackName);\n $scope.$emit('classTrack', 'ccAutoReloadReview');\n }\n vm.nextComponent = function (trackName) {\n vm.accNameEmpty = vm.data.bankAccountNickname ? false : true;\n vm.accRoutingEmpty = vm.data.routingNumber2 ? false : true;\n vm.accNumEmpty = vm.data.accountNumber ? false : true;\n vm.accConfirmNumEmpty = vm.data.confirmAccountNumber ? false : true;\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\n if (vm.newBA && vm.autoReload.payment.paymentOption === bankAccount) {\n vm.data.action = assetService.serviceActions.manageBankAccountsForPrepaid.ADD;\n vm.data.businessPartnerId = sessionStorageService.get(assetService.storageKeys.relatedBPNumber) || _globalSelectedAccount.primaryBp;\n vm.data.bankDescription = vm.data.bankAccountNickname;\n vm.data.routingNumber = \"\".concat(vm.data.routingNumber2);\n vm.data.routingNumber = ('000000000' + vm.data.routingNumber).slice(-9);\n vm.data.accountType = vm.selectAccountType;\n vm.data.requestedBy = vm.emailId.primaryEmail;\n if (vm.data.bankAccountNickname != undefined && vm.data.routingNumber2 != undefined && vm.data.accountNumber != undefined && vm.data.confirmAccountNumber != undefined && vm.selectAccountType != undefined) {\n vm.manageBankAccountsForPrepaid(trackName);\n }\n } else {\n vm.trackName = trackName;\n redirection();\n }\n };\n function goToSpeedpay() {\n var speedFrameUrl = location.href.split('?')[0] + '?action=' + assetService.strings.START;\n //Store the request in local storage\n sessionStorageService.set(assetService.storageKeys.speedframeCallBackUrl, speedFrameUrl);\n speedpayService.getSpeedpayUrl({\n action: 'start',\n disableACH: 'Y',\n login: _globalSelectedAccount.primaryBp,\n speedframeCallbackUrl: speedFrameUrl\n }).then(function (result) {\n window.location.href = result;\n });\n }\n vm.previousComponent = function (trackName) {\n vm.gotoStep(trackName);\n };\n\n /* ---------------Initialization-------------------*/\n\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\n vm.getaccountNumLimit = accountNumberLimit;\n vm.getNicknamelimit = nicknameLimit;\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n // vm.accountType.unshift({\n // text: 'Add Account Type',\n // value: '',\n // });\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n load();\n }\n init();\n}\napp.controller('CCAutoReloadReviewController', CCAutoReloadReviewController);\nCCAutoReloadReviewController.$inject = ['$log', '$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'getPrepaidDetailsService', 'getUpdateCardDetailsService', 'enrollUnenrollInAutoReloadService', 'genericHelperService', 'commongaTaggingService', 'commonService', '$location'];\nfunction CCAutoReloadReviewController($log, $state, $scope, $rootScope, assetService, sessionStorageService, getPrepaidDetailsService, getUpdateCardDetailsService, enrollUnenrollInAutoReloadService, genericHelperService, commongaTaggingService, commonService, $location) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Global Vars-----------------------*/\n vm.autoReload = {\n order: {}\n };\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.banckAccount = {\n BankAccountNumber: assetService.autoReload.password\n };\n var findDetails = assetService.autoReload.paymentOptions.BankAccount;\n var actioEnroll = assetService.serviceActions.enrollUnenrollInAutoReload.ENRL_AUTO;\n $rootScope.mainBtnActivate = true;\n $rootScope.editBtn = false;\n var _kwValue = assetService.strings.VALUE;\n /* --------------Function Declarations-----------------------*/\n vm.init = init;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.loadingSpinner = false;\n /* --------------Function Definitions-----------------------*/\n\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function load() {\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n if (storage) vm.autoReload = storage || {};\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n if (vm.autoReload.payment.paymentOption === findDetails) {\n vm.paymentMethod = undefined;\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n vm.getData = {\n businessPartnerId: _globalSelectedAccount.primaryBp,\n contractAccountId: _globalSelectedAccount.accountNum,\n bankDetail: true\n };\n vm.getPrepaidDetails();\n } else vm.paymentMethod = assetService.autoReload.Speedpay;\n }\n function getPrepaidDetails() {\n getPrepaidDetailsService.sitecore.getPrepaidDetails(vm.getData).then(function (result) {\n vm.DaysRemainingThreshold = result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload.results[0].DaysRemainingThreshold;\n vm.BalanceThreshold = result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload.results[0].BalanceThreshold;\n var bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\n bankList.forEach(function (bankAccount) {\n vm.accountTypeValue = '';\n vm.accountType.forEach(function (item) {\n if (item.value === bankAccount.BankAccountType) {\n vm.accountTypeValue = item.text;\n }\n });\n });\n vm.banckAccount = bankList.find(function (account) {\n return account.BankAccountId === vm.autoReload.payment.banckAccountId;\n });\n vm.banckAccount.BankAccountNumber = \"\".concat(vm.banckAccount.BankAccountNumber);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getUpdateCardDetails(action, expire, externalId) {\n if (action === 'DISPLAY') {\n vm.getCardData = {\n action: action,\n businessPartnerId: _globalSelectedAccount.primaryBp,\n requestedBy: vm.emailId.primaryEmail\n };\n }\n if (action === 'ADD') {\n vm.getCardData = {\n action: action,\n businessPartnerId: _globalSelectedAccount.primaryBp,\n requestedBy: vm.emailId.primaryEmail,\n creditCardNumber: externalId,\n creditCardType: '0006',\n expirationDate: expire\n };\n }\n return getUpdateCardDetailsService.sitecore.getUpdateCardDetails(vm.getCardData).then(function (result) {\n if (action === 'DISPLAY') {\n vm.result = result;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function enrollUnenrollInAutoReload(dataOject, trackName) {\n enrollUnenrollInAutoReloadService.sitecore.enrollUnenrollInAutoReload(dataOject).then(function (result) {\n console.log(result);\n vm.loadingSpinner = false;\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) {\n $rootScope.editBtn = false;\n $rootScope.stepsShow = false;\n $scope.$emit('changueTrackSelected', assetService.autoReload.stepPosition[trackName]);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n vm.nextComponent = function (trackName) {\n $rootScope.editBtn = false;\n $rootScope.stepsShow = false;\n var daysRemaining = vm.autoReload.when.whenOption === 'DaysRemaining';\n var dataObj = {\n action: actioEnroll,\n contractAccountId: _globalSelectedAccount.accountNum,\n daysRemainingThreshold: daysRemaining ? \"\".concat(vm.autoReload.when.daysRemaining) : \"\".concat(vm.DaysRemainingThreshold),\n accountBalanceThreshold: daysRemaining ? \"\".concat(vm.BalanceThreshold) : \"\".concat(vm.autoReload.when.amount),\n reloadAmount: \"\".concat(vm.autoReload.reload.reloadAmount),\n bankAccountId: \"\".concat(vm.autoReload.payment.banckAccountId),\n bankDescription: 'BANK',\n requestedOn: null,\n requestedTime: 'PT00H00M00S',\n requestedBy: vm.emailId.primaryEmail\n };\n enrollUnenrollInAutoReload(dataObj, trackName);\n };\n function speedpayCheck() {\n vm.loadingSpinner = true;\n $scope.$emit('classTrack', 'ccAutoReloadReview');\n var urlParams = $location.search();\n var externalId = urlParams.externalId,\n expirationDate = urlParams.expirationDate;\n var displayAction = assetService.serviceActions.updateCardDetails.DISPLAY;\n var addAction = assetService.serviceActions.updateCardDetails.ADD;\n vm.autoReload = sessionStorageService.get(assetService.autoReload.storage);\n var daysRemaining = vm.autoReload.when.whenOption === 'DaysRemaining';\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n var expirationDateArr = expirationDate.split('/');\n var monthEndDate = new Date(expirationDateArr[1], parseInt(expirationDateArr[0]), 0);\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\n var detailCreditCardPromise = [getUpdateCardDetails(displayAction, null, null)];\n vm.DaysRemainingThreshold = '0.00';\n vm.BalanceThreshold = '0.00';\n var enrollRequest = {\n action: actioEnroll,\n contractAccountId: _globalSelectedAccount.accountNum,\n daysRemainingThreshold: daysRemaining ? \"\".concat(vm.autoReload.when.daysRemaining) : \"\".concat(vm.DaysRemainingThreshold),\n accountBalanceThreshold: daysRemaining ? \"\".concat(vm.BalanceThreshold) : \"\".concat(vm.autoReload.when.amount),\n reloadAmount: \"\".concat(vm.autoReload.reload.reloadAmount),\n bankAccountId: '',\n bankDescription: 'CARD',\n requestedBy: vm.emailId.primaryEmail\n };\n\n // get existing card details\n commonService.executePromises(detailCreditCardPromise).then(function () {\n var cardDetails = vm.result.d.CredCard_Res.results.length > 0 && vm.result.d.CredCard_Res.results.filter(function (item) {\n return item.CreditCardNumber === externalId;\n });\n\n //if card details already exists\n if (cardDetails && cardDetails.length > 0) {\n enrollRequest.bankAccountId = cardDetails[0].CreditCardID;\n enrollUnenrollInAutoReload(enrollRequest, 'succes');\n } else {\n // if the card details doesn't exists\n var updateCreditCardPromise = [getUpdateCardDetails(addAction, monthEndDate, externalId)];\n\n //update credit card details\n commonService.executePromises(updateCreditCardPromise).then(function () {\n //get the credit card details\n var getDetailCreditCardPromise = [getUpdateCardDetails(displayAction, null, null, null)];\n commonService.executePromises(getDetailCreditCardPromise).then(function () {\n var cardDetails = vm.result.d.CredCard_Res.results.length > 0 && vm.result.d.CredCard_Res.results.filter(function (item) {\n return item.CreditCardNumber === externalId;\n });\n if (cardDetails && cardDetails.length > 0) {\n enrollRequest.bankAccountId = cardDetails[0].CreditCardID;\n //call enroll service\n enrollUnenrollInAutoReload(enrollRequest, 'succes');\n }\n });\n });\n }\n });\n }\n vm.previousComponent = function (trackName) {\n vm.gotoStep(trackName);\n };\n vm.gotoStep = function (trackName) {\n $rootScope.editBtn = true;\n $rootScope.apiValidation = false;\n $scope.$emit('changueTrackSelected', assetService.autoReload.stepPosition[trackName]);\n };\n\n /* ---------------Initialization-------------------*/\n vm.getPrepaidDetails = getPrepaidDetails;\n vm.getUpdateCardDetails = getUpdateCardDetails;\n function init(accountTypeArray) {\n //for speedpay check start\n var urlParams = $location.search();\n var externalId = urlParams.externalId,\n expirationDate = urlParams.expirationDate;\n if (externalId != null && expirationDate != null && externalId != '' && expirationDate != '') {\n speedpayCheck();\n return;\n }\n //speedpay check end\n\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n load();\n }\n}\napp.controller('CCAutoReloadSuccesController', CCAutoReloadSuccesController);\nCCAutoReloadSuccesController.$inject = ['$state', '$scope', '$rootScope', 'assetService', 'sessionStorageService', 'commongaTaggingService'];\nfunction CCAutoReloadSuccesController($state, $scope, $rootScope, assetService, sessionStorageService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.init = init;\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n subHeadline2: ''\n };\n\n /* --------------Global Vars-----------------------*/\n vm.autoReload = {\n email: ''\n };\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.populateGATagging = populateGATagging;\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function populateGATagging() {\n attributePush('workFlow:' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'subheadline:' + vm.taggingElements.subHeadline, 'buttonText:' + vm.taggingElements.buttonText);\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, vm.taggingElements.subHeadline, vm.taggingElements.buttonText);\n }\n function load() {\n var storage = sessionStorageService.get(assetService.autoReload.storage);\n if (storage) vm.autoReload = storage || {};\n if (storage) vm.autoReload.email = storage.email || 'email@email.com';\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, vm.taggingElements.subHeadline, vm.taggingElements.subHeadline2);\n }\n\n /* --------------Emit and Broadcast events-----------------------*/\n\n /* ---------------Initialization-------------------*/\n function init(workflow, headline, subHeadline, buttonText, subHeadline2) {\n vm.taggingElements.workflow = workflow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subHeadline;\n vm.taggingElements.buttonText = buttonText;\n vm.taggingElements.subHeadline2 = subHeadline2;\n load();\n }\n ;\n\n //init();\n}\napp.controller('ccAddBankAccountPrepaid', ccAddBankAccountPrepaid);\nccAddBankAccountPrepaid.$inject = ['$log', '$modalInstance', 'prepaidService', 'manageBankAccountsForPrepaidService', 'assetService', 'apiApigeeConfigService', 'sessionStorageService', 'genericHelperService', 'broadcastService', 'ccAutoPayAssetService', '$scope', 'getLoggedInUserDetailsService', 'commongaTaggingService'];\nfunction ccAddBankAccountPrepaid($log, $modalInstance, prepaidService, manageBankAccountsForPrepaidService, assetService, apiApigeeConfigService, sessionStorageService, genericHelperService, broadcastService, ccAutoPayAssetService, $scope, getLoggedInUserDetailsService, commongaTaggingService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.init = init;\n vm.populateAccountTypes = populateAccountTypes;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.accountTypeValue = '';\n var _kwValue = assetService.strings.VALUE;\n vm.form = {\n nickname: null,\n rountingNumber: null,\n accountNumber: null,\n accNumberConfirm: null,\n accountType: null\n };\n vm.loaded = false;\n vm.showerror = false;\n vm.statusIsProcessing = false;\n vm.currentUser = {};\n vm.accNumEmpty = false;\n vm.accNameEmpty = false;\n vm.accRoutingEmpty = false;\n vm.accNumEmpty = false;\n vm.accConfirmNumEmpty = false;\n vm.accTypeEmpty = false;\n var _accountIdGenerated = null;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n vm.getAccountNumLimit = undefined;\n vm.getNicknameLimit = undefined;\n /**\r\n * Function Definitions\r\n */\n vm.closeModal = closeModal;\n vm.save = save;\n vm.checkAndContinue = checkAndContinue;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.taggingElements = {\n workflow: '',\n headline: '',\n subHeadline: '',\n buttonText: '',\n addedSpec: ''\n };\n vm.checkNickname = checkNickname;\n vm.noNameError = noNameError;\n vm.checkAcctNum = checkAcctNum;\n vm.noAccError = noAccError;\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\n vm.noConfirmAccError = noConfirmAccError;\n\n /**\r\n * Function Declarations\r\n */\n\n function closeModal() {\n broadcastService.modalAddNewBankAccountClosed();\n $modalInstance.close();\n }\n function checkAndContinue(value) {\n vm.showError = false;\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function checkNickname() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength >= vm.getNicknameLimit) {\n vm.showNameError = true;\n }\n }\n function noNameError() {\n var nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\n if (nameLength > vm.getNicknameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function checkAcctNum() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength >= vm.getAccountNumLimit) {\n vm.showAccError = true;\n }\n }\n function noAccError() {\n var accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\n if (accLength > vm.getAccountNumLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function checkConfirmAcctNum() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength >= vm.getAccountNumLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function noConfirmAccError() {\n var accCLength = vm.form.accNumberConfirm ? vm.form.accNumberConfirm.length : 0;\n if (accCLength > vm.getAccountNumLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function save() {\n vm.accNameEmpty = vm.form.nickname ? false : true;\n vm.accRoutingEmpty = vm.form.rountingNumber ? false : true;\n vm.accNumEmpty = vm.form.accountNumber ? false : true;\n vm.accConfirmNumEmpty = vm.form.accNumberConfirm ? false : true;\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\n var data = {\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.relatedBPNumber) || globalSelectedAccount.primaryBp,\n bankDescription: vm.form.nickname,\n accountNumber: vm.form.accountNumber,\n routingNumber: vm.form.rountingNumber,\n accountType: vm.selectAccountType,\n requestedBy: vm.emailId.primaryEmail,\n action: prepaidService.serviceActions.ADD\n };\n if (vm.form.nickname != null && vm.form.rountingNumber != null && vm.form.accountNumber != null && vm.form.accNumberConfirm != null && vm.selectAccountType != null) {\n addNewBankAccountToSAP(data).then(function () {\n if (!vm.showError) {\n $modalInstance.close();\n sessionStorageService.set(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated, _accountIdGenerated);\n data.bankAccountId = _accountIdGenerated;\n sessionStorageService.set(ccAutoPayAssetService.storageKeys.manageAutoPay.addedBankAccount, data);\n broadcastService.addNewBankAcccountIdGenerated();\n }\n });\n }\n }\n function addNewBankAccountToSAP(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data).then(function (result) {\n vm.errorCode = $scope.analytics.ServiceErrorCode;\n if (result.d.ManageBankAcc_NAV.ReplyCode === assetService.replyCodes.SUCCESS) {\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\n $scope.$emit(prepaidService.events.SAVE_MANAGE_AUTORELOAD, assetService.replyCodes.SUCCESS);\n vm.showError = false;\n attributePush('workFlow:' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'subheadline:' + vm.taggingElements.subHeadline, 'buttonText:' + vm.taggingElements.buttonText, 'addedSpec:' + vm.taggingElements.addedSpec);\n virtualPagePush('prepaid-advantage', 'manage-auto-reload', 'add-bank-account', 'add');\n } else if (result.d.ManageBankAcc_NAV.MessageNum === vm.errorCode.toString()) {\n vm.statusIsProcessing = true;\n vm.showError = true;\n if (result && result.d) {}\n } else {\n vm.statusIsProcessing = true;\n vm.showError = true;\n if (result && result.d) {}\n }\n }, function (error) {\n vm.showError = true;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function errorGATagging(errorMsg) {\n attributePush('workFlow:' + 'error ' + vm.taggingElements.workflow, 'headline:' + vm.taggingElements.headline, 'subheadline:' + vm.taggingElements.subHeadline, 'buttonText:' + errorMsg.ManageBankAcc_NAV.MessageNum, 'addedSpec:' + ' /form/prepaidservices/managebankaccount ', 'addedEvent:' + vm.taggingElements.errorMessage);\n virtualPagePush(vm.taggingElements.workflow, vm.taggingElements.headline, assetService.storageKeys.paymentMethod, vm.taggingElements.subHeadline, vm.taggingElements.buttonText, 'error', errorMsg.ManageBankAcc_NAV.MessageNum);\n }\n function load() {\n vm.loaded = true;\n vm.ShowError = false;\n vm.statusIsProcessing = false;\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n });\n /**\r\n * Initialization\r\n */\n\n function populateAccountTypes(accountTypeArray, workFlow, headline, subheadline, buttonText, errorMessage) {\n vm.taggingElements.workflow = workFlow;\n vm.taggingElements.headline = headline;\n vm.taggingElements.subHeadline = subheadline;\n vm.taggingElements.buttonText = buttonText;\n vm.taggingElements.errorMessage = errorMessage;\n init(accountTypeArray);\n }\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n // vm.accountType.unshift({\n // text: 'Add Account Type',\n // value: '',\n // });\n }\n }\n vm.getAccountNumLimit = accountNumberLimit;\n vm.getNicknameLimit = nicknameLimit;\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n load();\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('CCLowBalanceComponent', CCLowBalanceComponent);\nCCLowBalanceComponent.$inject = ['$state', '$scope', 'assetService'];\nfunction CCLowBalanceComponent($state, $scope, assetService) {\n /* Scope Vars */\n var vm = this;\n vm.data = {\n checkbox: [],\n days: [{\n number: '1'\n }, {\n number: '2'\n }, {\n number: '3'\n }, {\n number: '4'\n }, {\n number: '5'\n }\n // {\n // number: '6',\n // },\n // {\n // number: '7',\n // },\n // {\n // number: '8',\n // },\n // {\n // number: '9',\n // },\n // {\n // number: '10',\n // },\n ]\n };\n\n /* Function definitions */\n\n function load() {\n /*empty function*/\n }\n\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\n // globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n // if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n // globalSelectedAccount = globalAccountInfo.accountSelected;\n // }\n\n // vm.loadingSpinner = true;\n // load();\n // });\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\napp.controller('ccManageAutoReload', ccManageAutoReload);\nccManageAutoReload.$inject = ['$log', 'prepaidService', 'getPrepaidDetailsService', 'manageAutoReloadService', 'enrollUnenrollInAutoReloadService', 'apiApigeeConfigService', 'genericHelperService', 'speedpayService', 'sessionStorageService', 'FPModalService', 'modalService', 'assetService', 'ccAutoPayAssetService', '$rootScope', '$scope', '$state', '$timeout', 'commonService', 'componentStateHandler', 'getUpdateCardDetailsService', '$location', 'commongaTaggingService'];\nfunction ccManageAutoReload($log, prepaidService, getPrepaidDetailsService, manageAutoReloadService, enrollUnenrollInAutoReloadService, apiApigeeConfigService, genericHelperService, speedpayService, sessionStorageService, FPModalService, modalService, assetService, ccAutoPayAssetService, $rootScope, $scope, $state, $timeout, commonService, componentStateHandler, getUpdateCardDetailsService, $location, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.accountTypeValue = '';\n vm.loadingSpinner = true;\n vm.bankAccounts = [];\n vm.bankList = [];\n vm.bankAccount = {};\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.addBA = false;\n vm.saveInfo = false;\n vm.selectedAccount = {};\n vm.contractAccountId = '';\n vm.businessPartnerId = '';\n vm.activeBank = null;\n vm.error = false;\n vm.clickedSave = false;\n vm.doNotAcceptCheck = false;\n vm.autoReloadForm = {\n reloadWhenOption: '',\n balanceAmountRW: '',\n daysRemaining: '',\n reloadAmount: '',\n paymentMethod: '',\n bankAccount: '',\n bankAccountInfo: false\n };\n vm.bankAccounForm = {\n nickname: '',\n routingNumber: '',\n accountNumber: '',\n confirmAccountNumber: ''\n };\n vm.dropdownT = 'dropText';\n vm.dropdownV = assetService.autoReload.dropdownKeys.value;\n vm.dropdownBP = assetService.autoReload.dropdownKeys.bankBP;\n vm.unenrollFromAutoPay = unenrollFromAutoPay;\n vm.selectedBankAccountResponse = '';\n vm.bankListResponse = '';\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.selectedWhen = 'not set';\n vm.selectedAmount = 'not set';\n vm.selectedMethod = 'not set';\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var _kwValue = assetService.strings.VALUE;\n var reloadBalanceOption = 'balanceOption';\n var reloadDaysOption = 'daysROption';\n var paymentoptionBank = 'bankAccount';\n var paymentOptionSpeedPay = 'speedPay';\n var _newBankAccountIdGenerated = null;\n var prepaidDetails = null;\n vm.toastData = {\n option: '',\n show: false,\n messageOption: ''\n };\n vm.closeToast = closeToast;\n vm.loaded = false;\n vm.disableSaveButton = true;\n var enrolledWithCreditCard = false;\n vm.showError = false;\n /* --------------Function Definitions-----------------------*/\n vm.init = init;\n vm.populateAccountTypes = populateAccountTypes;\n vm.validateForm = validateForm;\n vm.reloadWhensumAll = reloadWhensumAll;\n vm.reloadAmountsumAll = reloadAmountsumAll;\n var actioUnenroll = assetService.serviceActions.enrollUnenrollInAutoReload.UNENRL;\n /* ---------------Initialization-------------------*/\n /**\r\n * Emit and Broadcast events\r\n */\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, function () {\n _newBankAccountIdGenerated = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated);\n var data = sessionStorageService.get(ccAutoPayAssetService.storageKeys.manageAutoPay.addedBankAccount);\n vm.toastData.option = 'success';\n vm.toastData.messageOption = 'Success! Bank account added.';\n vm.toastData.show = true;\n $timeout(function () {\n vm.toastData.show = false;\n }, 6000);\n if (data) {\n vm.selectedAccount = {};\n vm.selectedAccount.BankAccountNumber = data.accountNumber;\n vm.selectedAccount.BankRoutingNumber = data.routingNumber;\n vm.selectedAccount.BankAccountType = data.accountType;\n vm.selectedAccount.BankDescription = data.bankDescription;\n vm.selectedAccount.BankBp = data.businessPartnerId;\n vm.selectedAccount.BankAccountId = data.bankAccountId;\n vm.activeBank = vm.selectedAccount;\n vm.autoReloadForm.bankAccount = vm.selectedAccount.BankAccountId;\n vm.bankList.push(vm.selectedAccount);\n getAccountType();\n populateBankList();\n vm.disableSaveButton = false;\n }\n // reload();\n });\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, function () {\n _newBankAccountIdGenerated = null;\n reload();\n });\n function reload() {\n vm.loaded = false;\n load();\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function load() {\n vm.selectedMethod = 'load';\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.businessPartnerId = globalSelectedAccount.primaryBp;\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n accountBalanceRes = sessionStorageService.get('accountBalanceRes');\n vm.currentAccount = accountBalanceRes.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == vm.contractAccountId;\n });\n vm.indicatorStatusCurrentAccount = vm.currentAccount[0];\n vm.doNotAcceptCheck = vm.indicatorStatusCurrentAccount.noCheckDraftInd === 'T' ? true : false;\n // getBankAccounts();\n commonService.executePromises([getPrepaidDetails({\n businessPartnerId: vm.businessPartnerId,\n contractAccountId: vm.contractAccountId,\n bankDetail: false\n }), getPrepaidDetails({\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.relatedBPNumber) || globalAccountInfo.accountSelected.primaryBp,\n bankDetail: true\n })]).then(function (result) {\n if (!vm.error) {\n getSelectedBankAccounts(vm.selectedBankAccountResponse);\n getBankList(vm.bankListResponse);\n getAccountType();\n }\n }, function (error) {\n componentStateHandler.hideComponentDashboard(vm);\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function addNewBankAccount() {\n vm.selectedAccount = {};\n // vm.addBA = !vm.addBA;\n modalService.autoReloadAddNewBankAccount();\n // modalService.addNewBankAccount();\n }\n $scope.$on(assetService.events.autoreloadUnenrollNotification, function () {\n unenrollStatus();\n });\n function unenrollStatus() {\n var dataObj = {\n action: actioUnenroll,\n contractAccountId: vm.contractAccountId,\n requestedOn: null,\n requestedTime: 'PT00H00M00S',\n requestedBy: vm.emailId.primaryEmail\n };\n enrollUnenrollInAutoReload(dataObj);\n }\n function unenrollFromAutoPay() {\n modalService.manageAutoReloadUnenroll();\n }\n function enrollUnenrollInAutoReload(dataOject) {\n enrollUnenrollInAutoReloadService.sitecore.enrollUnenrollInAutoReload(dataOject).then(function (result) {\n var attributeDataValues = {\n workFlow: $('#manageAutoReload').attr('businessFunction'),\n title: $('#manageAutoReload').attr('headLine'),\n confirmation: 'confirmation'\n };\n sessionStorageService.set('manageAutoReloadUnenrollSucessConfirmation', attributeDataValues);\n location.href = '/my-account/manage-auto-reload/unenroll';\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getPrepaidDetails(params) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(function (result) {\n if (!params.bankDetail) {\n vm.selectedBankAccountResponse = result;\n } else {\n vm.bankListResponse = result;\n }\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n vm.error = true;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getSelectedBankAccounts(result) {\n var autoReloadDetails = result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload.results[0];\n vm.autoReloadForm.balanceAmountRW = autoReloadDetails.BalanceThreshold;\n vm.autoReloadForm.daysRemaining = autoReloadDetails.DaysRemainingThreshold;\n vm.autoReloadForm.reloadAmount = autoReloadDetails.ReloadAmount;\n vm.autoReloadForm.reloadWhenOption = '';\n\n // format the values\n if (vm.autoReloadForm.balanceAmountRW != '') {\n vm.autoReloadForm.balanceAmountRW = parseFloat(vm.autoReloadForm.balanceAmountRW).toFixed(2);\n if (parseFloat(vm.autoReloadForm.balanceAmountRW) > 0) {\n vm.autoReloadForm.reloadWhenOption = reloadBalanceOption;\n }\n }\n if (vm.autoReloadForm.daysRemaining != '') {\n vm.autoReloadForm.daysRemaining = parseInt(vm.autoReloadForm.daysRemaining);\n if (vm.autoReloadForm.daysRemaining > 0) {\n vm.autoReloadForm.reloadWhenOption = reloadDaysOption;\n }\n }\n if (vm.autoReloadForm.reloadAmount != '') {\n vm.autoReloadForm.reloadAmount = parseFloat(vm.autoReloadForm.reloadAmount).toFixed(2);\n vm.autoReloadForm.reloadAmount = parseFloat(vm.autoReloadForm.reloadAmount);\n }\n vm.autoReloadForm.paymentMethod = paymentOptionSpeedPay;\n vm.autoReloadForm.bankAccount = null;\n\n // for bank account\n if (autoReloadDetails.AutoReloadFlag === 'P') {\n vm.autoReloadForm.paymentMethod = paymentoptionBank;\n var selectedAccount = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\n if (selectedAccount && selectedAccount.length > 0) {\n var bankAccount = selectedAccount[0];\n vm.activeBank = bankAccount;\n vm.autoReloadForm.bankAccount = bankAccount.BankAccountId;\n vm.selectedAccount = bankAccount;\n enrolledWithCreditCard = false;\n }\n } else {\n // for credit card\n enrolledWithCreditCard = true;\n }\n }\n function getBankList(result) {\n vm.bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\n var isPresentInTheList = false;\n vm.bankList.forEach(function (bankAccount) {\n bankAccount.BankBp = bankAccount.BankBp || result.d.BusinessPartner;\n if (vm.selectedAccount && (bankAccount.BankBp || result.d.BusinessPartner) == vm.selectedAccount.BankBp && bankAccount.BankAccountId == vm.selectedAccount.BankAccountId) {\n isPresentInTheList = true;\n // break;\n }\n });\n if (!isPresentInTheList && vm.selectedAccount.length > 0) {\n vm.bankList.push(vm.selectedAccount);\n getAccountType();\n }\n populateBankList();\n vm.loaded = true;\n vm.loadingSpinner = false;\n }\n function populateBankList() {\n for (var i = 0; i < vm.bankList.length; i++) {\n var bankAccount = vm.bankList[i];\n bankAccount.dropText = '';\n if (bankAccount.BankDescription) {\n bankAccount.dropText = \"\".concat(bankAccount.BankDescription, \" - \") + \"******\".concat(bankAccount.BankAccountNumber.slice(-4));\n } else {\n bankAccount.dropText = \"\".concat(' ' + ' - ' + '******').concat(bankAccount.BankAccountNumber.slice(-4));\n }\n }\n vm.bankAccounts = genericHelperService.createDropdownListManageAutoReload(vm.bankList, vm.dropdownV, vm.dropdownBP, vm.dropdownT);\n vm.bankAccounts.forEach(function (item) {\n if (vm.activeBank != null && item.value === vm.activeBank.BankAccountId + vm.activeBank.BankBp) {\n item.selected = true;\n vm.autoReloadForm.bankAccountText = item.text;\n }\n });\n }\n function goSpeedpay() {\n var speedFrameUrl = \"\".concat(location.href.split('?')[0], \"?action=\").concat(assetService.strings.START);\n // Store the request in local storage\n sessionStorageService.set(assetService.storageKeys.speedframeCallBackUrl, speedFrameUrl);\n\n // store form values\n vm.autoReloadForm.reloadAmount = vm.autoReloadForm.reloadAmount.toString();\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReloadForm);\n var paymentTypes = document.getElementsByClassName('CC-Prepaid__manage-autoreload-card--title')[2].innerText;\n var selectedPaymentType = document.getElementsByClassName('CC-Prepaid--blue-link CC-Prepaid--fee-note')[0].innerText;\n attributePush(\"workFlow:\".concat($('#manageAutoReload').attr('businessFunction')), \"headline:\".concat($('#manageAutoReload').attr('headLine')), \"buttonText:\".concat(paymentTypes), \"addedSpec:\".concat(selectedPaymentType));\n virtualPagePush($('#manageAutoReload').attr('businessFunction'), $('#manageAutoReload').attr('headLine'), paymentTypes, selectedPaymentType);\n /* code to speedpay */\n speedpayService.getSpeedpayUrl({\n action: 'start',\n disableACH: 'Y',\n login: vm.businessPartnerId,\n password: '',\n speedframeCallbackUrl: speedFrameUrl\n }).then(function (result) {\n location.href = result;\n });\n }\n function success() {\n vm.autoReloadForm.bankAccount = true;\n }\n function saveInfoAutoreload() {\n if (vm.saveInfo) {\n $rootScope.$broadcast(prepaidService.events.ADD_BANK_ACCOUNT_PREPAID, vm.bankAccounForm);\n } else {\n saveManageAutoreload();\n }\n }\n function reloadWhenSelected() {\n vm.selectedWhen = $('.reloadWhen').text();\n }\n function reloadWhensumAll() {\n vm.newTotalAmount = 0;\n var element = vm.autoReloadForm.balanceAmountRW;\n if (isNaN(Number(element.charAt(0)))) {\n if (element.charAt(0) === '-') {\n vm.newTotalAmount += Number(element);\n } else {\n var sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n vm.newTotalAmount += Number(sub);\n }\n } else {\n vm.newTotalAmount += Number(element);\n }\n vm.autoReloadForm.balanceAmountRW = vm.newTotalAmount.toFixed(2);\n reloadWhenSelected();\n }\n function reloadAmountSelected() {\n vm.selectedAmount = $('.reloadAmount').text();\n }\n function reloadAmountsumAll() {\n vm.newTotalReloadAmount = 0;\n var sub = '';\n var element = vm.autoReloadForm.reloadAmount;\n if (isNaN(Number(element.charAt(0)))) {\n if (element.charAt(0) === '-') {\n vm.newTotalReloadAmount += Number(element);\n } else {\n sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n vm.newTotalReloadAmount += Number(sub);\n }\n if (Number(sub) < 15 || Number(sub) > 500) {\n vm.showError = true;\n } else {\n vm.showError = false;\n }\n } else {\n vm.newTotalReloadAmount += Number(element);\n }\n vm.autoReloadForm.reloadAmount = vm.newTotalReloadAmount.toFixed(2);\n reloadAmountSelected();\n }\n function paymentMethodSelected() {\n if (vm.selectedMethod !== 'load') {\n vm.selectedMethod = $('.paymentmethod').text();\n } else {\n vm.selectedMethod = 'not set';\n }\n }\n function changeReloadWhen() {\n if (vm.autoReloadForm.reloadWhenOption === prepaidService.strings.BALANCE_OPTION) {\n vm.autoReloadForm.daysRemaining = '0';\n } else {\n vm.autoReloadForm.balanceAmountRW = '0.0';\n }\n }\n function saveManageAutoreload() {\n var saveAutoreloadRequest = {};\n saveAutoreloadRequest = {\n contractAccountId: vm.contractAccountId,\n daysRemainingThreshold: vm.autoReloadForm.daysRemaining.toString(),\n accountBalanceThreshold: vm.autoReloadForm.balanceAmountRW,\n reloadAmount: vm.autoReloadForm.reloadAmount.toString(),\n bankDescription: '',\n accountNumber: '',\n routingNumber: '',\n requestedBy: vm.emailId.primaryEmail,\n bankAccountId: ''\n };\n if (vm.autoReloadForm.paymentMethod === paymentoptionBank) {\n saveAutoreloadRequest.bankDescription = 'BANK';\n saveAutoreloadRequest.bankAccountId = vm.selectedAccount.BankAccountId;\n } else {\n saveAutoreloadRequest.bankDescription = 'CARD';\n }\n saveAutoReloadForm(saveAutoreloadRequest);\n }\n function saveAutoReloadForm(request) {\n manageAutoReloadService.sitecore.manageAutoReload(request).then(function (result) {\n if (result.d.AutoReloadManage_NAV.results[0].ReplyCode === assetService.replyCodes.SUCCESS) {\n attributePush(\"workFlow:\".concat($('#manageAutoReload').attr('businessFunction')), \"headline:\".concat($('#manageAutoReload').attr('headLine')), \"addedSpec:\" + vm.selectedAmount, \"buttonText:\" + vm.selectedWhen, \"addedEvent:\" + vm.selectedMethod);\n virtualPagePush($('#manageAutoReload').attr('businessFunction'), $('#manageAutoReload').attr('headLine'), vm.selectedWhen, vm.selectedAmount, vm.selectedMethod, $('#manageAutoReload').attr('subhead'));\n vm.selectedWhen = 'not set';\n vm.selectedAmount = 'not set';\n vm.selectedMethod = 'not set';\n vm.toastData.option = 'success';\n vm.toastData.messageOption = 'Success! Changes saved.';\n vm.clickedSave = true;\n vm.toastData.show = true;\n attributePush(\"workFlow:toast notification\", \"addedSpec:\".concat($('#manageAutoReload').attr('headLine')), \"buttonText:impression\", \"headline:\".concat(vm.toastData.option), \"subheadline:\".concat(vm.toastData.messageOption));\n virtualPagePush('toast notification', $('#manageAutoReload').attr('headLine'), vm.toastData.messageOption, 'impression', vm.toastData.option);\n $timeout(function () {\n vm.toastData.show = false;\n window.location.href = 'my-account/dashboard';\n }, 6000);\n if (request.bankDescription == 'CARD') {\n enrolledWithCreditCard = true;\n } else {\n enrolledWithCreditCard = false;\n }\n vm.disableSaveButton = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function closeToast() {\n vm.toastData.show = '';\n if (vm.clickedSave) {\n window.location.href = 'my-account/dashboard';\n }\n }\n function hideBankForm() {\n vm.autoReloadForm.bankAccountInfo = true;\n if (vm.autoReloadForm.bankAccount) {\n vm.addBA = false;\n }\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n // eslint-disable-next-line no-const-assign\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n // eslint-disable-next-line no-const-assign\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n $scope.$on(prepaidService.events.SAVE_MANAGE_AUTORELOAD, function (event, data) {\n saveManageAutoreload();\n });\n $scope.onSelectItem = function (item) {\n vm.selectedAccount = _.find(vm.bankList, function (bankAcc) {\n return bankAcc.BankAccountId + bankAcc.BankBp === item.value;\n });\n getAccountType();\n vm.validateForm();\n };\n function getAccountType() {\n vm.accountTypeValue = '';\n vm.accountType.forEach(function (item) {\n if (item.value === vm.selectedAccount.BankAccountType) {\n vm.accountTypeValue = item.text;\n }\n });\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.saveInfoAutoreload = saveInfoAutoreload;\n vm.changeReloadWhen = changeReloadWhen;\n vm.hideBankForm = hideBankForm;\n vm.goSpeedpay = goSpeedpay;\n vm.addNewBankAccount = addNewBankAccount;\n vm.reloadWhenSelected = reloadWhenSelected;\n vm.reloadAmountSelected = reloadAmountSelected;\n vm.paymentMethodSelected = paymentMethodSelected;\n /* ---------------Initialization-------------------*/\n function populateAccountTypes(accountTypeArray) {\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n }\n function init(accountTypeArray) {\n populateAccountTypes(accountTypeArray);\n\n // check for speedpay success\n var urlParams = $location.search();\n var externalId = urlParams.externalId,\n expirationDate = urlParams.expirationDate;\n if (externalId != null && expirationDate != null && externalId != '' && expirationDate != '') {\n speedpayCheck();\n vm.disableSaveButton = false;\n return;\n }\n if (externalId != null && externalId != '' && expirationDate == null) {\n location.href = \"\".concat(location.pathname, \"/failure\");\n return;\n }\n load();\n }\n function speedpayCheck() {\n // eslint-disable-next-line no-const-assign\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n // eslint-disable-next-line no-const-assign\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n var urlParams = $location.search();\n var externalId = urlParams.externalId,\n expirationDate = urlParams.expirationDate;\n var displayAction = assetService.serviceActions.updateCardDetails.DISPLAY;\n var addAction = assetService.serviceActions.updateCardDetails.ADD;\n vm.autoReload = sessionStorageService.get(assetService.autoReload.storage);\n vm.emailId = sessionStorageService.get(assetService.storageKeys.globalAccounts.info);\n vm.autoReloadForm = sessionStorageService.get(assetService.autoReload.storage);\n var expirationDateArr = expirationDate.split('/');\n var monthEndDate = new Date(expirationDateArr[1], parseInt(expirationDateArr[0]), 0);\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\n\n // get card details\n commonService.executePromises([getUpdateCardDetails('DISPLAY', null, null)]).then(function (result) {\n var manageAutoReloadRequest = {\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\n daysRemainingThreshold: vm.autoReloadForm.daysRemaining.toString(),\n accountBalanceThreshold: vm.autoReloadForm.balanceAmountRW,\n reloadAmount: vm.autoReloadForm.reloadAmount,\n bankDescription: 'CARD',\n accountNumber: '',\n routingNumber: '',\n requestedBy: vm.emailId.primaryEmail,\n bankAccountId: ''\n };\n var cardDetails = vm.creditCardDetails.d.CredCard_Res.results.length > 0 && vm.creditCardDetails.d.CredCard_Res.results.filter(function (item) {\n return item.CreditCardNumber === externalId;\n });\n\n // if card details already exists\n if (cardDetails && cardDetails.length > 0) {\n manageAutoReloadRequest.bankAccountId = cardDetails[0].CreditCardID;\n UpdateAutoReload(manageAutoReloadRequest);\n } else {\n // if the card details doesn't exists\n var updateCreditCardPromise = [getUpdateCardDetails(addAction, monthEndDate, externalId)];\n\n // update credit card details\n commonService.executePromises(updateCreditCardPromise).then(function () {\n // get the credit card details\n var getDetailCreditCardPromise = [getUpdateCardDetails(displayAction, null, null)];\n commonService.executePromises(getDetailCreditCardPromise).then(function () {\n var cardDetails = vm.creditCardDetails.d.CredCard_Res.results.length > 0 && vm.creditCardDetails.d.CredCard_Res.results.filter(function (item) {\n return item.CreditCardNumber === externalId;\n });\n if (cardDetails && cardDetails.length > 0) {\n manageAutoReloadRequest.bankAccountId = cardDetails[0].CreditCardID;\n UpdateAutoReload(manageAutoReloadRequest);\n }\n });\n });\n }\n }, function (error) {\n componentStateHandler.failedStateDashboard(vm);\n });\n }\n function UpdateAutoReload(request) {\n manageAutoReloadService.sitecore.manageAutoReload(request).then(function (result) {\n if (result.d.AutoReloadManage_NAV.results[0].ReplyCode === assetService.replyCodes.SUCCESS) {\n load();\n setTimeout(function () {\n vm.toastData.option = 'success';\n vm.toastData.messageOption = 'Success! Changes saved.';\n vm.toastData.show = true;\n $timeout(function () {\n vm.toastData.show = false;\n }, 6000);\n }, 1000);\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getUpdateCardDetails(action, expire, externalId) {\n if (action === 'DISPLAY') {\n vm.getCardData = {\n action: action,\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\n requestedBy: vm.emailId.primaryEmail\n };\n }\n if (action === 'ADD') {\n vm.getCardData = {\n action: action,\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\n requestedBy: vm.emailId.primaryEmail,\n creditCardNumber: externalId,\n creditCardType: '0006',\n expirationDate: expire\n };\n }\n return getUpdateCardDetailsService.sitecore.getUpdateCardDetails(vm.getCardData).then(function (result) {\n if (action === 'DISPLAY') {\n vm.creditCardDetails = result;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function validateForm() {\n vm.disableSaveButton = false;\n if (vm.showError) {\n vm.disableSaveButton = true;\n return;\n }\n if (vm.autoReloadForm.reloadWhenOption === reloadBalanceOption) {\n if (!parseFloat(vm.autoReloadForm.balanceAmountRW)) {\n vm.disableSaveButton = true;\n return;\n }\n if (parseFloat(vm.autoReloadForm.balanceAmountRW) <= 0) {\n vm.disableSaveButton = true;\n return;\n }\n }\n if (vm.autoReloadForm.reloadWhenOption === reloadDaysOption) {\n if (!parseInt(vm.autoReloadForm.daysRemaining)) {\n vm.disableSaveButton = true;\n return;\n }\n if (parseFloat(vm.autoReloadForm.daysRemaining) <= 0) {\n vm.disableSaveButton = true;\n return;\n }\n }\n if (!parseFloat(vm.autoReloadForm.reloadAmount)) {\n vm.disableSaveButton = true;\n return;\n }\n if (parseFloat(vm.autoReloadForm.reloadAmount) < 15 || parseFloat(vm.autoReloadForm.reloadAmount) > 500) {\n vm.disableSaveButton = true;\n return;\n }\n if (vm.autoReloadForm.paymentMethod === paymentOptionSpeedPay && !enrolledWithCreditCard) {\n // check for credit card\n vm.disableSaveButton = true;\n }\n\n // check with bank account\n if (vm.autoReloadForm.paymentMethod === paymentoptionBank) {\n if (vm.selectedAccount == null || vm.selectedAccount.BankAccountId == null || vm.selectedAccount.BankAccountId === '') {\n vm.disableSaveButton = true;\n }\n }\n }\n}\napp.controller('ManageAutoReloadSuccessModal', ManageAutoReloadSuccessModal);\nManageAutoReloadSuccessModal.$inject = ['$modalInstance', 'commongaTaggingService'];\nfunction ManageAutoReloadSuccessModal($modalInstance, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Global Vars-----------------------*/\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function load() {\n /* empty functtion*/\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n virtualPagePush('prepaid-advantage', 'manage-auto-reload', 'you-have-been-unenrolled-from-auto-reload', 'confirmation');\n load();\n };\n init();\n}\napp.controller('ManageAutoReloadUnenrollModal', ManageAutoReloadUnenrollModal);\nManageAutoReloadUnenrollModal.$inject = ['assetService', '$rootScope', '$modalInstance', 'commongaTaggingService'];\nfunction ManageAutoReloadUnenrollModal(assetService, $rootScope, $modalInstance, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n /* --------------Global Vars-----------------------*/\n\n function closeModal() {\n $modalInstance.close();\n }\n function enrollContinueModal() {\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.autoreloadUnenrollNotification);\n // Should call a service to unenroll from autoreload\n }\n function load() {\n /*empty function*/\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.enrollContinueModal = enrollContinueModal;\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('Prepaid1EducationPg', Prepaid1EducationPg);\nPrepaid1EducationPg.$inject = ['$log', 'assetService', '$state', '$scope', 'apiApigeeConfigService', 'sessionStorageService', 'genericHelperService', 'getAccountBalanceForRegularAccountService', 'prepaidService', 'speedpayService', 'checkEligibilityForPrepaidService', 'getLoggedInUserDetailsService'];\nfunction Prepaid1EducationPg($log, assetService, $state, $scope, apiApigeeConfigService, sessionStorageService, genericHelperService, getAccountBalanceForRegularAccountService, prepaidService, speedpayService, checkEligibilityForPrepaidService, getLoggedInUserDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n vm.balanceThreshold = '';\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n dueBalance: false,\n totalDueDlls: null\n };\n\n /* --------------Function Declaration-----------------------*/\n vm.goToSpeedpay = goToSpeedpay;\n vm.nextStep = nextStep;\n vm.goToPage = goToPage;\n\n /* --------------Function Definition-----------------------*/\n function nextStep() {\n $state.go(prepaidService.prepaidRouteState.ENROLL_TERMS_CONDITIONS);\n }\n function redirection() {\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\n }\n function goToPage(link) {\n location.href = link;\n }\n function goToSpeedpay() {\n var zipcode = vm.user.accountData.zipCode;\n speedpayService.getSpeedpayUrl({\n action: assetService.strings.START,\n login: vm.user.value,\n password: zipcode,\n UserID: vm.currentUser.cdpId,\n returnUrl: window.location.origin + vm.returnUrl\n }).then(function (result) {\n location.href = result;\n });\n\n // genericHelperService.openPopup(speedpayUrl, window, '900', '600', redirection, $scope);\n }\n function load() {\n var dataToPost = {\n accountList: [{\n contractAccountNumber: globalSelectedAccount.accountNum\n }]\n };\n checkEligibilityForPrepaid({\n premiseNumber: globalAccountInfo.accountSelected.premiseID,\n businessPartner: globalAccountInfo.accountSelected.bpNumber\n }).then(function () {\n if (vm.balanceThreshold > 0) {\n getAccountBalanceForRegularAccount(dataToPost);\n }\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function checkEligibilityForPrepaid(data) {\n return checkEligibilityForPrepaidService.sitecore.checkEligibilityForPrepaid(data).then(function (result) {\n vm.balanceThreshold = result.d.HeaderToResponseNav.results[0].BalanceThreshold;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getAccountBalanceForRegularAccount(data) {\n getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n if (result.getAccountAndBillingInfoResList[0].totalDueDlrs > vm.balanceThreshold) {\n vm.data.dueBalance = true;\n vm.data.totalDueDlls = result.getAccountAndBillingInfoResList[0].totalDueDlrs;\n vm.loadingSpinner = false;\n vm.showComponent = true;\n } else {\n vm.data.dueBalance = false;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n /* Selected account */\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\n // });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n var dtaUsers = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.user = dtaUsers.accounts.find(function (data) {\n return data.value === globalSelectedAccount.accountNum;\n });\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) {\n $log.error(error);\n }\n });\n }\n vm.loadingSpinner = true;\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('Prepaid2TermsConditions', Prepaid2TermsConditions);\nPrepaid2TermsConditions.$inject = ['assetService', '$state', 'prepaidService'];\nfunction Prepaid2TermsConditions(assetService, $state, prepaidService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n txtTermsConditions: prepaidService.strings.TERMS_CONDITIONS,\n activeAgreeButton: true\n };\n /* Function Declarations */\n vm.nextStep = nextStep;\n vm.previousStep = previousStep;\n vm.goToPage = goToPage;\n /* Function Definitions */\n function changeButton() {\n vm.data.activeAgreeButton = false;\n angular.element(document.getElementById(assetService.strings.TERMS_TEXTAREA)).scope().$apply();\n }\n function nextStep() {\n $state.go(prepaidService.prepaidRouteState.ENROLL_LOAD);\n }\n function previousStep() {\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\n }\n function goToPage(link) {\n location.href = link;\n }\n function load() {\n setTimeout(function () {\n angular.element(document.getElementById(assetService.strings.TERMS_TEXTAREA)).bind('scroll', function () {\n var textarea = angular.element(document.getElementById(assetService.strings.TERMS_TEXTAREA));\n var scrollSize = textarea[0].scrollHeight;\n if (textarea[0].clientHeight + textarea[0].scrollTop >= scrollSize) {\n changeButton();\n }\n });\n }, 500);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('Prepaid3Load', Prepaid3Load);\nPrepaid3Load.$inject = ['assetService', '$state', '$scope', '$rootScope', 'CareDeleteProductService', 'createContractAccountInPrepaid', 'enrollIntoPrepaidService', 'genericHelperService', 'getPrepaidDetailsService', 'getProductRecommendationsCAREService', 'prepaidService', 'speedpayService', 'sessionStorageService', 'getAccountBalanceForRegularAccountService', 'getLoggedInUserDetailsService', 'careFeedbackService'];\nfunction Prepaid3Load(assetService, $state, $scope, $rootScope, CareDeleteProductService, createContractAccountInPrepaid, enrollIntoPrepaidService, genericHelperService, getPrepaidDetailsService, getProductRecommendationsCAREService, prepaidService, speedpayService, sessionStorageService, getAccountBalanceForRegularAccountService, getLoggedInUserDetailsService, careFeedbackService) {\n /* --------------Scope Vars-----------------------*/\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n var _startedFromScope = false;\n var _SUCCESS = assetService.replyCodes.SUCCESS;\n var _prepaid = assetService.strings.PREPAID;\n /* --------------Gloabl Vars-----------------------*/\n var vm = this;\n vm.data = {\n dueBalance: true\n };\n vm.createContractAccount = {\n reply: null,\n contractAccount: null\n };\n vm.enrollIntoPrepaid = {\n reply: null,\n messageText: null\n };\n vm.user = '';\n vm.currentUser = '';\n vm.prepaidDetails = {\n averagePerDay: null\n };\n vm.thresholdAmount = '';\n vm.returnUrl = '';\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.address = '';\n vm.accountNumber = '';\n /* Function Declaration */\n vm.init = init;\n vm.goToSpeedpay = goToSpeedpay;\n vm.previousStep = previousStep;\n vm.goToPage = goToPage;\n $rootScope.isCareComp = false;\n\n /* Function Definition */\n function redirection(option) {\n if (option === assetService.strings.SPEEDPAY_SUCCESS_REDIRECT) {\n var dataToPost = {\n businessPartner: _globalSelectedAccount.bpNumber,\n contractAccount: vm.createContractAccount.contractAccount,\n premiseNumber: _globalSelectedAccount.premiseID,\n division: _globalSelectedAccount.division,\n moveInDate: moment().format('YYYY-MM-DDTHH:mm:ss')\n };\n enrollIntoPrepaid(dataToPost).then(function () {\n if (vm.enrollIntoPrepaid.reply === _SUCCESS) {\n var requestCare = {\n accountNumber: _globalSelectedAccount.accountNum,\n jurisdiction: _globalSelectedAccount.jurisdiction,\n progName: _prepaid\n };\n // Call to getProductsRecommendations\n productRecommendationsCARE(requestCare);\n $state.go(prepaidService.prepaidRouteState.ENROLL_SUCCESS);\n } else {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n }\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n } else {\n $state.go(prepaidService.prepaidRouteState.ENROLL_LOAD);\n }\n }\n function goToSpeedpay() {\n var zipcode = vm.user.accountData.zipCode;\n speedpayService.getSpeedpayUrl({\n action: assetService.strings.START,\n login: vm.createContractAccount.contractAccount,\n password: zipcode,\n UserID: '',\n returnUrl: window.location.origin + vm.returnUrl\n }).then(function (result) {\n location.href = result;\n });\n // genericHelperService.openPopup(speedpayUrl, window, '900', '600', redirection, $scope);\n }\n function previousStep() {\n $state.go(prepaidService.prepaidRouteState.ENROLL_TERMS_CONDITIONS);\n }\n function goToPage(link) {\n location.href = link;\n }\n function enrollIntoPrepaid(data) {\n return enrollIntoPrepaidService.sitecore.enrollIntoPrepaid(data).then(function (result) {\n vm.enrollIntoPrepaid.reply = result.d.EnrollPrepayToMessageNav.results[0].ReplyCode;\n vm.enrollIntoPrepaid.messageText = result.d.EnrollPrepayToMessageNav.results[0].Message;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function load() {\n var dataCreateContractAccount = {\n businessPartner: _globalSelectedAccount.bpNumber,\n premiseNumber: _globalSelectedAccount.premiseID,\n division: _globalSelectedAccount.division\n };\n var dataPrepaidDetails = {\n businessPartnerId: _globalSelectedAccount.bpNumber,\n contractAccountId: _globalSelectedAccount.accountNum\n };\n createContractAccountForPrepaid(dataCreateContractAccount).then(function () {\n sessionStorageService.set(assetService.storageKeys.contractAccount, vm.createContractAccount.contractAccount);\n getAccountBalance({\n accountList: [{\n contractAccountNumber: vm.createContractAccount.contractAccount\n }]\n }).then(function () {\n sessionStorageService.set(assetService.storageKeys.accountBalance, vm.accountBalanceDetails);\n vm.balanceAmount = parseFloat(vm.thresholdAmount) - parseFloat(vm.accountBalanceDetails);\n vm.loadingSpinner = false;\n vm.showComponent = true;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n getPrepaidDetails(dataPrepaidDetails).then(function () {}, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n function createContractAccountForPrepaid(data) {\n return createContractAccountInPrepaid.sitecore.createContractAccountInPrepaid(data).then(function (result) {\n vm.createContractAccount.reply = result.d.CreateCAToMessageNav.results[0].ReplyCode;\n vm.createContractAccount.contractAccount = result.d.CreateCAToCANav.results[0].ContractAccount;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function getAccountBalance(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n var infoResList = result.getAccountAndBillingInfoResList.filter(function (item) {\n return item.contractAccountNumber == data.accountList[0].contractAccountNumber;\n });\n vm.accountBalanceDetails = infoResList[0].totalDueDlrs || 0;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function getPrepaidDetails(data) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(function (result) {\n vm.prepaidDetails.averagePerDay = result.d.PrepaidToBP.results[0].BPToCA.results[0].AverageCostPerDay;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n }\n\n /* ---------------Initialization-------------------*/\n function init(thresholdAmount, returnUrl) {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n vm.address = _globalSelectedAccount.address;\n vm.accountNumber = _globalSelectedAccount.accountNum;\n vm.thresholdAmount = thresholdAmount;\n vm.returnUrl = returnUrl;\n sessionStorageService.set(assetService.storageKeys.thresholdAmount, vm.thresholdAmount);\n var dtaUsers = sessionStorageService.get(assetService.storageKeys.accountSelector);\n vm.user = dtaUsers.accounts.find(function (data) {\n return data.value === _globalSelectedAccount.accountNum;\n });\n load();\n }\n\n // init();\n}\nfunction ccPrepaidEnrollSuccessController($log, prepaidService, $state, assetService, sessionStorageService, $scope, broadcastService, getAccountBalanceForRegularAccountService, getLoggedInUserDetailsService, enrollIntoPrepaidService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.contractAccount = '';\n vm.accountBalanceDetails = '';\n vm.balanceBeforePay = '';\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n var _globalAccountInfo = null;\n var _globalSelectedAccount = null;\n vm.showError = false;\n vm.enrollIntoPrepaid = {\n reply: '',\n messageText: ''\n };\n var _SUCCESS = assetService.replyCodes.SUCCESS;\n /* --------------Gloabl Vars\r\n -----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n var contractAccount = sessionStorageService.get(assetService.storageKeys.contractAccount);\n var previousAccountBalance = sessionStorageService.get(assetService.storageKeys.accountBalance);\n var thresholdAmount = sessionStorageService.get(assetService.storageKeys.thresholdAmount);\n var dataToPost = {\n businessPartner: _globalSelectedAccount.bpNumber,\n contractAccount: contractAccount,\n premiseNumber: _globalSelectedAccount.premiseID,\n division: _globalSelectedAccount.division,\n moveInDate: moment().format('YYYY-MM-DDTHH:mm:ss')\n };\n getAccountBalance({\n accountList: [{\n contractAccountNumber: contractAccount\n }]\n }).then(function () {\n if (Math.abs(vm.accountBalanceDetails) > Math.abs(previousAccountBalance) && Math.abs(vm.accountBalanceDetails) >= Math.abs(thresholdAmount)) {\n enrollIntoPrepaid(dataToPost).then(function () {\n if (vm.enrollIntoPrepaid.reply === _SUCCESS) {\n /* const requestCare = {\r\n accountNumber: _globalSelectedAccount.accountNum,\r\n jurisdiction: _globalSelectedAccount.jurisdiction,\r\n progName: _prepaid,\r\n }; \r\n // Call to getProductsRecommendations\r\n productRecommendationsCARE(requestCare).then(() => {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_SUCCESS);\r\n }); */\n vm.loadingSpinner = false;\n vm.showComponent = true;\n vm.showError = false;\n } else {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n vm.showError = true;\n }\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n vm.showError = true;\n });\n } else {\n vm.loadingSpinner = false;\n vm.showComponent = true;\n vm.showError = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n vm.showError = true;\n });\n if (!assetService.apiConfig.useLocalHost) {\n getLoggedInUserDetailsService.getAuthUserDetails().then(function (results) {\n vm.currentUser = {\n emailId: results.Value,\n cdpId: results.Key\n };\n vm.emailId = vm.currentUser.emailId;\n }, function (error) {});\n }\n }\n function getAccountBalance(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n var infoResList = result.getAccountAndBillingInfoResList.filter(function (item) {\n return item.contractAccountNumber == data.accountList[0].contractAccountNumber;\n });\n vm.accountBalanceDetails = infoResList[0].totalDueDlrs || 0;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n vm.showError = true;\n });\n }\n function enrollIntoPrepaid(data) {\n return enrollIntoPrepaidService.sitecore.enrollIntoPrepaid(data).then(function (result) {\n vm.enrollIntoPrepaid.reply = result.d.EnrollPrepayToMessageNav.results[0].ReplyCode;\n vm.enrollIntoPrepaid.messageText = result.d.EnrollPrepayToMessageNav.results[0].Message;\n }, function (error) {\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n vm.showError = true;\n });\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.loadingSpinner = true;\n load();\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n load();\n };\n init();\n}\nccPrepaidEnrollSuccessController.$inject = ['prepaidService', '$state', 'assetService', 'sessionStorageService', '$scope', 'broadcastService', 'getAccountBalanceForRegularAccountService', 'getLoggedInUserDetailsService', 'enrollIntoPrepaidService'];\napp.controller('ccPrepaidEnrollSuccessController', ccPrepaidEnrollSuccessController);\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('CCStatements', CCStatements);\nCCStatements.$inject = ['$log', '$scope', 'assetService', 'balanceActivityService', 'getInvoiceListService', 'invoiceImageService', 'dateHelperService', 'prepaidService', 'sessionStorageService', 'modalService', 'commongaTaggingService'];\nfunction CCStatements($log, $scope, assetService, balanceActivityService, getInvoiceListService, invoiceImageService, dateHelperService, prepaidService, sessionStorageService, modalService, commongaTaggingService) {\n /* Scope Vars */\n var vm = this;\n var _currentYear = moment().year();\n var _globalAccountInfo = {};\n var _globalSelectedAccount = {};\n var _newYear = _currentYear;\n var noOfDays = '90';\n\n /* Global Vars */\n vm.data = {\n statements: []\n };\n vm.balanceActivity = {\n data: [],\n grouped: [],\n keys: []\n };\n vm.loadingSpinner = true;\n\n /* Function Declarations */\n vm.goToDocument = goToDocument;\n vm.previousYear = previousYear;\n vm.showPrevYear = true;\n vm.yearList = [];\n vm.attributePush = attributePush;\n vm.noDataFound = false;\n vm.isImageAvailable = false;\n\n /* Function definitions */\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function getInvoiceImage(data) {\n invoiceImageService.sitecore.invoceImage(data).then(function (result) {\n if (result && result.MessageReply && result.MessageReply.replyCode && result.MessageReply.replyCode != '') {\n var hexValue = result.MessageReply.replyCode;\n if (hexValue) {\n var hexToBase64 = function hexToBase64(str) {\n return btoa(str.match(/\\w{2}/g).map(function (a) {\n return String.fromCharCode(parseInt(a, 16));\n }).join(''));\n };\n var base64Value = hexToBase64(hexValue);\n var byteCharacters = atob(base64Value);\n var byteNumbers = new Array(byteCharacters.length);\n for (var i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n var byteArray = new Uint8Array(byteNumbers);\n var file = new Blob([byteArray], {\n type: 'application/pdf'\n });\n var fileURL = URL.createObjectURL(file);\n if (isIosDevice()) {\n location.href = fileURL;\n } else {\n window.open(fileURL);\n }\n }\n } else {\n showNoPDFModal();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function isIosDevice() {\n return /^(iPhone|iPad|iPod)/.test(navigator.platform);\n }\n function showNoPDFModal() {\n modalService.pdfNotFound();\n }\n function goToDocument(documentId) {\n getInvoiceImage({\n documentNumber: documentId\n });\n }\n function previousYear() {\n filterYear();\n }\n function load() {\n // Global Switcher Account\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\n }\n var fromDate = new Date();\n fromDate.setFullYear(fromDate.getFullYear() - 1);\n getInvoiceList({\n contractAccountId: _globalSelectedAccount.accountNum,\n fromDate: '/Date(' + fromDate.getTime() + ')/'\n }).then(function () {\n filterYear();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function getInvoiceList(data) {\n return getInvoiceListService.sitecore.getInvoiceList(data).then(function (result) {\n var paymentData = _.map(result.d.Inp_Req.results[0].Account_Invoice.results, function (item) {\n return {\n key: item.InvId + '|' + moment(item.InvDateStr).year() + '|' + moment(item.InvDateStr).format('MMMM') + '|' + moment(item.InvDateStr).format('DD') + '|' + item.BillStartDateStr + '|' + item.BillEndDateStr + '|' + item.BillDays + '|' + item.IsImageAvlbl\n };\n });\n var uniqueKeys = _.uniq(paymentData, 'key').map(function (activity) {\n return activity.key;\n });\n\n //statement data\n vm.balanceActivity.data = getUniqueData(uniqueKeys).sort(function (a, b) {\n return b.date - a.date;\n });\n\n //Unique Year\n vm.balanceActivity.year = _.uniq(vm.balanceActivity.data, 'year').map(function (activity) {\n return activity.year;\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function filterYear() {\n if (vm.balanceActivity.year > 1) {\n vm.showPrevYear = true;\n }\n if (vm.yearList.length < vm.balanceActivity.year.length) {\n vm.yearList.push(vm.balanceActivity.year[vm.yearList.length]);\n vm.data.statements = _.filter(vm.balanceActivity.data, function (actvity) {\n var find = false;\n vm.yearList.forEach(function (element) {\n if (!find) find = actvity.year === element;\n });\n return find;\n });\n if (vm.yearList.length == vm.balanceActivity.year.length) {\n vm.showPrevYear = false;\n }\n } else {\n vm.noDataFound = true;\n vm.showPrevYear = false;\n }\n vm.loadingSpinner = false;\n }\n function getUniqueData(uniqueKeys) {\n var uniqueData = [];\n uniqueKeys.forEach(function (element) {\n var val = element.split('|');\n var billStartDate = moment(val[4]);\n var billEndDate = moment(val[5]);\n var duration = moment.duration(billEndDate.diff(billStartDate));\n var billDays = val[6];\n var imageAvailable = val[7];\n if (imageAvailable === \"True\") {\n vm.isImageAvailable = true;\n } else {\n vm.isImageAvailable = false;\n }\n uniqueData.push({\n documentId: val[0],\n year: val[1],\n month: val[2],\n date: moment(val[5]).toDate(),\n day: val[3],\n billStartDate: moment(val[4]).format('MMM DD'),\n billEndDate: moment(val[5]).format('MMM DD'),\n billDays: billDays,\n isImageAvailable: vm.isImageAvailable,\n billYear: moment(val[5]).format('YYYY')\n });\n });\n return uniqueData;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n vm.loadingSpinner = true;\n load();\n });\n}\n/* eslint-disable no-use-before-define */\napp.controller('confirmUnPrepaid', confirmUnPrepaid);\nconfirmUnPrepaid.$inject = ['$state', 'prepaidService'];\nfunction confirmUnPrepaid($state, prepaidService) {\n /* Scope Vars */\n var vm = this;\n vm.loadingSpinner = true;\n\n /* Global Vars */\n\n /* Function declarations */\n\n vm.nextStep = nextStep;\n vm.previous = previous;\n\n /* Function definitions */\n function nextStep() {\n $state.go(prepaidService.prepaidRouteState.UNENROLL_SECURITY_DEPOSIT);\n }\n function previous() {\n $state.go(prepaidService.prepaidRouteState.UNENROLL_LOOSE_BENEFITS);\n }\n function load() {/* empty function*/}\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('LooseBenefits', LooseBenefits);\nLooseBenefits.$inject = ['$state', 'prepaidService', 'genericHelperService'];\nfunction LooseBenefits($state, prepaidService, genericHelperService) {\n /* Scope Vars */\n var vm = this;\n vm.loadingSpinner = true;\n\n /* Global Vars */\n\n /* Function declarations */\n vm.unenroll = unenroll;\n /* Function definitions */\n\n function unenroll() {\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\n }\n /* Function declarations */\n\n function generateDateNormal() {\n var tempDate = new Date();\n var date = genericHelperService.convertDateToFormatApi(new Date(tempDate));\n return date;\n }\n /* Function definitions */\n\n function load() {\n console.log(generateDateNormal());\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('securityDepositUnPrepaid', securityDepositUnPrepaid);\nsecurityDepositUnPrepaid.$inject = ['$log', 'commonService', '$state', '$scope', 'sessionStorageService', 'assetService', 'apiApigeeConfigService', 'genericHelperService', 'delinquencyCheckForPremiseService', 'unenrollIntoPrepaidService', 'prepaidService', 'orderDeterminationService'];\nfunction securityDepositUnPrepaid($log, commonService, $state, $scope, sessionStorageService, assetService, apiApigeeConfigService, genericHelperService, delinquencyCheckService, unenrollIntoPrepaidService, prepaidService, orderDeterminationService) {\n /* Scope Vars */\n var vm = this;\n var _delinquencyCheckData = null;\n var _orderDeterminationData = null;\n\n /* Global Vars */\n var _SUCCESS = assetService.replyCodes.SUCCESS;\n vm.loadingSpinner = true;\n vm.accept = false;\n vm.isFailure = false;\n vm.name = prepaidService.strings.deposit;\n vm.deposit = {\n securityDeposit: 0.0,\n serviceCharge: 0.0,\n totalpay: 0.0\n };\n vm.unEnroll = {\n matCode: '',\n premise: '',\n installation: '',\n meterNumber: '',\n division: '',\n contract: '',\n miAmount: '',\n miSecurityDepositAmt: ''\n };\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n vm.unenrollIntoPrepaid = function (value) {\n unenrollIntoPrepaidService.sitecore.unenrollIntoPrepaid({\n businessPartner: value.bpNumber,\n contractAccount: value.accountNum,\n //MO\n moMatCode: vm.unEnroll.matCode,\n moPremise: value.premiseID,\n moInstallation: value.installationNumber,\n moAppointmentDate: generateDateNormal(),\n moMeterNumber: value.equipmentNo,\n moDivision: value.division,\n moveOutDate: generateDateNormal(),\n moContract: value.contract,\n //MI\n miPremiseId: value.premiseID,\n miAmount: String(vm.deposit.totalpay),\n miUserName: value.firstName,\n miWaiveDate: generateDateNextDay(),\n miMatCode: vm.unEnroll.matCode,\n miPremise: value.premiseID,\n miInstallation: value.installationNumber,\n miAppointmentDate: generateDateNextDay(),\n miMeterNumber: value.equipmentNo,\n moveInDate: generateDateNextDay(),\n moveOutDateInMoveIn: null,\n //Pay\n miSecurityDepositAmt: String(vm.deposit.securityDeposit)\n }).then(function (result) {\n if (result.d.UnEnrollToMessageNav.results[0].ReplyCode === _SUCCESS && result.d.UnEnrollToMessageNav.results[1].ReplyCode === _SUCCESS) {\n vm.isFailure = false;\n } else {\n vm.isFailure = true;\n }\n sessionStorageService.set(assetService.storageKeys.failureState, vm.isFailure);\n $scope.$emit('unEnrollSuccess', assetService.storageKeys.failureState);\n $state.go(prepaidService.prepaidRouteState.UNENROLL_SUCCESS);\n });\n };\n function getData(accountSelected) {\n var todaysDate = new Date();\n var datetrans = moment(todaysDate).format('YYYY-MM-DDTHH:mm:ss');\n commonService.executePromises([delinquencyCheckForPremise({\n premiseId: accountSelected.premiseID,\n installation: [{\n Installation: accountSelected.installationNumber\n }],\n businessPartnerId: accountSelected.bpNumber,\n PID_DELINQ_FLAG: 'X',\n CA_DELINQ_FLAG: '',\n PREM_DELINQ_FLAG: ''\n }), orderDetermination({\n anlage: accountSelected.installationNumber,\n sparte: '01',\n date: datetrans,\n partner: accountSelected.bpNumber\n })]).then(function (result) {\n setModels();\n vm.loadingSpinner = false;\n vm.showComponent = true;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function delinquencyCheckForPremise(data) {\n return delinquencyCheckService.sitecore.delinquencyCheckForPremise(data).then(function (result) {\n _delinquencyCheckData = result.d;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function orderDetermination(data) {\n return orderDeterminationService.sitecore.orderDetermination(data).then(function (result) {\n _orderDeterminationData = result.d;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.showFailedState = true;\n vm.loadingSpinner = false;\n });\n }\n function setModels() {\n if (_delinquencyCheckData.H_ReqToFrontEndNav.results.length > 0) {\n vm.deposit.securityDeposit = _delinquencyCheckData.H_ReqToFrontEndNav.results[0].Amount;\n }\n if (_orderDeterminationData.ActToMatcode.results.length > 0 && _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results.length > 0) {\n vm.deposit.serviceCharge = _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results[0].SERVICE_FEE;\n }\n vm.deposit.totalpay = Number(vm.deposit.serviceCharge) + Number(vm.deposit.securityDeposit);\n if (_orderDeterminationData.ActToMatcode.results.length > 0 && _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results.length > 0) {\n vm.unEnroll.matCode = _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results[0].MatCode;\n }\n }\n\n /* Function declarations */\n vm.previous = previous;\n vm.nextStep = nextStep;\n /* Function definitions */\n\n function generateDateNormal() {\n var tempDate = new Date();\n var date = genericHelperService.convertDateToFormatApi(new Date(tempDate));\n return date;\n }\n function generateDateNextDay() {\n tempDate = new Date();\n var tempNextDay = tempDate.setDate(tempDate.getDate() + 3);\n date = genericHelperService.convertDateToFormatApi(new Date(tempNextDay));\n return date;\n }\n function nextStep() {\n vm.unenrollIntoPrepaid(vm.account);\n //location.href = window.location.origin + vm.successUrl\n }\n function previous() {\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\n }\n function load() {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n vm.account = globalAccountInfo.accountSelected;\n }\n getData(vm.account);\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\nfunction ccPrepaidUnenrollSuccessController($rootScope, prepaidService, $state, assetService, sessionStorageService, $scope, broadcastService, getAccountBalanceForPrepaid, getLoggedInUserDetailsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n vm.contractAccount = '';\n vm.accountBalanceDetails = '';\n vm.balanceBeforePay = '';\n vm.loadingSpinner = true;\n vm.showComponent = false;\n vm.showFailedState = false;\n /* --------------Gloabl Vars-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n vm.isFailure = sessionStorageService.get(assetService.storageKeys.failureState, vm.isFailure);\n vm.emailId = $rootScope.currentUserEmailId;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n vm.loadingSpinner = true;\n load();\n });\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\nccPrepaidUnenrollSuccessController.$inject = ['$rootScope', 'prepaidService', '$state', 'assetService', 'sessionStorageService', '$scope', 'broadcastService', 'getAccountBalanceForPrepaid', 'getLoggedInUserDetailsService'];\napp.controller('ccPrepaidUnenrollSuccessController', ccPrepaidUnenrollSuccessController);\napp.controller('EmailSubscriptions', EmailSubscriptions);\nfunction EmailSubscriptions() {\n /*--------------Scope Vars-----------------------*/\n var vm = this;\n\n /*--------------Gloabl Vars-----------------------*/\n\n /*--------------Function Declarations-----------------------*/\n vm.emailSubscriptions = emailSubscriptions;\n\n /*--------------Function Definitions-----------------------*/\n function emailSubscriptions(value) {\n return value;\n }\n\n /*---------------Initialization-------------------*/\n var init = function init() {\n /*empty function*/\n };\n\n //init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('manageEmail', manageEmail);\nmanageEmail.$inject = ['$log', 'sessionStorageService', 'assetService', 'commonService', 'maintainUserProfileService', 'modalService', '$scope', '$rootScope', 'ccGetUserAccountsService', 'commongaTaggingService', 'cookieService', 'profileTypesAssetService'];\nfunction manageEmail($log, sessionStorageService, assetService, commonService, maintainUserProfileService, modalService, $scope, $rootScope, ccGetUserAccountsService, commongaTaggingService, cookieService, profileTypesAssetService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _sessionData = null;\n var _succes = assetService.replyCodes.S;\n /* --------------Gloabl Vars-----------------------*/\n vm.addingEmail = false;\n vm.addNewEmail = false;\n vm.deleteIcon = false;\n vm.showPreferenceContent = false;\n vm.emailToDelete = null;\n vm.data = {\n emailAccounts: [],\n temporaryEmails: []\n };\n\n // Toast Message\n var globalAccountInfo = {};\n vm.fromDeletePhonemodal = false;\n vm.closeToast = closeToast;\n vm.showToast = false;\n vm.isShowMoreEmailVisible = false;\n vm.remainingEmailCount = 0;\n vm.toastMessages = [];\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _fadeOut = assetService.strings.FADEOUT;\n var _fadeinfinite = assetService.strings.FADEINFINITE;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n\n /* --------------Function Declarations-----------------------*/\n vm.addEmail = addEmail;\n vm.saveEmail = saveEmail;\n vm.cancelEmail = cancelEmail;\n vm.deleteEmail = deleteEmail;\n vm.viewMoreEmail = viewMoreEmail;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.init = init;\n\n /* --------------Function Definitions-----------------------*/\n function addEmail() {\n // const newEmailObj = {\n // email: null,\n // addrNumber: null,\n // consNumber: null,\n // primary: null,\n // doNotUse: null,\n // isNew: true,\n // };\n // vm.data.temporaryEmails.push(newEmailObj);\n // vm.data.temporaryEmails = _.sortBy(vm.data.temporaryEmails, emailAccount => emailAccount.primary);\n // vm.addingEmail = true;\n modalService.manageAddEmail();\n }\n function closeToast() {\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }\n function saveEmail() {\n var newEmailAddresses = _.filter(vm.data.temporaryEmails, function (emailAccount) {\n return emailAccount.isNew;\n });\n var addEmailAddresses = _.map(newEmailAddresses, function (item) {\n return {\n AddressNumber: vm.data.emailAccounts[0].addrNumber,\n EmailNew: item.email,\n CUDFlag: 'C'\n };\n });\n var data = {\n businessPartnerId: vm.data.businessPartnerId,\n emailAccounts: addEmailAddresses\n };\n var promises = [mantainUserProfile(data)];\n commonService.executePromises(promises).then(function () {\n if (vm.mantainUserProfile.replyCode === _succes) {\n var mydata = {\n businessPartnerId: _sessionData.globalSelectedAccount.primaryBp,\n emailId: _sessionData.currentUser.emailId,\n cdpId: _sessionData.currentUser.cdpId,\n contractAccountId: _sessionData.globalSelectedAccount.accountNum\n };\n ccGetUserAccountsService.accountSearch(mydata).then(function (results) {\n vm.addingEmail = false;\n if (results.emails.length > 0) {\n _sessionData.emailSubscriptions = results.emails;\n sessionStorageService.set(assetService.storageKeys.profileSettings, _sessionData);\n vm.addingEmail = false;\n vm.init();\n }\n });\n // vm.addingEmail = false;\n // $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n }\n });\n }\n function cancelEmail() {\n vm.addingEmail = false;\n vm.data.temporaryEmails = _.remove(vm.data.temporaryEmails, function (emailAccount) {\n return !emailAccount.isNew;\n });\n }\n function deleteEmail(email) {\n var emailToDelete = {\n email: email\n };\n _sessionData.emailToDelete = emailToDelete;\n sessionStorageService.set(assetService.storageKeys.profileSettings, _sessionData);\n modalService.manageEmail();\n }\n function setModels() {\n var emailArray = _.clone(_sessionData.emailSubscriptions);\n emailArray.length = emailArray.length > 10 ? 10 : emailArray.length;\n if (_sessionData.emailSubscriptions.length > 10) {\n vm.remainingEmailCount = _sessionData.emailSubscriptions.length - 10;\n vm.isShowMoreEmailVisible = false;\n } else {\n vm.isShowMoreEmailVisible = true;\n }\n vm.data = {\n emailAccounts: emailArray,\n temporaryEmails: _sessionData.emailSubscriptions,\n businessPartnerId: _sessionData.restToBp.bpNumber,\n interimMessage: _sessionData.interimMessage\n };\n if (vm.fromDeletePhonemodal) {\n vm.showToast = true;\n vm.data.option = sessionStorageService.get(assetService.storageKeys.manageEmails.toastNotification);\n var toastMessageTxt = sessionStorageService.get(assetService.storageKeys.manageEmails.toastNotificationMessage);\n if (!toastMessageTxt.length) toastMessageTxt = vm.toastMessages[toastMessageTxt];\n vm.data.messageOption = toastMessageTxt;\n vm.data.show = sessionStorageService.get(assetService.storageKeys.manageEmails.toastNotificationtime);\n }\n }\n function mantainUserProfile(dataToPost) {\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(function (result) {\n vm.mantainUserProfile = {\n replyCode: result.d.MaintainProfileReqCA.results[0].ReplyCode\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n _sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n showHidePreferenceLink();\n setModels();\n }\n function showHidePreferenceLink() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo && Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected') && globalAccountInfo.accountSelected.experience == assetService.strings.SC_RESIDENTIAL) {\n vm.showPreferenceContent = true;\n }\n }\n $scope.$on(assetService.events.refreshManageEmail, function () {\n vm.fromDeletePhonemodal = true;\n vm.init();\n if (vm.data.option == _successToast || vm.data.option == _errorToast) {\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + 'profile-settings');\n virtualPagePush('toast-notification', 'profile-settings', vm.data.messageOption, 'impression', vm.data.option);\n }\n if (vm.data.option == _successToast) {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }, 12000);\n }\n });\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n if (arguments && arguments.length === 2) {\n vm.toastMessages[0] = arguments[0];\n vm.toastMessages[1] = arguments[1];\n }\n load();\n }\n function viewMoreEmail() {\n vm.isShowMoreEmailVisible = true;\n vm.data = {\n emailAccounts: _sessionData.emailSubscriptions,\n temporaryEmails: _sessionData.emailSubscriptions,\n businessPartnerId: _sessionData.restToBp.bpNumber,\n interimMessage: _sessionData.interimMessage\n };\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageAddEmail', ModalManageAddEmail);\nModalManageAddEmail.$inject = ['$log', '$modalInstance', 'assetService', 'commonService', 'maintainUserProfileService', 'sessionStorageService', '$rootScope', 'ccGetUserAccountsService', 'accountSearchService', 'commongaTaggingService', 'returnCodeMapping', 'responseNotificationsService'];\nfunction ModalManageAddEmail($log, $modalInstance, assetService, commonService, maintainUserProfileService, sessionStorageService, $rootScope, ccGetUserAccountsService, accountSearchService, commongaTaggingService, returnCodeMapping, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var succes = assetService.replyCodes.S;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n var _fadeInOut = assetService.strings.FADEINOUT;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.sessionData = {};\n vm.data = {};\n vm.emailValue = '';\n vm.duplicateMail = false;\n vm.maintainUserProfile = {};\n\n /* --------------Function Declarations-----------------------*/\n vm.addEmail = addEmail;\n vm.closeModal = closeModal;\n vm.onEmailBlur = onEmailBlur;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function mantainUserProfile(dataToPost) {\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(function (result) {\n vm.mantainUserProfile = {\n replyCode: result.d.MaintainProfileReqCA.results[0].Type,\n errorcode: result.ReturnCodes[1].ReturnCode2.MessageNum\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"E\"\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n deleteGlobalGAT();\n $modalInstance.close();\n });\n }\n function addEmail(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n }\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n var newEmailObj = {\n email: vm.emailValue,\n addrNumber: null,\n consNumber: null,\n primary: null,\n doNotUse: null,\n isNew: true\n };\n vm.data.temporaryEmails.push(newEmailObj);\n var newEmailAddresses = _.filter(vm.data.temporaryEmails, function (emailAccount) {\n return emailAccount.isNew;\n });\n var addEmailAddresses = _.map(newEmailAddresses, function (item) {\n return {\n AddressNumber: vm.data.emailAccounts[0].addrNumber,\n EmailNew: vm.emailValue,\n CUDFlag: 'C'\n };\n });\n var data = {\n businessPartnerId: vm.data.bussinesPartner,\n emailAccounts: addEmailAddresses //vm.currentNotifModal.communicationModel,\n };\n var promises = [mantainUserProfile(data)];\n commonService.executePromises(promises).then(function () {\n if (vm.mantainUserProfile.replyCode === \"E\") {\n if (vm.mantainUserProfile.errorcode === \"703\") {\n vm.duplicateMail = true;\n } else {\n vm.duplicateMail = false;\n }\n }\n if (vm.mantainUserProfile.replyCode === succes) {\n var accountSearchRequest = {\n businessPartnerId: vm.sessionData.primaryBp,\n dataSource: assetService.strings.ISU\n };\n return accountSearchService.sitecore.accountSearch(accountSearchRequest).then(function (results) {\n if (results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.length > 0) {\n vm.emails = _.map(results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results, function (item) {\n return {\n email: item.EmailAddress,\n addrNumber: item.AddressNumber,\n consNumber: item.ConsNumber,\n primary: item.Primary,\n doNotUse: Object.prototype.hasOwnProperty.call(item, assetService.accountSelectorStrings.DoNotUse) ? item.DoNotUse : false,\n isNew: null\n };\n });\n vm.addingEmail = false;\n vm.sessionData.emailSubscriptions = _.uniq(vm.emails, 'email');\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _successToast);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, 'Your email has been successfully added.');\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\n deleteGlobalGAT();\n $modalInstance.close();\n }\n });\n } else {\n var toastMessage;\n if (vm.mantainUserProfile.replyCode === assetService.replyCodes.E && vm.mantainUserProfile.number === '944') toastMessage = 0;else toastMessage = 1;\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _errorToast);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, toastMessage);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\n deleteGlobalGAT();\n $modalInstance.close();\n }\n });\n }\n function closeModal() {\n deleteGlobalGAT();\n $modalInstance.close();\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function setModels() {\n vm.data = {\n bussinesPartner: vm.sessionData.restToBp.bpNumber,\n temporaryEmails: vm.sessionData.emailSubscriptions,\n emailAccounts: vm.sessionData.emailSubscriptions\n };\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n setModels();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\nfunction onEmailBlur(value) {\n var vm = this;\n vm.duplicateMail = false;\n if (value !== undefined && value !== '') {\n duplicate(vm);\n }\n}\nfunction duplicate(vm) {\n var defaultItem = vm.sessionData.emailSubscriptions.filter(function (itm) {\n return itm.email === vm.emailValue;\n });\n if (defaultItem.length > 0) {\n vm.duplicateMail = true;\n } else {\n vm.duplicateMail = false;\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageEmail', ModalManageEmail);\nModalManageEmail.$inject = ['$log', '$modalInstance', 'assetService', 'commonService', 'maintainUserProfileService', 'sessionStorageService', '$rootScope', 'commongaTaggingService', '$scope', 'returnCodeMapping', 'responseNotificationsService'];\nfunction ModalManageEmail($log, $modalInstance, assetService, commonService, maintainUserProfileService, sessionStorageService, $rootScope, commongaTaggingService, $scope, returnCodeMapping, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var succes = assetService.replyCodes.S;\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n var emailToCheck = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.sessionData = {};\n vm.data = {};\n vm.maintainUserProfile = {};\n\n /* --------------Function Declarations-----------------------*/\n vm.deleteEmail = deleteEmail;\n vm.closeModal = closeModal;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function mantainUserProfile(dataToPost) {\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(function (result) {\n vm.mantainUserProfile = {\n replyCode: result.d.MaintainProfileReqCA.results[0].Type,\n number: result.d.MaintainProfileReqCA.results[0].Number\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"E\"\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n $modalInstance.close();\n });\n }\n function deleteEmail(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n }\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n var deleteEmailAddresses = [{\n Consnumber: emailToCheck.consNumber,\n AddressNumber: emailToCheck.addrNumber,\n EmailCurrent: emailToCheck.email,\n CUDFlag: 'D'\n }];\n var dataToDelete = {\n businessPartnerId: vm.data.bussinesPartner,\n emailAccounts: deleteEmailAddresses\n };\n var promises = [mantainUserProfile(dataToDelete)];\n commonService.executePromises(promises).then(function () {\n if (vm.mantainUserProfile.replyCode === succes) {\n _.remove(vm.data.emailAccounts, function (emailAccount, index) {\n return emailAccount.email.toLowerCase() === vm.data.email.toLowerCase();\n });\n vm.sessionData.emailSubscriptions = vm.data.emailAccounts;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _successToast);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, 'Your email has been successfully deleted.');\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\n deleteGlobalGAT();\n $modalInstance.close();\n } else {\n var toastMessage;\n if (vm.mantainUserProfile.replyCode === assetService.replyCodes.E && vm.mantainUserProfile.number === '944') toastMessage = 0;else toastMessage = 1;\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _errorToast);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, toastMessage);\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\n deleteGlobalGAT();\n $modalInstance.close();\n }\n });\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function closeModal() {\n deleteGlobalGAT();\n $modalInstance.close();\n }\n function setModels() {\n vm.data = {\n bussinesPartner: vm.sessionData.restToBp.bpNumber,\n email: vm.sessionData.emailToDelete.email,\n emailAccounts: vm.sessionData.emailSubscriptions\n };\n emailToCheck = vm.data.emailAccounts.find(function (x) {\n return x.email.toLowerCase() === vm.data.email.toLowerCase();\n });\n vm.emailToDelete = emailToCheck.email;\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n setModels();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-undef */\n/* eslint-disable no-use-before-define */\napp.controller('ManagePhoneNumbers', ManagePhoneNumbers);\nManagePhoneNumbers.$inject = ['$log', 'assetService', 'genericHelperService', 'sessionStorageService', 'updatePhoneNumberService', 'modalService', '$rootScope', '$scope', 'readAndDerivePreferencesService', 'commongaTaggingService', 'responseNotificationsService', 'cookieService', 'profileTypesAssetService'];\nfunction ManagePhoneNumbers($log, assetService, genericHelperService, sessionStorageService, updatePhoneNumberService, modalService, $rootScope, $scope, readAndDerivePreferencesService, commongaTaggingService, responseNotificationsService, cookieService, profileTypesAssetService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n _success = assetService.replyCodes.SUCCESS;\n _kwValue = assetService.strings.VALUE;\n _kwText = assetService.strings.TEXT;\n _updPhn = assetService.serviceActions.updatePhoneNumber.UPD_PHN;\n _remPhn = assetService.serviceActions.updatePhoneNumber.REM_PHN;\n _addPhn = assetService.serviceActions.updatePhoneNumber.ADD_PHN;\n _dndRem = assetService.serviceActions.updateDndPrefence.DND_REM;\n _defaultTime = assetService.managerPhone.DEFAULT_TIME;\n _home = assetService.phonesTypes.HOME;\n _mobile = assetService.phonesTypes.MOBILE;\n _other = assetService.phonesTypes.OTHER;\n _textDnd = null;\n _startTime = null;\n _endTime = null;\n vm.closeToast = closeToast;\n vm.showToast = false;\n vm.remainingPhoneCount = 0;\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _fadeOut = assetService.strings.FADEOUT;\n var _fadeinfinite = assetService.strings.FADEINFINITE;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n vm.fromDeletePhonemodal = false;\n vm.edidPreference = false;\n var globalAccountInfo = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.show = {\n // Variables for ng-class, ng-if or ng-show\n allBullets: false,\n mobileType: [],\n notDisturbTime: [],\n phoneOptions: [],\n rowToAdd: false,\n rowToEdit: [],\n savePhoneControls: false,\n tooltipPreferred: false,\n tooltipDisturb: false\n };\n vm.checkUpPhone = false;\n vm.data = {\n selectStartNotDisturbHours: [],\n selectEndNotDisturbHours: [],\n phoneTypeItems: [],\n phoneNumbers: []\n };\n vm.dropDowns = {\n phoneTypes: genericHelperService.createDropdownList(assetService.phoneTypes, _kwValue, _kwText)\n };\n vm.temporalPhoneRow = {\n // Deletable variables to make the API CRUD\n activeNotDisturbTime: false,\n endTime: null,\n key: null,\n phone: null,\n preferredPos: null,\n startTime: null,\n type: null\n };\n vm.preferencePhoneRow = {\n // Deletable variables to make the API CRUD\n activeNotDisturbTime: false,\n endTime: null,\n key: null,\n phone: null,\n preferredPos: null,\n startTime: null,\n type: null\n };\n vm.originalData = {\n typeSelection: [],\n activeNotDisturbTime: [],\n notDisturbTimes: [],\n preferredPos: null,\n preferredFlag: []\n };\n vm.dataToPost = {\n action: null,\n businessPartnerId: null,\n typeOfContact: null,\n newPhone: null,\n preferredFlag: null,\n sequenceNumber: null,\n addressNumber: null,\n dndStartTime: null,\n dndStopTime: null\n };\n vm.sessionData = {};\n vm.checkboxFlag = [];\n vm.isShowMoreVisible = false;\n vm.showPreferenceContent = false;\n vm.updatePhoneNumber = {\n replyCode: null\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.beautifyPhone = beautifyPhone;\n vm.hideEditPhone = hideEditPhone;\n vm.hideAllEditRow = hideAllEditRow;\n vm.hidePhoneOptions = hidePhoneOptions;\n vm.hideTooltip = hideTooltip;\n vm.showAddPhone = showAddPhone;\n vm.showEditPhone = showEditPhone;\n vm.showPhoneOptions = showPhoneOptions;\n vm.showRemovePhone = showRemovePhone;\n vm.showTooltip = showTooltip;\n vm.resetAddPhoneRow = resetAddPhoneRow;\n vm.hideAllEditPhoneOptions = hideAllEditPhoneOptions;\n vm.editPhoneNumber = editPhoneNumber;\n vm.viewMore = viewMore;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n\n /* --------------Function Definitions-----------------------*/\n function addEditPhoneNumberData(index) {\n if (vm.show.rowToAdd) {\n addPhoneNumberData(index);\n } else if (vm.show.rowToEdit[index] || vm.edidPreference) {\n deletePhoneNumberData(index);\n }\n }\n function closeToast() {\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }\n function addPhoneNumberData(index) {\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\n } else if (vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE || vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\n }\n if (vm.temporalPhoneRow.phone) {\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\n } else {\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\n }\n vm.dataToPost.preferredFlag = vm.temporalPhoneRow.preferredPos === index.toString() ? true : false;\n if (vm.checkboxFlag[index]) {\n vm.dataToPost.dndStartTime = convertToISOTime(vm.temporalPhoneRow.startTime);\n vm.dataToPost.dndStopTime = convertToISOTime(vm.temporalPhoneRow.endTime);\n } else {\n vm.dataToPost.dndStartTime = _defaultTime;\n vm.dataToPost.dndStopTime = _defaultTime;\n }\n vm.dataToPost.action = _addPhn;\n vm.dataToPost.addressNumber = '';\n vm.dataToPost.sequenceNumber = '';\n updatePhoneNumber(vm.dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n readAndDerivePreferences();\n } else {\n vm.showToast = true;\n vm.data.option = _errorToast;\n vm.data.messageOption = 'We were unable to update/delete phone number, please try again later.';\n vm.data.show = _fadeinfinite;\n }\n });\n }\n function deletePhoneNumberData(index) {\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\n } else if (vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE || vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\n }\n var dataToPost = {\n action: _updPhn,\n businessPartnerId: vm.dataToPost.businessPartnerId,\n typeOfContact: vm.dataToPost.typeOfContact,\n newPhone: vm.data.phoneNumbers[index].phone,\n preferredFlag: vm.originalData.preferredFlag[index] ? true : false,\n sequenceNumber: vm.data.phoneNumbers[index].consumeNumber,\n addressNumber: vm.data.phoneNumbers[index].addressNumber,\n dndStartTime: convertToISOTime(vm.data.phoneNumbers[index].endTime),\n dndStopTime: convertToISOTime(vm.data.phoneNumbers[index].startTime)\n };\n if (vm.edidPreference) {\n dataToPost.preferredFlag = true;\n dataToPost.typeOfContact = vm.data.phoneNumbers[index].type.text;\n }\n updatePhoneNumber(dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n var readDerivePreferencesRequest = {\n businessPartnerId: vm.primaryBp,\n emailId: vm.sessionData.currentUser.emailId,\n cdpId: vm.sessionData.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n } else {\n vm.showToast = true;\n vm.data.option = _errorToast;\n vm.data.messageOption = 'We were unable to update/delete phone number, please try again later.';\n vm.data.show = _fadeinfinite;\n }\n });\n }\n function editPhoneNumber(phoneNumber) {\n // vm.show.savePhoneControls=true;\n // vm.preferencePhoneRow = phoneNumber;// vm.dataToPost.preferredFlag = true;\n // vm.edidPreference=true;\n\n //#region INLINE\n $rootScope.subheadForGAT = 'Manage Phone Numbers';\n $rootScope.buttonTextForGAT = 'Update Phone Number';\n vm.dataToPost.action = _updPhn;\n vm.dataToPost.typeOfContact = phoneNumber.type.text;\n vm.dataToPost.newPhone = phoneNumber.phone;\n vm.dataToPost.preferredFlag = true;\n vm.dataToPost.sequenceNumber = phoneNumber.consumeNumber;\n vm.dataToPost.addressNumber = phoneNumber.addressNumber;\n vm.dataToPost.dndStartTime = convertToISOTime(phoneNumber.startTime);\n vm.dataToPost.dndStopTime = convertToISOTime(phoneNumber.endTime);\n updatePhoneNumber(vm.dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n deleteGlobalGAT();\n $rootScope.$broadcast(assetService.events.refreshPreferredPhone);\n vm.updatePhoneNumber.replyCode = null;\n responseNotificationsService.successResponse({\n vehicle: assetService.strings.TOAST,\n message: 'Your Phone Number has been Updated.',\n pageTitle: assetService.storageKeys.profileSettings\n });\n resetAddPhoneRow();\n } else {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: 'Sorry! We were unable to update your preferred phone number',\n pageTitle: assetService.storageKeys.profileSettings\n });\n vm.temporalPhoneRow.key = null;\n vm.temporalPhoneRow.phone = null;\n vm.temporalPhoneRow.type = null;\n vm.temporalPhoneRow.activeNotDisturbTime = false;\n vm.temporalPhoneRow.startTime = null;\n vm.temporalPhoneRow.endTime = null;\n // $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\n load();\n }\n });\n //#endregion\n }\n function preferenceupdate() {\n var phoneNumber = vm.preferencePhoneRow;\n vm.dataToPost.action = _updPhn;\n vm.dataToPost.typeOfContact = phoneNumber.type.text;\n vm.dataToPost.newPhone = phoneNumber.phone;\n vm.dataToPost.preferredFlag = true;\n vm.dataToPost.sequenceNumber = phoneNumber.consumeNumber;\n vm.dataToPost.addressNumber = phoneNumber.addressNumber;\n vm.dataToPost.dndStartTime = convertToISOTime(phoneNumber.startTime);\n vm.dataToPost.dndStopTime = convertToISOTime(phoneNumber.endTime);\n updatePhoneNumber(vm.dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n var accUniq = _.uniq(vm.Accounts, 'acc');\n var readDerivePreferencesRequest = {\n businessPartnerId: vm.primaryBp,\n emailId: vm.sessionData.currentUser.emailId,\n cdpId: vm.sessionData.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n\n // vm.showToast = true;\n // vm.data.option = _successToast;\n // vm.data.messageOption = \"Your phone number has been .\";\n // vm.data.show = _fadeInOut;\n\n // if (vm.data.option == _successToast) {\n // setTimeout(function () {\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\n // vm.data.show = _fadeOut;\n // vm.showToast = false;\n // }, 12000)\n // }\n\n // $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n // vm.updatePhoneNumber.replyCode = null;\n // resetAddPhoneRow();\n }\n });\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function convertToISOTime(time) {\n var newTime = moment(time, 'HHmmss').format('PTHHmmss');\n return \"\".concat(newTime.slice(0, 4), \"H\").concat(newTime.slice(4, 6), \"M\").concat(newTime.slice(6, 8), \"S\");\n }\n function updatePhoneNumber(dataToPost) {\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(function (result) {\n vm.updatePhoneNumber.replyCode = result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function readAndDerivePreferences(readDerivePreferencesRequest) {\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(readDerivePreferencesRequest).then(function (result) {\n var phones = [];\n var phoneArray = [];\n phones = _.map(result.d.results[0].Partner_Contact.results, function (item) {\n return {\n consumeNumber: item.ConsNumber,\n phone: item.PhoneNumber,\n type: item.Type,\n notDisturbStart: item.DND_Start_TIime,\n notDisturbEnd: item.DND_Stop_Time,\n preferredPhone: item.Primary,\n addressNumber: item.AddrNumber\n // remark: item.Remark\n };\n });\n phones.forEach(function (element) {\n // if(element.remark === '') {\n phoneArray.push(element);\n // }\n });\n vm.data.phoneNumbers = _.uniq(phoneArray, 'phone');\n vm.sessionData.phoneNumbers = vm.data.phoneNumbers;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n vm.showToast = true;\n vm.data.option = _successToast;\n vm.data.messageOption = 'Your phone number has been successfully updated.';\n vm.data.show = _fadeInOut;\n if (vm.data.option == _successToast) {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }, 12000);\n }\n vm.updatePhoneNumber.replyCode = null;\n vm.edidPreference = false;\n resetAddPhoneRow();\n init();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function hideAllEditRow() {\n for (var j = 0; j < vm.show.rowToEdit.length; j++) {\n vm.show.rowToEdit[j] = false;\n }\n }\n function showTooltip(value) {\n if (value === 1) {\n vm.show.tooltipPreferred = true;\n } else if (value === 2) {\n vm.show.tooltipDisturb = true;\n }\n }\n function hideTooltip(value) {\n if (value === 1) {\n vm.show.tooltipPreferred = false;\n } else if (value === 2) {\n vm.show.tooltipDisturb = false;\n }\n }\n function showPhoneOptions(index) {\n if (vm.show.phoneOptions[index] === true) {\n vm.show.phoneOptions[index] = false;\n } else {\n vm.hideAllEditPhoneOptions();\n vm.show.phoneOptions[index] = true;\n }\n }\n function hideAllEditPhoneOptions() {\n for (var i = 0; i < vm.show.phoneOptions.length; i++) {\n vm.show.phoneOptions[i] = false;\n }\n }\n function hidePhoneOptions(index) {\n vm.show.phoneOptions[index] = false;\n }\n function beautifyPhone(number) {\n return genericHelperService.telFormat(number);\n }\n function showAddPhone() {\n //#region Inline Edit\n // vm.show.savePhoneControls = true;\n // vm.show.rowToAdd = true;\n // vm.show.allBullets = true;\n // hideAllEditRow();\n //#endregion\n\n vm.sessionData.edit = false;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n modalService.manageAddPhone();\n }\n function resetAddPhoneRow() {\n vm.temporalPhoneRow.key = null;\n vm.temporalPhoneRow.phone = null;\n vm.temporalPhoneRow.type = null;\n vm.temporalPhoneRow.activeNotDisturbTime = false;\n vm.temporalPhoneRow.startTime = null;\n vm.temporalPhoneRow.endTime = null;\n }\n function showEditPhone(index) {\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n //#region Inline Edit\n // vm.temporalPhoneRow.key = index;\n // vm.show.allBullets = true;\n // vm.show.savePhoneControls = true;\n // vm.show.phoneOptions[index] = false;\n // vm.show.rowToEdit[index] = true;\n\n // vm.temporalPhoneRow.phone = vm.data.phoneNumbers[index].phone;\n // vm.temporalPhoneRow.type = vm.data.phoneNumbers[index].type.text;\n // vm.data.phoneTypeItems[index] = genericHelperService.setSelectedProp(\n // vm.data.phoneTypeItems[index],\n // _kwValue, vm.temporalPhoneRow.type,\n // );\n // if (vm.data.phoneNumbers[index].doNotDisturbEnabled) {\n // vm.temporalPhoneRow.startTime = vm.data.phoneNumbers[index].startTime;\n // vm.temporalPhoneRow.endTime = vm.data.phoneNumbers[index].endTime;\n // vm.data.selectStartNotDisturbHours[index] = genericHelperService.setSelectedProp(\n // vm.data.selectStartNotDisturbHours[index],\n // _kwValue, vm.temporalPhoneRow.startTime,\n // );\n // vm.data.selectEndNotDisturbHours[index] = genericHelperService.setSelectedProp(\n // vm.data.selectEndNotDisturbHours[index],\n // _kwValue, vm.temporalPhoneRow.endTime,\n // );\n // }\n //#endregion\n\n vm.sessionData.index = index;\n vm.sessionData.edit = true;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n modalService.manageAddPhone();\n }\n function hideEditPhone(save) {\n if (save === 0) {\n if (vm.checkboxFlag[vm.temporalPhoneRow.key] !== vm.originalData.activeNotDisturbTime[vm.temporalPhoneRow.key]) {\n vm.checkboxFlag[vm.temporalPhoneRow.key] = !vm.checkboxFlag[vm.temporalPhoneRow.key];\n }\n if (vm.show.rowToAdd) {\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos;\n }\n init();\n } else if (save === 1) {\n preferenceupdate();\n\n // if (vm.show.rowToAdd) {\n // vm.temporalPhoneRow.key = 9;\n // }\n // addEditPhoneNumberData(vm.temporalPhoneRow.key);\n }\n vm.show.savePhoneControls = false;\n vm.show.allBullets = false;\n vm.show.rowToAdd = false;\n vm.checkUpPhone = false;\n hideAllEditRow();\n }\n function showRemovePhone(index) {\n vm.phoneToDelete = {\n index: index\n };\n vm.sessionData.managePhoneModal = vm.phoneToDelete;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n modalService.managePhoneNumbers();\n }\n function setDropdowns() {\n _.forEach(vm.originalData.typeSelection, function (value, i) {\n vm.data.phoneTypeItems[i] = genericHelperService.createDropdownList(vm.dropDowns.phoneTypes, _kwValue, _kwText);\n vm.data.selectStartNotDisturbHours[i] = genericHelperService.createDropdownList(assetService.hoursOptions, _kwValue, _kwText);\n vm.data.selectEndNotDisturbHours[i] = genericHelperService.createDropdownList(assetService.hoursOptions, _kwValue, _kwText);\n });\n }\n function setModels(type) {\n var ph = _.clone(vm.sessionData.phoneNumbers, true);\n vm.isShowMoreVisible = vm.sessionData.phoneNumbers.length > 10 && !type ? false : true;\n vm.remainingPhoneCount = vm.sessionData.phoneNumbers.length > 10 ? vm.sessionData.phoneNumbers.length - 10 : 0;\n vm.Accounts = vm.sessionData.Accounts;\n vm.primaryBp = vm.sessionData.primaryBp;\n vm.data.interimMessage = vm.sessionData.interimMessage;\n if (!type && vm.sessionData.phoneNumbers.length > 10) {\n ph.length = 10;\n } else if (!type && vm.sessionData.phoneNumbers.length <= 10 || type) {\n ph.length = ph.length;\n }\n vm.data.phoneNumbers = _.map(ph, function (item, index) {\n vm.originalData.preferredFlag[index] = item.preferredPhone;\n vm.originalData.notDisturbTimes[index] = {\n start: item.notDisturbStart,\n end: item.notDisturbEnd\n };\n if (item.preferredPhone !== '') {\n vm.originalData.preferredPos = index;\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos.toString();\n }\n if (item.type === '1' || item.type === '') {\n _textDnd = _home;\n vm.originalData.typeSelection[index] = {\n value: item.type,\n text: _home\n };\n vm.show.mobileType[index] = false;\n } else if (item.type === '2' || item.type === '3') {\n _textDnd = _mobile;\n vm.originalData.typeSelection[index] = {\n value: item.type,\n text: _mobile\n };\n vm.show.mobileType[index] = true;\n }\n // else if (item.type === '') {\n // _textDnd = _other;\n // vm.originalData.typeSelection[index] = { value: item.type, text: _other };\n // vm.show.mobileType[index] = false;\n // }\n\n return {\n addressNumber: item.addressNumber,\n consumeNumber: item.consumeNumber,\n phone: item.phone,\n type: {\n value: item.type,\n text: _textDnd\n },\n startTime: moment(item.notDisturbStart, 'HHmmss').format('HH:mm'),\n endTime: moment(item.notDisturbEnd, 'HHmmss').format('HH:mm'),\n startTimeFormat: moment(item.notDisturbStart, 'HHmmss').format('h:mm a'),\n endTimeFormat: moment(item.notDisturbEnd, 'HHmmss').format('h:mm a'),\n doNotDisturbEnabled: item.notDisturbStart === 'PT00H00M00S' && item.notDisturbStart === 'PT00H00M00S' ? false : true\n };\n });\n vm.dataToPost.businessPartnerId = vm.sessionData.restToBp.bpNumber;\n _.forEach(vm.data.phoneNumbers, function (item, index) {\n if (item.doNotDisturbEnabled) {\n vm.checkboxFlag[index] = true;\n vm.originalData.activeNotDisturbTime[index] = true;\n } else {\n vm.checkboxFlag[index] = false;\n vm.originalData.activeNotDisturbTime[index] = false;\n }\n });\n setDropdowns();\n }\n function showHidePreferenceLink() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo && Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected') && globalAccountInfo.accountSelected.experience == assetService.strings.SC_RESIDENTIAL) {\n vm.showPreferenceContent = true;\n }\n }\n function load() {\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n showHidePreferenceLink();\n setModels(false);\n }\n $scope.$on(assetService.events.refreshManagePhoneNumbers, function () {\n vm.fromDeletePhonemodal = true;\n init();\n if (vm.data.option == _successToast) {\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + 'profile-settings');\n virtualPagePush('toast-notification', 'profile-settings', vm.data.messageOption, 'impression', vm.data.option);\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }, 12000);\n } else if (vm.data.option == _errorToast) {\n vm.showToast = true;\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + 'profile-settings');\n virtualPagePush('toast-notification', 'profile-settings', vm.data.messageOption, 'impression', vm.data.option);\n }\n });\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n if (vm.fromDeletePhonemodal) {\n vm.showToast = true;\n vm.data.option = sessionStorageService.get(assetService.storageKeys.managePhoneNumber.toastNotification);\n vm.data.messageOption = sessionStorageService.get(assetService.storageKeys.managePhoneNumber.toastNotificationMessage);\n vm.data.show = sessionStorageService.get(assetService.storageKeys.managePhoneNumber.toastNotificationtime);\n }\n load();\n };\n init();\n function viewMore() {\n vm.isShowMoreVisible = true;\n setModels(true);\n }\n}\n/* eslint-disable no-use-before-define */\napp.controller('ModalManageAddPhone', ModalManageAddPhone);\nModalManageAddPhone.$inject = ['$log', '$modalInstance', 'assetService', 'genericHelperService', 'commonService', 'maintainUserProfileService', 'sessionStorageService', '$rootScope', 'ccGetUserAccountsService', 'accountSearchService', 'updatePhoneNumberService', 'readAndDerivePreferencesService', 'commongaTaggingService', 'returnCodeMapping', 'responseNotificationsService'];\nfunction ModalManageAddPhone($log, $modalInstance, assetService, genericHelperService, commonService, maintainUserProfileService, sessionStorageService, $rootScope, ccGetUserAccountsService, accountSearchService, updatePhoneNumberService, readAndDerivePreferencesService, commongaTaggingService, returnCodeMapping, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _success = assetService.replyCodes.SUCCESS;\n var _successToast = assetService.strings.success;\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _fadeOut = assetService.strings.FADEOUT;\n _defaultTime = assetService.managerPhone.DEFAULT_TIME;\n var _errorToast = assetService.strings.ERROR;\n var _fadeinfinite = assetService.strings.FADEINFINITE;\n var startdt;\n var enddt;\n /* --------------Gloabl Vars-----------------------*/\n vm.sessionData = {};\n vm.index = 0;\n vm.maintainUserProfile = {};\n vm.readDerivePreferencesRequest = {};\n vm.duplicatePhoneFlag = false;\n vm.isDropDownChanged = false;\n vm.checkboxFlag = [];\n vm.checkboxFlagAddNew = false;\n vm.updatePhoneNumber = {\n replyCode: null\n };\n vm.data = {\n selectStartNotDisturbHours: [],\n selectEndNotDisturbHours: [],\n selectStartNotDisturbHoursPeriod: [],\n selectEndNotDisturbHoursPeriod: [],\n phoneTypeItems: [],\n phoneNumbers: []\n };\n vm.originalModalState = {\n phoneNumber: null,\n phoneType: null,\n startTime: null,\n startTimePeriod: null,\n endTime: null,\n endTimePeriod: null,\n dndChecked: false\n };\n vm.dropDowns = {\n phoneTypes: genericHelperService.createDropdownList(assetService.phoneTypes, _kwValue, _kwText)\n };\n vm.show = {\n // Variables for ng-class, ng-if or ng-show\n allBullets: false,\n mobileType: [],\n notDisturbTime: [],\n phoneOptions: [],\n rowToAdd: false,\n rowToEdit: [],\n savePhoneControls: false,\n tooltipPreferred: false,\n tooltipDisturb: false\n };\n vm.checkUpPhone = false;\n vm.temporalPhoneRow = {\n // Deletable variables to make the API CRUD\n activeNotDisturbTime: false,\n endTime: null,\n key: null,\n phone: null,\n preferredPos: null,\n startTime: null,\n type: null,\n startTimePeriod: null,\n endTimePeriod: null\n };\n vm.originalData = {\n typeSelection: [],\n activeNotDisturbTime: [],\n notDisturbTimes: [],\n preferredPos: null,\n preferredFlag: []\n };\n vm.dataToPost = {\n action: null,\n businessPartnerId: null,\n typeOfContact: null,\n newPhone: null,\n preferredFlag: null,\n sequenceNumber: null,\n addressNumber: null,\n dndStartTime: null,\n dndStopTime: null\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.addEmail = addEmail;\n vm.closeModal = closeModal;\n vm.duplicatePhone = duplicatePhone;\n vm.onChangeDropDown = onChangeDropDown;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.changeCheckBoxState = changeCheckBoxState;\n\n /* --------------Function Definitions-----------------------*/\n function mantainUserProfile(dataToPost) {\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(function (result) {\n vm.mantainUserProfile = {\n replyCode: result.d.MaintainProfileReqCA.results[0].ReplyCode\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function changeCheckBoxState() {\n if (!vm.checkboxFlag[vm.index]) {\n vm.temporalPhoneRow.startTime = null;\n vm.temporalPhoneRow.startTimePeriod = null;\n vm.temporalPhoneRow.endTime = null;\n vm.temporalPhoneRow.endTimePeriod = null;\n }\n }\n function addPhoneNumberData(index) {\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\n } else if (vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE || vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\n }\n if (vm.temporalPhoneRow.phone) {\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\n } else {\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\n }\n vm.dataToPost.preferredFlag = vm.temporalPhoneRow.preferredPos === index.toString() ? true : false;\n if (vm.checkboxFlagAddNew) {\n var start = vm.temporalPhoneRow.startTime + vm.temporalPhoneRow.startTimePeriod;\n startdt = moment(start, ['hh:mmA']).format('HH:mm');\n var end = vm.temporalPhoneRow.endTime + vm.temporalPhoneRow.endTimePeriod;\n enddt = moment(end, ['hh:mmA']).format('HH:mm');\n vm.dataToPost.dndStartTime = convertToISOTime(startdt);\n vm.dataToPost.dndStopTime = convertToISOTime(enddt);\n } else {\n vm.dataToPost.dndStartTime = _defaultTime;\n vm.dataToPost.dndStopTime = _defaultTime;\n }\n vm.dataToPost.action = _addPhn;\n vm.dataToPost.addressNumber = '';\n vm.dataToPost.sequenceNumber = '';\n updatePhoneNumber(vm.dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n var readDerivePreferencesRequest = {\n businessPartnerId: vm.primaryBp,\n emailId: vm.sessionData.currentUser.emailId,\n cdpId: vm.sessionData.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n }\n // else{\n // vm.showToast = true;\n // vm.data.option = _errorToast;\n // vm.data.messageOption = \"We were unable to update/delete phone number, please try again later.\";\n // vm.data.show = _fadeinfinite;\n // }\n });\n }\n function readAndDerivePreferences(readDerivePreferencesRequest) {\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(readDerivePreferencesRequest).then(function (result) {\n var phones = [];\n var _allPhones = [];\n phones = _.map(result.d.results[0].Partner_Contact.results, function (item) {\n return {\n consumeNumber: item.ConsNumber,\n phone: item.PhoneNumber,\n type: item.Type,\n notDisturbStart: item.DND_Start_TIime,\n notDisturbEnd: item.DND_Stop_Time,\n preferredPhone: item.Primary,\n addressNumber: item.AddrNumber\n // remark: item.Remark\n };\n });\n phones.forEach(function (element) {\n // if(element.remark === '') {\n _allPhones.push(element);\n // }\n });\n vm.data.phoneNumbers = _.uniq(_allPhones, 'phone');\n vm.sessionData.phoneNumbers = vm.data.phoneNumbers;\n sessionStorageService.set(assetService.storageKeys.profileSettings, vm.sessionData);\n if (!vm.sessionData.edit) {\n vm.data.messageOption = 'Your phone number has been successfully added.';\n } else {\n vm.data.messageOption = 'Your phone number has been successfully updated.';\n }\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotification, _successToast);\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationMessage, vm.data.messageOption);\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\n deleteGlobalGAT();\n $modalInstance.close();\n\n // vm.showToast = true;\n // vm.data.option = _successToast;\n // vm.data.show = _fadeInOut;\n\n // if (vm.data.option == _successToast) {\n // setTimeout(function () {\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\n // vm.data.show = _fadeOut;\n // vm.showToast = false;\n // }, 12000)\n // }\n\n vm.updatePhoneNumber.replyCode = null;\n resetAddPhoneRow();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: 'E'\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n deleteGlobalGAT();\n $modalInstance.close();\n });\n }\n function resetAddPhoneRow() {\n vm.temporalPhoneRow.key = null;\n vm.temporalPhoneRow.type = null;\n vm.temporalPhoneRow.activeNotDisturbTime = false;\n vm.temporalPhoneRow.startTime = null;\n vm.temporalPhoneRow.endTime = null;\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function addEditPhoneNumberData(index) {\n if (!vm.sessionData.edit) {\n addPhoneNumberData(index);\n } else {\n deletePhoneNumberData(index);\n }\n }\n function convertToISOTime(time) {\n var newTime = moment(time, 'HHmmss').format('PTHHmmss');\n return \"\".concat(newTime.slice(0, 4), \"H\").concat(newTime.slice(4, 6), \"M\").concat(newTime.slice(6, 8), \"S\");\n }\n function updatePhoneNumber(dataToPost) {\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(function (result) {\n vm.updatePhoneNumber.replyCode = result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: 'E'\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n deleteGlobalGAT();\n $modalInstance.close();\n });\n }\n function deletePhoneNumberData(index) {\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\n } else if (vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE || vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER) {\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\n }\n if (vm.temporalPhoneRow.phone) {\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\n } else {\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\n }\n if (vm.checkboxFlag[index]) {\n var start = vm.temporalPhoneRow.startTime + vm.temporalPhoneRow.startTimePeriod;\n startdt = moment(start, ['hh:mmA']).format('HH:mm');\n var end = vm.temporalPhoneRow.endTime + vm.temporalPhoneRow.endTimePeriod;\n enddt = moment(end, ['hh:mmA']).format('HH:mm');\n vm.dataToPost.dndStartTime = convertToISOTime(startdt);\n vm.dataToPost.dndStopTime = convertToISOTime(enddt);\n } else {\n vm.dataToPost.dndStartTime = _defaultTime;\n vm.dataToPost.dndStopTime = _defaultTime;\n }\n var dataToPost = {\n action: _updPhn,\n businessPartnerId: vm.dataToPost.businessPartnerId,\n typeOfContact: vm.dataToPost.typeOfContact,\n newPhone: vm.dataToPost.newPhone,\n preferredFlag: vm.originalData.preferredFlag[index] ? true : false,\n sequenceNumber: vm.data.phoneNumbers[index].consumeNumber,\n addressNumber: vm.data.phoneNumbers[index].addressNumber,\n dndStartTime: convertToISOTime(vm.dataToPost.dndStartTime),\n dndStopTime: convertToISOTime(vm.dataToPost.dndStopTime)\n };\n\n //item.notDisturbStart === 'PT00H00M00S' && item.notDisturbStart === 'PT00H00M00S' ? false : true\n\n updatePhoneNumber(dataToPost).then(function () {\n if (vm.updatePhoneNumber.replyCode === _success) {\n var accUniq = _.uniq(vm.Accounts, 'acc');\n var readDerivePreferencesRequest = {\n businessPartnerId: vm.primaryBp,\n emailId: vm.sessionData.currentUser.emailId,\n cdpId: vm.sessionData.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n }\n // else{\n // vm.showToast = true;\n // vm.data.option = _errorToast;\n // vm.data.messageOption = \"We were unable to update/delete phone number, please try again later.\";\n // vm.data.show = _fadeinfinite;\n // }\n });\n }\n function addEmail(event) {\n if (event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n }\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n if (!vm.sessionData.edit) {\n vm.temporalPhoneRow.key = 9;\n }\n addEditPhoneNumberData(vm.temporalPhoneRow.key);\n }\n function closeModal() {\n deleteGlobalGAT();\n $modalInstance.close();\n }\n function duplicatePhone(val) {\n var defaultItem = vm.sessionData.phoneNumbers.filter(function (itm) {\n return itm.phone === val;\n });\n if (defaultItem.length > 0) {\n vm.duplicatePhoneFlag = true;\n } else if (vm.originalModalState.phoneNumber !== vm.temporalPhoneRow.phone || vm.originalModalState.phoneType !== vm.temporalPhoneRow.type || vm.originalModalState.startTime !== vm.temporalPhoneRow.startTime || vm.originalModalState.startTimePeriod !== vm.temporalPhoneRow.startTimePeriod || vm.originalModalState.endTime !== vm.temporalPhoneRow.endTime || vm.originalModalState.endTimePeriod !== vm.temporalPhoneRow.endTimePeriod || vm.originalModalState.dndChecked !== vm.checkboxFlag[vm.index]) {\n vm.duplicatePhoneFlag = false;\n } else {\n vm.duplicatePhoneFlag = true;\n }\n }\n function setModels() {\n vm.Accounts = vm.sessionData.Accounts;\n vm.primaryBp = vm.sessionData.primaryBp;\n vm.data.phoneNumbers = _.map(vm.sessionData.phoneNumbers, function (item, index) {\n vm.originalData.preferredFlag[index] = item.preferredPhone;\n vm.originalData.notDisturbTimes[index] = {\n start: item.notDisturbStart,\n end: item.notDisturbEnd\n };\n vm.originalData.preferredPos = index;\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos.toString();\n if (item.type === '1' || item.type === '') {\n _textDnd = _home;\n vm.originalData.typeSelection[index] = {\n value: item.type,\n text: _home\n };\n vm.show.mobileType[index] = false;\n } else if (item.type === '2' || item.type === '3') {\n _textDnd = _mobile;\n vm.originalData.typeSelection[index] = {\n value: item.type,\n text: _mobile\n };\n vm.show.mobileType[index] = true;\n }\n return {\n addressNumber: item.addressNumber,\n consumeNumber: item.consumeNumber,\n phone: item.phone,\n type: {\n value: item.type,\n text: _textDnd\n },\n startTime: moment(item.notDisturbStart, 'HHmmss').format('HH:mm'),\n endTime: moment(item.notDisturbEnd, 'HHmmss').format('HH:mm'),\n startTimeFormat: moment(item.notDisturbStart, 'HHmmss').format('h:mm a'),\n endTimeFormat: moment(item.notDisturbEnd, 'HHmmss').format('h:mm a'),\n doNotDisturbEnabled: item.notDisturbStart === 'PT00H00M00S' && item.notDisturbStart === 'PT00H00M00S' ? false : true\n };\n });\n vm.dataToPost.businessPartnerId = vm.sessionData.restToBp.bpNumber;\n _.forEach(vm.data.phoneNumbers, function (item, index) {\n if (item.doNotDisturbEnabled) {\n vm.checkboxFlag[index] = true;\n vm.originalData.activeNotDisturbTime[index] = true;\n } else {\n vm.checkboxFlag[index] = false;\n vm.originalData.activeNotDisturbTime[index] = false;\n }\n });\n setDropdowns();\n }\n function onChangeDropDown(model) {\n vm.isDropDownChanged = model.text !== '' && model.selected ? true : false;\n if (vm.originalModalState.phoneNumber !== vm.temporalPhoneRow.phone || vm.originalModalState.phoneType !== vm.temporalPhoneRow.type || vm.originalModalState.startTime !== vm.temporalPhoneRow.startTime || vm.originalModalState.startTimePeriod !== vm.temporalPhoneRow.startTimePeriod || vm.originalModalState.endTime !== vm.temporalPhoneRow.endTime || vm.originalModalState.endTimePeriod !== vm.temporalPhoneRow.endTimePeriod || vm.originalModalState.dndChecked !== vm.checkboxFlag[vm.index]) {\n vm.duplicatePhoneFlag = false;\n } else vm.duplicatePhoneFlag = true;\n }\n function setDropdowns() {\n if (vm.originalData.typeSelection.length !== 0) {\n _.forEach(vm.originalData.typeSelection, function (value, i) {\n vm.data.phoneTypeItems[i] = genericHelperService.createDropdownList(vm.dropDowns.phoneTypes, _kwValue, _kwText);\n vm.data.selectStartNotDisturbHours[i] = genericHelperService.createDropdownList(assetService.hoursOptionsForProfile, _kwValue, _kwText);\n vm.data.selectStartNotDisturbHoursPeriod[i] = genericHelperService.createDropdownList(assetService.hoursTimePeriodOptionsForProfile, _kwValue, _kwText);\n vm.data.selectEndNotDisturbHours[i] = genericHelperService.createDropdownList(assetService.hoursOptionsForProfile, _kwValue, _kwText);\n vm.data.selectEndNotDisturbHoursPeriod[i] = genericHelperService.createDropdownList(assetService.hoursTimePeriodOptionsForProfile, _kwValue, _kwText);\n });\n } else {\n vm.data.phoneTypeItems[0] = genericHelperService.createDropdownList(vm.dropDowns.phoneTypes, _kwValue, _kwText);\n vm.data.selectStartNotDisturbHours[0] = genericHelperService.createDropdownList(assetService.hoursOptionsForProfile, _kwValue, _kwText);\n vm.data.selectStartNotDisturbHoursPeriod[0] = genericHelperService.createDropdownList(assetService.hoursTimePeriodOptionsForProfile, _kwValue, _kwText);\n vm.data.selectEndNotDisturbHours[0] = genericHelperService.createDropdownList(assetService.hoursOptionsForProfile, _kwValue, _kwText);\n vm.data.selectEndNotDisturbHoursPeriod[0] = genericHelperService.createDropdownList(assetService.hoursTimePeriodOptionsForProfile, _kwValue, _kwText);\n }\n if (vm.sessionData.edit) {\n vm.index = vm.sessionData.index;\n vm.temporalPhoneRow.key = vm.index;\n vm.show.allBullets = true;\n vm.show.savePhoneControls = true;\n vm.show.phoneOptions[vm.index] = false;\n vm.show.rowToEdit[vm.index] = true;\n vm.temporalPhoneRow.key = vm.index;\n vm.temporalPhoneRow.phone = vm.data.phoneNumbers[vm.index].phone;\n vm.temporalPhoneRow.type = vm.data.phoneNumbers[vm.index].type.text;\n vm.data.phoneTypeItems[vm.index] = genericHelperService.setSelectedProp(vm.data.phoneTypeItems[vm.index], _kwValue, vm.temporalPhoneRow.type);\n if (vm.data.phoneNumbers[vm.index].doNotDisturbEnabled) {\n vm.checkboxFlag[vm.index] = true;\n vm.originalData.activeNotDisturbTime[vm.index] = true;\n var startPeriod = vm.data.phoneNumbers[vm.index].startTimeFormat.split(' ');\n var endPeriod = vm.data.phoneNumbers[vm.index].endTimeFormat.split(' ');\n vm.temporalPhoneRow.startTime = moment(startPeriod[0], ['hh:mm']).format('HH:mm');\n vm.temporalPhoneRow.endTime = moment(endPeriod[0], ['hh:mm']).format('HH:mm');\n vm.temporalPhoneRow.startTimePeriod = startPeriod[1].toUpperCase().trim();\n vm.temporalPhoneRow.endTimePeriod = endPeriod[1].toUpperCase().trim();\n vm.data.selectStartNotDisturbHours[vm.index] = genericHelperService.setSelectedProp(vm.data.selectStartNotDisturbHours[vm.index], _kwValue, vm.temporalPhoneRow.startTime);\n vm.data.selectEndNotDisturbHours[vm.index] = genericHelperService.setSelectedProp(vm.data.selectEndNotDisturbHours[vm.index], _kwValue, vm.temporalPhoneRow.endTime);\n vm.data.selectStartNotDisturbHoursPeriod[vm.index] = genericHelperService.setSelectedProp(vm.data.selectStartNotDisturbHoursPeriod[vm.index], _kwValue, vm.temporalPhoneRow.startTimePeriod);\n vm.data.selectEndNotDisturbHoursPeriod[vm.index] = genericHelperService.setSelectedProp(vm.data.selectEndNotDisturbHoursPeriod[vm.index], _kwValue, vm.temporalPhoneRow.endTimePeriod);\n }\n }\n vm.originalModalState.phoneNumber = vm.temporalPhoneRow.phone;\n vm.originalModalState.phoneType = vm.temporalPhoneRow.type;\n vm.originalModalState.startTime = vm.temporalPhoneRow.startTime;\n vm.originalModalState.startTimePeriod = vm.temporalPhoneRow.startTimePeriod;\n vm.originalModalState.endTime = vm.temporalPhoneRow.endTime;\n vm.originalModalState.endTimePeriod = vm.temporalPhoneRow.endTimePeriod;\n vm.originalModalState.dndChecked = vm.checkboxFlag[vm.index];\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n vm.temporalPhoneRow.phone = null;\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n setModels();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ModalManagePhoneNumbers', ModalManagePhoneNumbers);\nModalManagePhoneNumbers.$inject = ['$log', '$modalInstance', '$rootScope', 'sessionStorageService', 'assetService', 'genericHelperService', 'updatePhoneNumberService', 'readAndDerivePreferencesService', 'commongaTaggingService', 'returnCodeMapping', 'responseNotificationsService'];\nfunction ModalManagePhoneNumbers($log, $modalInstance, $rootScope, sessionStorageService, assetService, genericHelperService, updatePhoneNumberService, readAndDerivePreferencesService, commongaTaggingService, returnCodeMapping, responseNotificationsService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _remPhn = assetService.serviceActions.updatePhoneNumber.REM_PHN;\n var success = assetService.replyCodes.SUCCESS;\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _fadeOut = assetService.strings.FADEOUT;\n var _fadeinfinite = assetService.strings.FADEINFINITE;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n var _sessionData = {};\n var _businessPartnerId = null;\n var _index = null;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.phone = null;\n vm.data = {\n phoneNumbers: [],\n phoneNumber: {},\n phone: null\n };\n vm.updatePhoneNumbers = {\n replyCode: null\n };\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.deletePhoneNumber = deletePhoneNumber;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n deleteGlobalGAT();\n $modalInstance.close();\n }\n function telFormat(phone) {\n return genericHelperService.telFormat(phone);\n }\n function deleteGlobalGAT() {\n delete $rootScope.subheadForGAT;\n delete $rootScope.buttonTextForGAT;\n }\n function deletePhoneNumber(item, event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\n }\n var subheadScraped = document.getElementsByClassName('subheadline')[0];\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\n var _contactType;\n if (item.type === '1' || item.type === '') {\n _contactType = assetService.phonesTypes.HOME;\n } else if (item.type === '2' || item.type === '3') {\n _contactType = assetService.phonesTypes.MOBILE;\n }\n var dataToPostPhoneNumber = {\n action: _remPhn,\n businessPartnerId: _businessPartnerId,\n typeOfContact: _contactType,\n newPhone: item.phone,\n preferredFlag: item.preferredPhone ? true : false,\n sequenceNumber: item.consumeNumber,\n addressNumber: item.addressNumber,\n dndStartTime: item.notDisturbStart,\n dndStopTime: item.notDisturbEnd\n };\n updatePhoneNumber(dataToPostPhoneNumber).then(function () {\n if (vm.updatePhoneNumbers.replyCode === success) {\n // _.remove(vm.data.phoneNumbers, (phoneNumber, index) => {\n // return index === _index;\n // });\n\n // _sessionData.phoneNumbers = vm.data.phoneNumbers;\n // sessionStorageService.set(\n // assetService.storageKeys.profileSettings, _sessionData,\n // );\n\n var accUniq = _.uniq(vm.Accounts, 'acc');\n var readDerivePreferencesRequest = {\n businessPartnerId: _sessionData.primaryBp,\n emailId: _sessionData.currentUser.emailId,\n cdpId: _sessionData.currentUser.cdpId,\n contractAccountId: ''\n };\n readAndDerivePreferences(readDerivePreferencesRequest);\n }\n });\n }\n function readAndDerivePreferences(readDerivePreferencesRequest) {\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(readDerivePreferencesRequest).then(function (result) {\n var phones = [];\n var phoneArray = [];\n phones = _.map(result.d.results[0].Partner_Contact.results, function (item) {\n return {\n consumeNumber: item.ConsNumber,\n phone: item.PhoneNumber,\n type: item.Type,\n notDisturbStart: item.DND_Start_TIime,\n notDisturbEnd: item.DND_Stop_Time,\n preferredPhone: item.Primary,\n addressNumber: item.AddrNumber\n // remark: item.Remark\n };\n });\n phones.forEach(function (element) {\n // if(element.remark === '') {\n phoneArray.push(element);\n // }\n });\n vm.data.phoneNumbers = _.uniq(phoneArray, 'phone');\n _sessionData.phoneNumbers = vm.data.phoneNumbers;\n sessionStorageService.set(assetService.storageKeys.profileSettings, _sessionData);\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotification, _successToast);\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationMessage, 'Your phone number has been successfully deleted.');\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationtime, _fadeInOut);\n $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\n deleteGlobalGAT();\n $modalInstance.close();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"E\"\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n deleteGlobalGAT();\n $modalInstance.close();\n });\n }\n function updatePhoneNumber(dataToPost) {\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(function (result) {\n vm.updatePhoneNumbers.replyCode = result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n returnCodeMapping.returnCodeHandler([{\n MessageNum: \"E\"\n }], null).then(function (response) {\n var errorsWithMapping = response.filter(function (error) {\n return !error.data.noMapping;\n });\n if (errorsWithMapping.length > 0) {\n errorsWithMapping.forEach(function (error) {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: error.data.message,\n pageTitle: error.config.data.category\n });\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n deleteGlobalGAT();\n $modalInstance.close();\n });\n }\n function setModel() {\n vm.Accounts = _sessionData.Accounts;\n _index = _sessionData.managePhoneModal.index;\n vm.data.phoneNumbers = _sessionData.phoneNumbers;\n vm.data.phoneNumber = vm.data.phoneNumbers[_index];\n vm.data.phone = telFormat(vm.data.phoneNumber.phone);\n _businessPartnerId = _sessionData.restToBp.bpNumber;\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n _sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n setModel();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-use-before-define */\napp.controller('SignInAndSecurity', SignInAndSecurity);\nSignInAndSecurity.$inject = ['$log', 'sessionStorageService', 'assetService', 'changeEmailService', 'changePasswordService', 'modalService', '$rootScope', 'commongaTaggingService', 'isRegisterEmail', 'getRelatedBpforRegistration'];\nfunction SignInAndSecurity($log, sessionStorageService, assetService, changeEmailService, changePasswordService, modalService, $rootScope, commongaTaggingService, isRegisterEmail, getRelatedBpforRegistration) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var noneColor = 'noneColor';\n var greenColor = 'greenColor';\n var _success = assetService.replyCodes.Success;\n var _successPasswordChanged = 'Password Changed';\n var _sessionData = null;\n var _cdpId = null;\n var _accountSelector = {};\n var _account = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.changeEmail = false;\n vm.changePassword = false;\n vm.contractAccount = null;\n vm.checkUp = false;\n vm.confirmPassword = null;\n vm.newPassword = null;\n vm.oldPassword = null;\n vm.passwordReq = {\n passwordCharacter: noneColor,\n passwordLowercase: noneColor,\n passwordNumber: noneColor,\n passwordUppercase: noneColor,\n passwordSpecial: noneColor,\n threeRequirements: noneColor\n };\n vm.newEmail = null;\n vm.confirmEmail = null;\n vm.mailPassword = null;\n vm.overChangeEmail = true;\n vm.overChangePassword = true;\n vm.data = {};\n vm.account = {\n emails: [],\n infoAccount: [],\n emailTemporary: null\n };\n vm.closeToast = closeToast;\n vm.closeModal = closeModal;\n vm.showToast = false;\n vm.onChangePassword = onChangePassword;\n var _fadeInOut = assetService.strings.FADEINOUT;\n var _fadeOut = assetService.strings.FADEOUT;\n var _fadeinfinite = assetService.strings.FADEINFINITE;\n var _successToast = assetService.strings.success;\n var _errorToast = assetService.strings.ERROR;\n vm.checkUpTitle = 'Please verify your answers.';\n vm.ErrorCurrentPassword = false;\n vm.ErrorNewPassword = false;\n vm.isEmailAssociated = false;\n vm.isEmailRegistered = false;\n vm.isEmailChanged = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.showEditEmail = showEditEmail;\n vm.hideEditEmail = hideEditEmail;\n vm.showEditPassword = showEditPassword;\n vm.hideEditPassword = hideEditPassword;\n vm.passwordRequirements = passwordRequirements;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n vm.onEmailFieldsBlurred = onEmailFieldsBlurred;\n vm.onEmailFieldsChanged = onEmailFieldsChanged;\n\n /* --------------Function Definitions-----------------------*/\n function showEditEmail(newEmailForm) {\n vm.changeEmail = true;\n vm.overChangePassword = true;\n vm.newEmail = null;\n vm.confirmEmail = null;\n vm.mailPassword = null;\n vm.ErrorCurrentPassword = false;\n vm.isEmailAssociated = false;\n vm.isEmailRegistered = false;\n vm.isEmailChanged = false;\n vm.checkUp = false;\n newEmailForm.$setUntouched();\n angular.forEach(angular.element('.btn-toggle-visibility'), function (button) {\n if (!button.classList.contains('hidden')) {\n button.classList.add('hidden');\n }\n button.textContent = 'SHOW';\n });\n angular.element('#email-modal #password').attr('type', 'password');\n angular.element('#email-modal').modal('show');\n }\n function closeToast() {\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }\n function hideEditEmail(save, editEmailForm, event) {\n if (event) {\n $('.emailtitle').addClass('subheadline');\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n }\n if (save === 0) {\n vm.changeEmail = false;\n vm.ErrorCurrentPassword = false;\n vm.checkUp = false;\n vm.overChangePassword = true;\n editEmailForm.$setUntouched();\n angular.element('#email-modal').modal('hide');\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n } else if (save === 1) {\n changeEmail();\n }\n }\n function onChangePassword(type) {\n if (type === 'new') {\n vm.ErrorNewPassword = false;\n } else if (type === 'current') {\n vm.ErrorCurrentPassword = false;\n }\n }\n function showEditPassword(changePasswordForm) {\n vm.changePassword = true;\n vm.overChangeEmail = true;\n vm.confirmPassword = null;\n vm.newPassword = null;\n vm.oldPassword = null;\n vm.ErrorCurrentPassword = false;\n vm.ErrorNewPassword = false;\n changePasswordForm.$setUntouched();\n vm.checkUp = false;\n angular.forEach(angular.element('.btn-toggle-visibility'), function (button) {\n if (!button.classList.contains('hidden')) {\n button.classList.add('hidden');\n }\n button.textContent = 'SHOW';\n });\n angular.element('#psw-modal #password').attr('type', 'password');\n angular.element('#psw-modal #newPassword').attr('type', 'password');\n angular.element('#psw-modal #confirmNewPassword').attr('type', 'password');\n angular.element('#psw-modal').modal('show');\n }\n function hideEditPassword(save, event) {\n if (event) {\n $('.title').addClass('subheadline');\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n }\n if (save === 0) {\n vm.changePassword = false;\n vm.checkUp = false;\n vm.overChangeEmail = true;\n angular.element('#psw-modal').modal('hide');\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n } else if (save === 1) {\n changePassword();\n }\n }\n function changeEmail() {\n var dataToPost = {\n emailAddress: vm.data.email,\n internalIdentifier: _cdpId,\n action: assetService.serviceActions.changeEmail.CHANGE_EMAIL_ADDRESS,\n password: vm.mailPassword,\n newEmailAddress: vm.newEmail\n };\n return changeEmailService.sitecore.changeEmail(dataToPost).then(function (result) {\n if (result.MessageText === _success && result.ReturnCode === 0) {\n // vm.showToast = true;\n // vm.data.option = _successToast;\n // vm.data.messageOption = \"Your sign in email has been successfully updated.\";\n // vm.data.show = _fadeInOut;\n\n // if (vm.data.option == _successToast) {\n // setTimeout(function () {\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\n // vm.data.show = _fadeOut;\n // vm.showToast = false;\n // }, 12000)\n // }\n sessionStorageService.set(assetService.storageKeys.profileSettingNewEmail, vm.newEmail);\n modalService.signoutEmail();\n virtualPagePush('profile settings', 'youre almost done', 'page load');\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n vm.changeEmail = false;\n // vm.newEmail = null;\n // vm.confirmEmail = null;\n //vm.mailPassword = null;\n vm.ErrorCurrentPassword = false;\n vm.checkUp = false;\n vm.overChangePassword = true;\n angular.element('#email-modal').modal('hide');\n } else {\n vm.showToast = true;\n vm.data.option = _errorToast;\n vm.data.messageOption = 'We were unable to update email, please try again later.';\n vm.data.show = _fadeinfinite;\n vm.checkUp = true;\n vm.checkUpTitle = result.MessageText;\n if (result.ReturnCode === 370012015) {\n vm.ErrorCurrentPassword = true;\n }\n if (vm.data.option == _errorToast) {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.showToast = true;\n }\n }\n $('.emailtitle').removeClass('subheadline');\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n $('.emailtitle').removeClass('subheadline');\n });\n }\n function changePassword() {\n var dataToPost = {\n emailAddress: vm.data.email,\n internalIdentifier: _cdpId,\n password: vm.oldPassword,\n newPassword: vm.newPassword\n };\n return changePasswordService.sitecore.changePassword(dataToPost).then(function (result) {\n if (result.MessageText === _successPasswordChanged && result.ReturnCode === 0) {\n vm.showToast = true;\n vm.data.option = _successToast;\n vm.data.messageOption = 'Your sign in password has been successfully updated.';\n vm.data.show = _fadeInOut;\n attributePush('workFlow:' + 'toast-notification', 'headline:' + vm.data.option, 'subheadline:' + vm.data.messageOption, 'buttonText:' + 'impression', 'addedSpec:' + 'profile-settings');\n virtualPagePush('toast-notification', 'profile-settings', vm.data.messageOption, 'impression', vm.data.option);\n if (vm.data.option == _successToast) {\n setTimeout(function () {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.data.show = _fadeOut;\n vm.showToast = false;\n }, 12000);\n }\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n vm.changePassword = false;\n //vm.oldPassword = null;\n //vm.newPassword = null;\n //vm.confirmPassword = null;\n vm.checkUp = false;\n vm.ErrorCurrentPassword = false;\n vm.ErrorNewPassword = false;\n vm.overChangeEmail = true;\n angular.element('#psw-modal').modal('hide');\n } else {\n vm.showToast = true;\n vm.data.option = _errorToast;\n vm.data.messageOption = 'We were unable to update password, please try again later.';\n vm.data.show = _fadeinfinite;\n vm.checkUp = true;\n vm.ErrorCurrentPassword = false;\n vm.ErrorNewPassword = false;\n vm.checkUpTitle = result.MessageText;\n if (result.ReturnCode === 370012015) {\n vm.ErrorCurrentPassword = true;\n }\n if (result.ReturnCode === 370012020) {\n vm.ErrorNewPassword = true;\n }\n if (vm.data.option == _errorToast) {\n document.getElementById('toastdisable').style.visibility = 'hidden';\n vm.showToast = false;\n }\n }\n $('.title').removeClass('subheadline');\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n $('.title').removeClass('subheadline');\n });\n }\n function passwordRequirements() {\n var lowerCase = /^(?=.*[a-z]).+$/;\n var upperCase = /^(?=.*[A-Z]).+$/;\n var number = /^(?=.*[0-9]).+$/;\n var special = /^(?=.*[!@#$%^&*]).+$/;\n var required = 0;\n if (vm.newPassword.length >= 8) {\n vm.passwordCharacter = greenColor;\n } else {\n vm.passwordCharacter = noneColor;\n }\n if (lowerCase.test(vm.newPassword) === true) {\n vm.passwordLowercase = greenColor;\n required += 1;\n } else {\n required -= 1;\n vm.passwordLowercase = noneColor;\n }\n if (upperCase.test(vm.newPassword) === true) {\n vm.passwordUppercase = greenColor;\n required += 1;\n } else {\n required -= 1;\n vm.passwordUppercase = noneColor;\n }\n if (number.test(vm.newPassword) === true) {\n required += 1;\n vm.passwordNumber = greenColor;\n } else {\n required -= 1;\n vm.passwordNumber = noneColor;\n }\n if (special.test(vm.newPassword) === true) {\n required += 1;\n vm.passwordSpecial = greenColor;\n } else {\n required -= 1;\n vm.passwordSpecial = noneColor;\n }\n if (required >= 2) {\n vm.threeRequirements = greenColor;\n } else {\n vm.threeRequirements = noneColor;\n }\n }\n function closeModal() {\n $modalInstance.close();\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\n }\n function setModel() {\n if (_sessionData.isLegacyAccount) {\n vm.data = {\n email: _sessionData.email\n };\n _cdpId = _sessionData.currentUser.cdpId;\n } else {\n vm.account.infoAccount = _sessionData.emailAccounts;\n _.forEach(_sessionData.emailSubscriptions, function (item) {\n if (item.primary) {\n vm.account.email = item;\n }\n });\n vm.data = {\n email: vm.account.email.email\n };\n _cdpId = _sessionData.currentUser.cdpId;\n }\n }\n function onEmailFieldsBlurred(editEmailForm, type) {\n vm.editEmailForm = editEmailForm;\n if (type === 'currentPassword' && !vm.mailPassword) {\n vm.ErrorCurrentPassword = false;\n }\n if (type === 'newEmail' && editEmailForm.email.$valid) {\n checkProfileExists();\n }\n }\n function onEmailFieldsChanged(editEmailForm, type) {\n if (type === 'newEmail') {\n vm.isEmailAssociated = false;\n vm.isEmailRegistered = false;\n if (editEmailForm.email.$valid) {\n vm.isEmailChanged = true;\n }\n } else {\n vm.isEmailChanged = false;\n }\n if (type === 'passwordForEmail') {\n vm.ErrorCurrentPassword = false;\n }\n }\n function checkProfileExists() {\n if (vm.isEmailChanged) {\n var datarequest = {\n emailAddress: vm.newEmail\n };\n var payload = {\n emailId: vm.newEmail\n };\n isRegisterEmail.sitecore.IsEmailRegistered(datarequest).then(function (result) {\n if (result && result.RegistrationStatus === 'Registered') {\n vm.isEmailRegistered = true;\n } else {\n getRelatedBpforRegistration.sitecore.GetRelatedBp(payload).then(function (result) {\n if (result.d.RequestToMessagesNav.results[0].Type.toUpperCase() === 'S') {\n if (result.d.RequestToResponseNav.results.length >= 1) {\n vm.isEmailAssociated = true;\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function load() {\n _sessionData = sessionStorageService.get(assetService.storageKeys.profileSettings);\n setModel();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ContributionSuccess', ContributionSuccess);\nContributionSuccess.$inject = ['assetService', 'sessionStorageService', 'commongaTaggingService', 'broadcastService'];\nfunction ContributionSuccess(assetService, sessionStorageService, commongaTaggingService, broadcastService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n /* --------------Gloabl Vars-----------------------*/\n vm.customerAssistanceStorage = null;\n vm.data = {\n contribution: null,\n name: null,\n dollarAmount: false,\n roundUp: false\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.virtualPagePush = virtualPagePush;\n\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n vm.data.contribution = vm.customerAssistanceStorage.contribution;\n vm.data.name = vm.customerAssistanceStorage.name;\n if (vm.data.contribution.type === '0') {\n vm.data.dollarAmount = true;\n } else {\n vm.data.roundUp = true;\n }\n }\n function load() {\n broadcastService.hideHeader(true);\n vm.customerAssistanceStorage = sessionStorageService.get(assetService.storageKeys.customerAssistance);\n setModels();\n broadcastService.scrollTop();\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('ContributionUnenrollSuccess', ContributionUnenrollSuccess);\nContributionUnenrollSuccess.$inject = ['assetService', 'sessionStorageService', 'broadcastService', 'commongaTaggingService'];\nfunction ContributionUnenrollSuccess(assetService, sessionStorageService, broadcastService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var defaultProgramName = 'Program Name';\n\n /* --------------Global Vars-----------------------*/\n vm.customerAssistanceStorage = {};\n vm.programName = defaultProgramName;\n\n /* --------------Function Declarations-----------------------*/\n vm.virtualPagePush = virtualPagePush;\n\n /* --------------Function Definitions-----------------------*/\n function setModels() {\n vm.programName = vm.customerAssistanceStorage.name || defaultProgramName;\n }\n function load() {\n broadcastService.hideHeader(true);\n vm.customerAssistanceStorage = sessionStorageService.get(assetService.storageKeys.customerAssistance) || {};\n setModels();\n broadcastService.scrollTop();\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n load();\n }\n init();\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('ContributionType', ContributionType);\nContributionType.$inject = ['$log', 'assetService', 'commonService', 'sessionStorageService', '$state', 'makeOneTimeMonthlyContributionService', '$scope', 'broadcastService', 'responseNotificationsService', 'commongaTaggingService', '$timeout'];\nfunction ContributionType($log, assetService, commonService, sessionStorageService, $state, makeOneTimeMonthlyContributionService, $scope, broadcastService, responseNotificationsService, commongaTaggingService, $timeout) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var defaultDonation = '0';\n var donation = assetService.serviceActions.makeOneTimeMonthlyContribution.Donation;\n var monthlyDonationAmount = assetService.serviceActions.makeOneTimeMonthlyContribution.MONTHLY;\n var numberMonths = '12';\n var roundUpMyBill = assetService.serviceActions.makeOneTimeMonthlyContribution.ROUND_UP_MY_BILL;\n var unenroll = assetService.serviceActions.makeOneTimeMonthlyContribution.UNENROLL;\n var update = assetService.serviceActions.makeOneTimeMonthlyContribution.Update;\n var amount = '';\n /* --------------Gloabl Vars-----------------------*/\n vm.customerAssistanceStorage = {};\n vm.data = {\n customerAssistance: null,\n contribution: null\n };\n vm.dataCustomerAssistance = {};\n vm.dataToPost = {};\n vm.form = {\n amount: 0\n };\n vm.formStartingValues = {\n type: null,\n amount: 0,\n valuesChanged: false\n };\n vm.makeContributionPaymentResponse = {};\n vm.unenrolledData = null;\n vm.showError = false;\n vm.showLimitedError = false;\n vm.enableButton = false;\n /* --------------Function Declarations-----------------------*/\n vm.onCancel = onCancel;\n vm.saveStep = saveStep;\n vm.goToUnenrollProgram = goToUnenrollProgram;\n vm.defaultValuesChanged = defaultValuesChanged;\n vm.enrollSaveGAT = enrollSaveGAT;\n vm.unenrollGAT = unenrollGAT;\n\n /* --------------Function Definitions-----------------------*/\n function changeContributionPayment(action, donationAmount, monthly) {\n return {\n monthly: monthly,\n numberMonths: numberMonths,\n programName: vm.data.customerAssistance.id,\n donationAmount: donationAmount,\n contractAccountId: vm.data.customerAssistance.contractAccount,\n action: action\n };\n }\n function onCancel(event) {\n var url = $scope.urls && $scope.urls.billingAndPaymentPrograms ? $scope.urls.billingAndPaymentPrograms : '';\n broadcastService.redirectTo(event, url);\n }\n function saveStep() {\n if (vm.data.contribution) {\n //\n if (vm.form.type !== vm.data.contribution.type) {\n vm.dataToPost = changeContributionPayment(unenroll, defaultDonation, monthlyDonationAmount);\n var promises = [makeContributionPayment(vm.dataToPost)];\n commonService.executePromises(promises).then(function () {\n if (vm.makeContributionPaymentResponse.replyCode === assetService.replyCodes.SUCCESS) {\n if (vm.form.type === '1') {\n vm.dataToPost = changeContributionPayment(donation, defaultDonation, roundUpMyBill);\n nextStep(vm.dataToPost);\n } else if (vm.form.type === '0') {\n vm.dataToPost = changeContributionPayment(donation, \"\".concat(vm.form.amount), monthlyDonationAmount);\n nextStep(vm.dataToPost);\n }\n }\n });\n } else if (vm.form.type === '0') {\n vm.dataToPost = changeContributionPayment(update, \"\".concat(vm.form.amount), monthlyDonationAmount);\n nextStep(vm.dataToPost);\n }\n } else if (vm.form.type === '0') {\n vm.dataToPost = changeContributionPayment(donation, \"\".concat(vm.form.amount), monthlyDonationAmount);\n nextStep(vm.dataToPost);\n } else {\n vm.dataToPost = changeContributionPayment(donation, defaultDonation, roundUpMyBill);\n nextStep(vm.dataToPost);\n }\n if (vm.form.type === '0') {\n vm.dataCustomerAssistance = {\n type: vm.form.type,\n amount: vm.form.amount,\n toUnenroll: false\n };\n } else {\n vm.dataCustomerAssistance = {\n type: vm.form.type,\n toUnenroll: false\n };\n }\n vm.customerAssistanceStorage.contribution = vm.dataCustomerAssistance;\n sessionStorageService.set(assetService.storageKeys.customerAssistance, vm.customerAssistanceStorage);\n }\n function nextStep(dataToPost) {\n var onError = function onError() {\n responseNotificationsService.errorResponse({\n vehicle: 'toast',\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_ERROR,\n pageTitle: 'Contribute Types'\n });\n };\n makeContributionPayment(dataToPost).then(function () {\n if (vm.makeContributionPaymentResponse.replyCode === assetService.replyCodes.SUCCESS) {\n if (!vm.data.customerAssistance.status) {\n // On contribution enrollment\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_SUCCESS);\n } else {\n // On contribution manage\n onContributionUpdated();\n }\n } else {\n onError();\n }\n }, function () {\n return onError();\n }).catch(onError);\n }\n function onContributionUpdated() {\n vm.customerAssistanceStorage.dollarAmount = vm.form.type === '0' ? \"\".concat(vm.form.amount) : '0';\n sessionStorageService.set(assetService.storageKeys.customerAssistance, vm.customerAssistanceStorage);\n setModels();\n responseNotificationsService.successResponse({\n vehicle: 'toast',\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_SUCCESS,\n pageTitle: 'Contribute Types'\n });\n var url = $scope.urls && $scope.urls.billingAndPaymentPrograms ? $scope.urls.billingAndPaymentPrograms : '';\n $timeout(function () {\n broadcastService.redirectTo('', url);\n }, 1000);\n }\n function goToUnenrollProgram() {\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_UNENROLL);\n }\n function makeContributionPayment(data) {\n return makeOneTimeMonthlyContributionService.sitecore.makeOneTimeMonthlyContribution(data).then(function (result) {\n vm.makeContributionPaymentResponse = {\n replyCode: result.d.Message.ZreplyCode\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setModels() {\n vm.data.customerAssistance = {\n status: vm.customerAssistanceStorage.status === assetService.recurringContributionsButtons.NOT_ENROLLED ? false : true,\n contractAccount: vm.customerAssistanceStorage.contractAccount,\n name: vm.customerAssistanceStorage.name,\n id: vm.customerAssistanceStorage.id,\n dollarAmount: vm.customerAssistanceStorage.dollarAmount\n };\n if (vm.data.customerAssistance.status) {\n broadcastService.hideHeader(false);\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\n amount = parseFloat(vm.data.customerAssistance.dollarAmount);\n if (amount > 0) {\n vm.data.contribution = {\n amount: amount,\n type: '0'\n };\n } else {\n vm.data.contribution = {\n type: '1'\n };\n }\n vm.form.type = vm.data.contribution.type;\n if (vm.form.type === '0') {\n vm.form.amount = vm.data.contribution.amount;\n }\n vm.formStartingValues = {\n type: vm.form.type || null,\n amount: vm.form.amount || 0\n };\n } else {\n broadcastService.hideHeader(true);\n vm.formStartingValues = {\n type: null,\n amount: 0\n };\n }\n }\n function enrollSaveGAT() {\n var arrayElements = Array.prototype.slice.call(arguments);\n var optionSelected = vm.form.type === '0' ? 'dollar amount' : 'round up my bill';\n arrayElements.push('addedSpec:' + optionSelected);\n attributePush(arrayElements);\n }\n function unenrollGAT() {\n var arrayElements = Array.prototype.slice.call(arguments);\n attributePush(arrayElements);\n }\n function attributePush(elements) {\n commongaTaggingService.attributePush(elements);\n }\n\n /**\r\n * Method used to disabled SAVE button when the user doesn't change\r\n * the values used when it enrolled the program.\r\n *\r\n * The button will be enabled if the next bullets are fulfilled:\r\n * - If the program was enrolled with Dolar Amount, the CTA button will be enable if\r\n * the user changed the value or select Round up my bill.\r\n * - If the program was enrolled in Round up my bill, the CTA button will be enable if\r\n * the used select Dolar Amount and inserts a valid value.\r\n *\r\n * NOTE: this functionality only affects on Manage Recurring Contributions\r\n */\n function defaultValuesChanged() {\n var defaultType = vm.formStartingValues.type;\n var defaultAmount = vm.formStartingValues.amount;\n var currentType = vm.form.type;\n var currentAmount = vm.form.amount ? parseFloat(vm.form.amount.toString().replace(/[^0-9._-]/g, '')) || 0 : 0;\n vm.form.amount = parseFloat(vm.form.amount.toString().replace(/[^0-9._-]/g, ''));\n switch (currentType) {\n case '0':\n // If Dolar Amount radio button selected\n vm.formStartingValues.valuesChanged = currentAmount && currentAmount !== defaultAmount && currentAmount > 0 && currentAmount <= 500;\n break;\n case '1':\n // If Round up my bill radio button selected\n vm.formStartingValues.valuesChanged = defaultType === null || defaultType === '0';\n break;\n default:\n // If no radio button has been selected\n vm.formStartingValues.valuesChanged = false;\n break;\n }\n if (currentAmount <= 0) {\n vm.showError = true;\n } else {\n vm.showError = false;\n }\n if (currentAmount > 500) {\n vm.showLimitedError = true;\n vm.formStartingValues.valuesChanged = false;\n } else {\n vm.showLimitedError = false;\n }\n if (currentType == '0' && currentAmount > 0 && currentAmount <= 500) {\n vm.enableButton = true;\n } else if (currentType == '1') {\n vm.enableButton = true;\n } else {\n vm.enableButton = false;\n }\n }\n function load() {\n vm.customerAssistanceStorage = sessionStorageService.get(assetService.storageKeys.customerAssistance);\n setModels();\n broadcastService.scrollTop();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\napp.controller('ContributionUnenroll', ContributionUnenroll);\nContributionUnenroll.$inject = ['$log', 'assetService', 'makeOneTimeMonthlyContributionService', 'sessionStorageService', '$state', 'broadcastService', 'commongaTaggingService'];\nfunction ContributionUnenroll($log, assetService, makeOneTimeMonthlyContributionService, sessionStorageService, $state, broadcastService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var action = assetService.serviceActions.makeOneTimeMonthlyContribution.UNENROLL;\n var defaultDonation = '0';\n var monthly = assetService.serviceActions.makeOneTimeMonthlyContribution.MONTHLY;\n var numberMonths = '12';\n var sessionData = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {};\n vm.isPageLevelError = false;\n /* --------------Function Declarations-----------------------*/\n vm.unenrollProgram = unenrollProgram;\n vm.previousStep = previousStep;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n\n /* --------------Function Definitions-----------------------*/\n function makeContributionPayment(data) {\n vm.isPageLevelError = false;\n return makeOneTimeMonthlyContributionService.sitecore.makeOneTimeMonthlyContribution(data).then(function (result) {\n return {\n replyCode: result.d.Message.ZreplyCode\n };\n }, function (error) {\n vm.isPageLevelError = true;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function unenrollProgram(event) {\n $('.active-button').removeClass('active-button');\n $(event.currentTarget).addClass('active-button');\n var dataToPost = {\n monthly: monthly,\n numberMonths: numberMonths,\n programName: vm.data.id,\n donationAmount: defaultDonation,\n contractAccountId: vm.data.contractAccountId,\n action: action\n };\n makeContributionPayment(dataToPost).then(function (response) {\n if (response && response.replyCode === assetService.replyCodes.SUCCESS) {\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_UNENROLL_SUCCESS);\n }\n });\n }\n function previousStep() {\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_TYPE);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function setModels() {\n vm.data.name = sessionData.name;\n vm.data.id = sessionData.id;\n vm.data.contractAccountId = sessionData.contractAccount;\n }\n function load() {\n sessionData = sessionStorageService.get(assetService.storageKeys.customerAssistance);\n setModels();\n broadcastService.hideHeader(true);\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\n broadcastService.scrollTop();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\napp.controller('CCServiceOrder', CCServiceOrder);\nCCServiceOrder.$inject = ['$log', 'assetService', 'dateHelperService', 'getServiceOrderService', 'sessionStorageService', 'TableHelperService', 'commonService', '$window', '$state', '$scope'];\nfunction CCServiceOrder($log, assetService, dateHelperService, getServiceOrderService, sessionStorageService, tableHelperService, commonService, $window, $state, $scope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalAccountInfo = null;\n var globalSelectedAccount = null;\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n serviceOrders: []\n };\n vm.loaded = false;\n vm.orderType = assetService.orderType;\n vm.toSessionStorage = {};\n vm.sortArrow = '';\n vm.show = {\n tooltipPreferred: []\n };\n\n /* Function Declarations */\n vm.hideTooltip = hideTooltip;\n vm.nextStep = nextStep;\n vm.showTooltip = showTooltip;\n vm.sortTable = sortTable;\n vm.convert = convert;\n\n /* Function Definitions */\n function getDateFromFullDate(date) {\n var newDate = moment(date).format('YYYY-MM-DDTHH:mm:ss');\n return dateHelperService.getDateFromFullDate(newDate);\n }\n function nextStep(serviceOrder) {\n vm.toSessionStorage = {\n orderNumber: serviceOrder.order_number\n };\n sessionStorageService.set(assetService.storageKeys.serviceOrder, vm.toSessionStorage);\n $state.go(assetService.serviceOrderRouteState.VIEW_SERVICE_ORDER);\n }\n function sortTable() {\n vm.sortArrow = tableHelperService.sortingTableData(vm.data.serviceOrders, 'date', vm.sortArrow);\n }\n function getDescription(type) {\n return _.get(vm.orderType, type);\n }\n function showTooltip(index) {\n vm.show.tooltipPreferred[index] = true;\n }\n function hideTooltip(index) {\n vm.show.tooltipPreferred[index] = false;\n }\n function load() {\n $window.scrollTo(0, 0);\n var data = {\n businessPartner: globalSelectedAccount.PrimaryBp,\n noOfServiceOrders: '6'\n };\n var promises = [getServiceOrder(data)];\n commonService.executePromises(promises).then(function () {\n vm.loaded = true;\n });\n function getServiceOrder(dataToPost) {\n return getServiceOrderService.sitecore.getServiceOrderService(dataToPost).then(function (result) {\n vm.data.serviceOrders = _.map(result.d.SOHeaderToItem_NAV.results[0].SOItemToSO_NAV.results, function (item) {\n return {\n date: getDateFromFullDate(parseInt(item.ScheduleDate.slice(6, 19))),\n order_number: item.OrderNumber,\n orderType: item.OrderType,\n premise: item.Premise,\n status: item.Status,\n description: getDescription(item.OrderType)\n };\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function convert(data) {\n data = data.toLowerCase();\n var dataReplaced = data.replace(/ /g, \"-\");\n return dataReplaced;\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n\n /* ---------------Initialization-------------------*/\n // Will initialize with globalAccSel\n}\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-use-before-define */\napp.controller('RecurringContributionsController', RecurringContributionsController);\nRecurringContributionsController.$inject = ['$log', '$scope', 'assetService', 'sessionStorageService', 'returnApplicableProgramsService', 'commongaTaggingService'];\nfunction RecurringContributionsController($log, $scope, assetService, sessionStorageService, returnApplicableProgramsService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _temporalProgram = [];\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var globalSelectedAccountEmail = '';\n\n /* --------------Gloabl Vars-----------------------*/\n vm.customerAssistanceData = null;\n vm.data = {\n customerAssistance: null,\n button: null\n };\n vm.contributionProgram = null;\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n vm.contributionName = '';\n /* --------------Function Definitions-----------------------*/\n vm.nextStep = nextStep;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function nextStep() {\n /* Need to go to contribution manage view */\n }\n function setModels() {\n if (vm.contributionProgram.status === assetService.recurringContributionsButtons.ENROLLED) {\n vm.data.button = true;\n } else {\n vm.data.button = false;\n }\n }\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function load() {\n var params = {\n contractAccountId: globalSelectedAccount.accountNum\n };\n getRole();\n returnApplicablePrograms(params).then(function () {\n setModels();\n sessionStorageService.set(assetService.storageKeys.customerAssistance, vm.contributionProgram);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function returnApplicablePrograms(data) {\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(function (result) {\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\n vm.contributionProgram = {\n id: _temporalProgram[0].trim(),\n name: _temporalProgram[1],\n contractAccount: result.d.Programtores_nav.results[0].ContractAccount,\n startDate: result.d.Programtores_nav.results[0].ProgramStartDate,\n endDate: result.d.Programtores_nav.results[0].ProgramEndDate,\n status: result.d.Programtores_nav.results[0].Status,\n // Awaiting 'Status' field to be added to response\n dollarAmount: result.d.Programtores_nav.results[0].DollarAmount\n };\n vm.contributionName = vm.contributionProgram.name.toLowerCase().split(' ').map(function (s) {\n return s.charAt(0).toUpperCase() + s.substring(1);\n }).join(' ');\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n });\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n /*empty function*/\n };\n init();\n}\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\napp.controller('ViewServiceOrderManager', ViewServiceOrderManager);\nViewServiceOrderManager.$inject = ['$log', 'assetService', 'dateHelperService', 'commonService', 'genericHelperService', 'getServiceOrderDetailsService', 'sessionStorageService', 'updateServiceOrderService', '$window', '$rootScope'];\nfunction ViewServiceOrderManager($log, assetService, dateHelperService, commonService, genericHelperService, getServiceOrderDetailsService, sessionStorageService, updateServiceOrderService, $window, $rootScope) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _completed = assetService.viewServiceOrderStatus.COMPLETED;\n var _incompleted = assetService.viewServiceOrderStatus.INCOMPLETED;\n var _cancel = assetService.viewServiceOrderStatus.CANCEL;\n var _originUrl = window.location.origin;\n var _splitedRemarks = [];\n var _success = assetService.replyCodes.Success;\n var _errorOccurred = assetService.messages.ERROR_OCCURRED;\n var globalSelectedAccount = {};\n\n /* --------------Gloabl Vars-----------------------*/\n vm.data = {\n status: null,\n order_number: null,\n additional_comments: null,\n phoneNumber: null,\n email: null,\n reported_time: null,\n scheduled_date: null\n };\n vm.form = {\n phoneNumber: null,\n comments: null,\n show: false,\n btn: true\n };\n vm.loaded = false;\n vm.getServiceOrderDetails = {};\n vm.sessionStorage = {};\n vm.updateServiceOrder = {\n reply: null\n };\n vm.viewerRole = false;\n vm.adminRole = false;\n vm.ownerRole = false;\n\n /* Function Definitions */\n vm.telFormat = telFormat;\n vm.saveData = saveData;\n vm.cancel = cancel;\n vm.convert = convert;\n vm.verifyReadOnlyAndDoVirtualPagePush = verifyReadOnlyAndDoVirtualPagePush;\n\n /* Function Declarations */\n function getRole() {\n switch (globalSelectedAccount.role) {\n case assetService.roles.owner:\n vm.ownerRole = true;\n break;\n case assetService.roles.admin:\n vm.adminRole = true;\n break;\n case assetService.roles.viewer:\n vm.viewerRole = true;\n break;\n default:\n vm.viewerRole = true;\n }\n }\n function getDateFromFullDate(date) {\n var newDate = moment(date).format('YYYY-MM-DDTHH:mm:ss');\n return dateHelperService.getDateFromFullDate(newDate);\n }\n function telFormat(phone) {\n return genericHelperService.telFormat(phone);\n }\n function cancel() {\n reload();\n }\n function convertTime(time) {\n return moment(time, 'HHmmss').format('HH:mm A');\n }\n function saveData() {\n var dataToPost = {\n action: assetService.serviceActions.updateServiceOrder.UPDATE_SO,\n orderNumber: vm.data.order_number,\n requestedPhone: vm.form.phoneNumber,\n remarks: vm.form.comments\n };\n updateServiceOrder(dataToPost).then(function () {\n if (vm.updateServiceOrder.reply === _success) {\n vm.loaded = false;\n reload();\n } else {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n }\n });\n $state.go(assetService.serviceOrderRouteState.SERVICE_ORDER);\n }\n function updateServiceOrder(data) {\n vm.updateServiceOrder.reply = null;\n return updateServiceOrderService.sitecore.updateServiceOrder(data).then(function (result) {\n vm.updateServiceOrder.reply = result.d.ReplyCode;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function reload() {\n $window.location.reload();\n }\n function setModels() {\n _splitedRemarks = vm.getServiceOrderDetails.SoRemarks.split('*', 3);\n vm.data.order_number = vm.getServiceOrderDetails.OrderNumber;\n vm.data.phoneNumber = vm.getServiceOrderDetails.PrimaryContact;\n vm.data.status = vm.getServiceOrderDetails.Status;\n vm.data.scheduled_date = getDateFromFullDate(parseInt(vm.getServiceOrderDetails.ScheduleDate.slice(6, 19)));\n var _splitedRemarks2 = _splitedRemarks;\n var _splitedRemarks3 = _slicedToArray(_splitedRemarks2, 3);\n vm.data.additional_comments = _splitedRemarks3[2];\n vm.data.reported_time = convertTime(vm.getServiceOrderDetails.ReportedTime);\n if (vm.data.status === _completed || vm.data.status === _incompleted || vm.data.status === _cancel) {\n vm.form.show = true;\n } else {\n vm.form.show = false;\n }\n if (vm.data.status === _completed || vm.data.status === _cancel) {\n vm.form.btn = false;\n } else {\n vm.form.btn = true;\n }\n if (!vm.form.show) {\n vm.form.phoneNumber = vm.data.phoneNumber;\n vm.form.comments = vm.data.additional_comments;\n }\n vm.loaded = true;\n }\n function load() {\n $window.scrollTo(0, 0);\n vm.sessionStorage = sessionStorageService.get(assetService.storageKeys.serviceOrder);\n var dataPost = {\n orderNumber: vm.sessionStorage.orderNumber ? vm.sessionStorage.orderNumber : ''\n };\n var promises = [getServiceOrderDetails(dataPost), getRole()];\n commonService.executePromises(promises).then(function () {\n setModels();\n });\n function getServiceOrderDetails(data) {\n return getServiceOrderDetailsService.sitecore.getServiceOrderDetailsService(data).then(function (result) {\n vm.getServiceOrderDetails = result.d.results[0].serviceorderdetailtores_nav;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function convert(data) {\n data = data.toLowerCase();\n var dataReplaced = data.replace(/ /g, \"-\");\n return dataReplaced;\n }\n function verifyReadOnlyAndDoVirtualPagePush() {\n if (vm.data.status === 'Completed' || vm.data.status === 'Cancelled') {\n $rootScope.virtualPagePush('fire-vpv', '/vpv/authenticated/manage-service-requests/manage-service-requests/connect-meter/' + vm.data.status + '/read-only');\n }\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n var globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n load();\n };\n init();\n}\napp.controller('PickYourDueDate', PickYourDueDate);\nPickYourDueDate.$inject = ['$location', '$scope', '$rootScope', '$state', 'assetService', 'enrollInBillingAndPaymentProgramsService', 'getAccountBalanceForRegularAccountService', 'sessionStorageService', 'broadcastService', 'getProductRecommendationsCAREService', 'CareDeleteProductService', 'cookieService', 'componentStateHandler', 'careFeedbackService', 'commongaTaggingService'];\nfunction PickYourDueDate($location, $scope, $rootScope, $state, assetService, enrollInBillingAndPaymentProgramsService, getAccountBalanceForRegularAccountService, sessionStorageService, broadcastService, getProductRecommendationsCAREService, CareDeleteProductService, cookieService, componentStateHandler, careFeedbackService, commongaTaggingService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n vm.data = undefined;\n vm.selectedDueDate = undefined;\n vm.selectedDueDateWithSuffix = '-';\n vm.currentDueDate = undefined;\n vm.currentDueDateWithSuffix = '';\n vm.currentDueDateDateFormat = undefined;\n vm.firstPage = assetService.pickYourDueDate.firstStatePage;\n vm.nextPage = assetService.pickYourDueDate.secondStatePage;\n vm.title = assetService.pickYourDueDate.title;\n vm.description = assetService.pickYourDueDate.description;\n vm.lastButton = assetService.pickYourDueDate.lastButton;\n vm.returnTo = assetService.pickYourDueDate.returnTo;\n vm.buttonDisabled = true;\n $rootScope.isCareComp = false;\n vm.PYDDPageError = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.nextStep = nextStep;\n vm.selectCalendarDate = selectCalendarDate;\n vm.backToPage = backToPage;\n vm.virtualPagePush = virtualPagePush;\n vm.attributePush = attributePush;\n /* --------------Function Definitions-----------------------*/\n function virtualPagePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n var arrayElements = Array.prototype.slice.call(arguments);\n commongaTaggingService.attributePush(arrayElements);\n }\n function selectCalendarDate(selectedDueDate) {\n vm.data.selectedDueDate = selectedDueDate;\n vm.calendarDate = vm.currentDueDateDateFormat.setDate(selectedDueDate);\n vm.selectedDueDateWithSuffix = ordinal_suffix_of(selectedDueDate);\n vm.buttonDisabled = false;\n }\n function nextStep(event) {\n if (event) {\n $(\".active-button\").removeClass(\"active-button\");\n $(event.currentTarget).addClass(\"active-button\");\n }\n if (vm.currentDueDateDateFormat) {\n var data = {\n contractAccountId: vm.contractAccountId,\n dueDate: moment(vm.calendarDate).format('YYYY-MM-DDTHH:mm:ss'),\n progName: assetService.billingAndPaymentProgramsCodes.PYODDA\n };\n vm.loadingSpinner = true;\n enrollInBillingAndPaymentPrograms(data).then(function (result) {\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === 'S') {\n var requestCare = {\n accountNumber: data.contractAccountId,\n jurisdiction: globalSelectedAccount.jurisdiction,\n progName: data.progName\n };\n productRecommendationsCARE(requestCare);\n }\n componentStateHandler.showComponent(vm);\n $state.go(vm.nextPage);\n }, function (error) {\n vm.loadingSpinner = false;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n vm.PYDDPageError = $rootScope.BnPpageError;\n //componentStateHandler.failedState(vm);\n });\n }\n }\n function enrollInBillingAndPaymentPrograms(data) {\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(data);\n }\n function ordinal_suffix_of(i) {\n var j = i % 10,\n k = i % 100;\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n return i + 'th';\n }\n function productRecommendationsCARE(dataCare) {\n $rootScope.isCareComp = true;\n // Call to getProductsRecommendations\n return getProductRecommendationsCAREService.sitecore.getProductRecommendationsCARE({\n accountNumber: dataCare.accountNumber,\n jurisdiction: dataCare.jurisdiction\n }).then(function (careResult) {\n var productExists = _.find(careResult.Care_Response[0].results, function (psFromList) {\n return psFromList.COMMERCE_PRODUCT_ID === dataCare.progName;\n });\n if (productExists) {\n // TO call HANA service to remove the product\n var dataObj = {\n productId: productExists.PRODUCT_ID,\n contractAccountId: dataCare.accountNumber,\n regulated: assetService.numeric_Numbers.onee,\n acceptanceFlag: assetService.numeric_Numbers.onee\n };\n careFeedbackService.sitecore.sendFeedback(dataObj);\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\n }\n $rootScope.isCareComp = false;\n });\n }\n function carefiltering(result, removeProductId, globalAccountNumber) {\n var ownerType = result ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL : '';\n var temp = _.filter(_.map(result.Care_Response[0].results, function (item) {\n return {\n regulated: item.REGULATED,\n productId: item.PRODUCT_ID,\n commerceProductId: item.COMMERCE_PRODUCT_ID,\n productName: item.PRODUCT_NAME,\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\n score: item.SCORE,\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\n lineOfBusiness: item.LINE_OF_BUSINESS,\n installationFee: item.INSTALLATION_FEE,\n eligibleFlag: item.ELIGIBLE_FLAG,\n rank: item.RANK,\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\n ucVersionRequired: item.UC_Version_Required,\n productFamilyName: item.Product_Family_Name\n };\n }), function (item) {\n return (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') && item.commerceProductId !== removeProductId && item.commerceProductId !== 'NA';\n });\n var filterProduct = _.filter(temp, function (recommendation) {\n return recommendation.ownerRenterProductLevel === ownerType || recommendation.ownerRenterProductLevel === 'B';\n });\n sessionStorageService.set(assetService.storageKeys.careRecFiilteredList + globalAccountNumber, filterProduct);\n }\n function backToPage() {\n $state.go(vm.returnTo);\n }\n function load() {\n if (assetService.apiConfig.useLocalHost) {\n vm.data = {\n accountList: [{\n contractAccountNumber: $location.search().contractAccountId,\n requestedBy: $location.search().emailId\n }]\n };\n } else {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n }\n vm.contractAccountId = globalSelectedAccount.accountNum;\n vm.businessPartnerId = globalSelectedAccount.bpNumber;\n vm.data = {\n accountList: [{\n contractAccountNumber: vm.contractAccountId,\n requestedBy: vm.businessPartnerId\n }]\n };\n }\n getAccountBalanceForRegularAccount(vm.data).then(function (result) {\n if (result.getAccountAndBillingInfoResList.length > 0) {\n var accountSelected = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == vm.contractAccountId;\n });\n vm.data.currentDueDate = accountSelected[0].currentDueDate ? moment(convertDateNumberToString(accountSelected[0].currentDueDate.toString())).format('MM/DD/YYYY') : '';\n vm.currentDueDateDateFormat = new Date(vm.data.currentDueDate);\n vm.currentDueDate = vm.currentDueDateDateFormat.getDate();\n vm.currentDueDateWithSuffix = ordinal_suffix_of(vm.currentDueDateDateFormat.getDate());\n }\n componentStateHandler.showComponent(vm);\n $state.go(vm.firstPage);\n }, function (error) {\n componentStateHandler.failedState(vm);\n });\n }\n function getAccountBalanceForRegularAccount(data) {\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data);\n }\n function convertDateNumberToString(currentDate) {\n var year = currentDate.substring(0, 4),\n month = currentDate.substring(4, 6),\n day = currentDate.substring(6, 8);\n return year + '/' + month + '/' + day;\n }\n\n // initialice CARE\n $scope.$on(assetService.events.careLoad, function (event, data) {\n initCare();\n });\n function initCare() {\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\n broadcastService.care(globalAccountInfo.accountSelected.accountNum);\n }\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n var isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.pyodd.enrollment);\n if (isValidation || assetService.apiConfig.useLocalHost) {\n load();\n } else {\n window.location.href = '/my-account/billing-and-payment-programs/';\n }\n };\n init();\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-magic-numbers */\napp.controller('CustomerSearchController', CustomerSearchController);\nCustomerSearchController.$inject = ['$log', 'assetService', 'commonService', 'sessionStorageService', '$scope', 'thirdPartySearchCustomer', '$rootScope', 'TPSCSVService', 'dataModelsDTOProductsAndServices', 'commongaTaggingService', 'genericHelperService', 'apiConfigService', 'componentStateHandler', '$timeout'];\nfunction CustomerSearchController($log, assetService, commonService, sessionStorageService, $scope, thirdPartySearchCustomer, $rootScope, csvExportService, dataModelsDTOProductsAndServices, commongaTaggingService, genericHelperService, apiConfigService, componentStateHandler, $timeout) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var fileName = 'CustomerSearchResults';\n var pageCase = 'customer';\n var noDataFoundErrorMessage = 'Sorry! We are unable to find any results. Please try again.';\n var serviceDownErrorMessage = 'we are currently experiencing a service outage for our third party search tool';\n var customerTabId = 1;\n var streetTabId = 2;\n var phoneNumberTabId = 3;\n var accountNumberTabId = 4;\n var businessTabId = 5;\n var premiseTabId = 6;\n var _kwValue = assetService.strings.VALUE;\n var MAX_RECORDS = 999;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.message = null;\n vm.orderBy = 'Name';\n vm.orderPos = -1; // sorting not required\n vm.sortAsc = true;\n vm.tab = 4;\n vm.noDataFound = false;\n vm.serviceDown = false;\n vm.showResults = false;\n vm.submitBtnDisabled = true;\n vm.showAdvancedFormInputs = false;\n vm.disableAdvancedSearch = true;\n vm.enableBackToPrevButton = false;\n vm.isNotBusinessTab = true;\n vm.selectStatesList = [];\n vm.isMaxResults = false;\n vm.searchPageItems = [{\n value: 10,\n text: 10\n }, {\n value: 25,\n text: 25\n }, {\n value: 50,\n text: 50\n }, {\n value: 100,\n text: 100\n }, {\n value: 1000,\n text: 1000\n }];\n vm.form = {\n firstName: null,\n lastName: null,\n orgName: null,\n accountNumber: null,\n telephoneNo: null,\n street: null,\n houseNo: null,\n unit: null,\n city: null,\n state: null,\n zipCode: null,\n customerZipCode: null,\n customerState: null,\n customerCity: null,\n premiseID: null,\n advPhoneNumber: {\n firstName: null,\n lastName: null,\n floor: null,\n street: null,\n houseNo: null,\n city: null,\n state: null,\n zipCode: null,\n accountNumber: null\n },\n advStreet: {\n firstName: null,\n lastName: null,\n phoneNo: null,\n accountNo: null\n },\n advCustomer: {\n streetAddress: null,\n houseNo: null,\n floor: null,\n accountNumber: null,\n phoneNo: null\n },\n businessName: null,\n businessCity: null,\n businessState: null,\n businessZip: null,\n advBusiness: {\n streetAddress: null,\n houseNo: null,\n floor: null,\n accountNo: null,\n phoneNo: null\n }\n };\n vm.minusTableHeaders = [{\n column: 'name',\n sortAsc: true\n }, {\n column: 'streetAddress',\n sortAsc: true\n }, {\n column: 'city',\n sortAsc: true\n }, {\n column: 'state',\n sortAsc: true\n }, {\n column: 'zipCode',\n sortAsc: true\n }, {\n column: 'telephoneNo',\n sortAsc: true\n }, {\n column: 'accountNumber',\n sortAsc: true\n }];\n\n /* --------------Function Definitions-----------------------*/\n\n function attributePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n function getTabNameFromTabId(tabId) {\n var tabName = '';\n switch (tabId) {\n case 1:\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\n break;\n case 2:\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\n break;\n case 3:\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\n break;\n case 4:\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\n break;\n case 5:\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\n break;\n case 6:\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\n break;\n default:\n tabName = 'home';\n break;\n }\n return tabName;\n }\n function activateDetails(item) {\n var tabName = getTabNameFromTabId(vm.tab);\n attributePush(\"workFlow:\".concat($('#tpst-customer-gat').attr('businessFunction')), \"buttonText:\".concat($('#tpst-customersearchresults-gat').attr('detailsButtonLabel')), \"headline:\".concat($('#tpst-customer-gat').attr('headLine')), \"subheadline: \".concat(tabName));\n $rootScope.searchType = 1;\n $scope.$emit('nextStep', \"viewDetails?AccountNumber=\".concat(item.redirectAccountNumber));\n }\n function onClickAdvancedSearch() {\n vm.showAdvancedFormInputs = !vm.showAdvancedFormInputs;\n }\n function clearSessions() {\n sessionStorageService.delete(assetService.storageKeys.tpstSearchCriteria);\n sessionStorageService.delete(assetService.storageKeys.selectedTab);\n }\n function clearForm() {\n if (vm.addressSearchForm) {\n vm.addressSearchForm.$setPristine();\n vm.addressSearchForm.$setUntouched();\n }\n if (vm.accountNoSearchForm) {\n vm.accountNoSearchForm.$setPristine();\n vm.accountNoSearchForm.$setUntouched();\n }\n if (vm.premiseNoSearchForm) {\n vm.premiseNoSearchForm.$setPristine();\n vm.premiseNoSearchForm.$setUntouched();\n }\n if (vm.customerNameSearchForm) {\n vm.customerNameSearchForm.$setPristine();\n vm.customerNameSearchForm.$setUntouched();\n }\n if (vm.telephoneNoSearchForm) {\n vm.telephoneNoSearchForm.$setPristine();\n vm.telephoneNoSearchForm.$setUntouched();\n }\n if (vm.businessNameSearchForm) {\n vm.businessNameSearchForm.$setPristine();\n vm.businessNameSearchForm.$setUntouched();\n }\n vm.searchResults = [];\n vm.showResults = false;\n vm.form = {\n firstName: null,\n lastName: null,\n orgName: null,\n accountNumber: null,\n telephoneNo: null,\n street: null,\n houseNo: null,\n unit: null,\n city: null,\n state: null,\n zipCode: null,\n customerZipCode: null,\n customerState: null,\n customerCity: null,\n premiseID: null,\n advPhoneNumber: {\n firstName: null,\n lastName: null,\n floor: null,\n street: null,\n houseNo: null,\n city: null,\n state: null,\n zipCode: null,\n accountNumber: null\n },\n advStreet: {\n firstName: null,\n lastName: null,\n phoneNo: null,\n accountNo: null\n },\n advCustomer: {\n streetAddress: null,\n houseNo: null,\n floor: null,\n accountNumber: null,\n phoneNo: null\n },\n businessName: null,\n businessCity: null,\n businessState: null,\n businessZip: null,\n advBusiness: {\n streetAddress: null,\n houseNo: null,\n floor: null,\n accountNo: null,\n phoneNo: null\n }\n };\n vm.noDataFound = false;\n vm.serviceDown = false;\n vm.showResults = false;\n vm.submitBtnDisabled = true;\n vm.showAdvancedFormInputs = false;\n clearSessions();\n }\n function cancel() {\n clearForm();\n $scope.$emit('nextStep', 'home');\n }\n function capitalizeName(name) {\n return dataModelsDTOProductsAndServices.transformName(name);\n }\n function exportCSV() {\n csvExportService.exportToCSV(pageCase, vm.searchResults, fileName);\n }\n function setFormSessions(formData, tabName, showAdvanced) {\n sessionStorageService.set(assetService.storageKeys.tpstSearchCriteria, formData);\n sessionStorageService.set(assetService.storageKeys.selectedTab, tabName);\n sessionStorageService.set(assetService.storageKeys.showAdvancedFields, showAdvanced);\n }\n function getThirdPartySearchCustomer(data, tabName) {\n vm.searchResults = [];\n return thirdPartySearchCustomer.sitecore.customerSearch(data).then(function (result) {\n if (!result) {\n componentStateHandler.failedState(vm);\n } else if (result.error_response && result.error_response.error_code === '500' && result.error_response.error_message.includes('Restricted')) {\n vm.serviceDown = true;\n vm.noDataFound = false;\n attributePush(\"workFlow:error \".concat($('#tpst-customer-gat').attr('businessFunction')), 'returnCode:not set', \"endpoint:\".concat(apiConfigService.post.thirdPartySearchCustomer()), \"msgHeader:\".concat(serviceDownErrorMessage), \"headline:\".concat($('#tpst-customer-gat').attr('headLine')), \"subheadline:\".concat(tabName));\n } else if (result.MessageList && result.MessageList.ReplyCode === 'ERROR') {\n vm.noDataFound = true;\n vm.serviceDown = false;\n vm.message = noDataFoundErrorMessage;\n $scope.$emit('loadingSpinner', false);\n attributePush(\"workFlow:error \".concat($('#tpst-customer-gat').attr('businessFunction')), 'returnCode:not set', \"endpoint:\".concat(apiConfigService.post.thirdPartySearchCustomer()), \"msgHeader:\".concat(noDataFoundErrorMessage), \"headline:\".concat($('#tpst-customer-gat').attr('headLine')), \"subheadline:\".concat(tabName));\n } else {\n vm.noDataFound = false;\n vm.serviceDown = false;\n $scope.rowLimit = 10;\n vm.startingRecord = 1;\n vm.endingRecord = $scope.rowLimit;\n vm.currentPage = 0;\n vm.isMaxResults = result.MessageList.IsMoreData && result.Records.length === MAX_RECORDS;\n setFormSessions(vm.form, vm.tab, vm.showAdvancedFormInputs);\n vm.searchResults = _.map(result.Records, function (record) {\n var isNonReg = record.SrcSysCode === 'NR';\n var isMidWest = record.PremiseState === 'IN' || record.PremiseState === 'OH' || record.PremiseState === 'KY';\n return {\n name: record.CustomerName,\n streetAddress: record.PremiseUnit ? \"\".concat(record.PremiseHouseNum, \" \").concat(record.PremiseUnit, \" \").concat(record.PremiseStreet) : \"\".concat(record.PremiseHouseNum, \" \").concat(record.PremiseStreet),\n city: record.PremiseCity,\n state: record.PremiseState,\n zipCode: record.PremiseZipCode,\n telephoneNo: record.CustomerTelephone,\n accountNumber: isNonReg && isMidWest ? '' : record.AccountNumber,\n accountStatus: record.Status,\n redirectAccountNumber: record.AccountNumber\n };\n });\n }\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function fnChangeRowLimit(rowLimit) {\n $scope.rowLimit = rowLimit.value;\n vm.currentPage = 0;\n vm.endingRecord = $scope.rowLimit;\n vm.startingRecord = 1;\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\n }\n vm.fnChangeRowLimit = fnChangeRowLimit;\n function fnPreviousRecordsShow() {\n vm.currentPage -= 1;\n vm.startingRecord -= $scope.rowLimit;\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\n }\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\n function fnNextRecordsShow() {\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\n vm.currentPage += 1;\n vm.endingRecord = vm.currentPage + 1 === vm.totalPages ? vm.searchResults.length : vm.startingRecord + $scope.rowLimit - 1;\n }\n vm.NextRecordsShow = fnNextRecordsShow;\n function validateSearchCriteria() {\n if (vm.form.firstName && vm.form.lastName && vm.form.customerCity && vm.form.customerState || vm.form.firstName && vm.form.lastName && vm.form.customerZipCode || vm.form.street && vm.form.city && vm.form.state || vm.form.street && vm.form.zipCode || vm.form.telephoneNo || vm.form.businessName && vm.form.businessCity && vm.form.businessState || vm.form.businessName && vm.form.businessZip || vm.form.premiseID || vm.form.accountNumber !== null && vm.form.accountNumber.length > 1 && vm.form.accountNumber.trim().length == 12) {\n vm.submitBtnDisabled = false;\n } else {\n vm.submitBtnDisabled = true;\n }\n }\n function sortByColumn(value) {\n vm.orderBy = vm.minusTableHeaders[value].column;\n vm.orderPos = value;\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\n }\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n\n // functions to prepare the payload for the customer search API\n function updateCustomerFormData() {\n var data = {};\n if (vm.showAdvancedFormInputs) {\n data = {\n accountNumber: vm.form.advCustomer.accountNumber,\n firstName: vm.form.firstName,\n lastName: vm.form.lastName,\n city: vm.form.customerCity || null,\n state: vm.form.customerState || null,\n zipCode: vm.form.customerZipCode || null,\n orgName: vm.form.orgName || null,\n houseNo: vm.form.advCustomer.houseNo || null,\n street: vm.form.advCustomer.streetAddress || null,\n unit: vm.form.advCustomer.floor ? vm.form.advCustomer.floor.toUpperCase() : null,\n telephone: vm.form.advCustomer.phoneNo || null\n };\n } else {\n data = {\n accountNumber: null,\n firstName: vm.form.firstName,\n lastName: vm.form.lastName,\n city: vm.form.customerCity || null,\n state: vm.form.customerState || null,\n zipCode: vm.form.customerZipCode || null,\n orgName: null,\n houseNo: null,\n street: null,\n unit: null,\n telephone: null\n };\n }\n return data;\n }\n function updateStreetFormData() {\n var data = {};\n if (vm.showAdvancedFormInputs) {\n data = {\n accountNumber: vm.form.advStreet.accountNo,\n firstName: vm.form.advStreet.firstName,\n lastName: vm.form.advStreet.lastName,\n city: vm.form.city || null,\n state: vm.form.state || null,\n zipCode: vm.form.zipCode || null,\n orgName: null,\n houseNo: vm.form.houseNo || null,\n street: vm.form.street || null,\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\n telephone: vm.form.advStreet.phoneNo || null\n };\n } else {\n data = {\n accountNumber: null,\n firstName: null,\n lastName: null,\n city: vm.form.city || null,\n state: vm.form.state || null,\n zipCode: vm.form.zipCode || null,\n orgName: null,\n houseNo: vm.form.houseNo || null,\n street: vm.form.street || null,\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\n telephone: null\n };\n }\n return data;\n }\n function updatePhoneNumberFormData() {\n var data = {};\n if (vm.showAdvancedFormInputs) {\n data = {\n accountNumber: vm.form.advPhoneNumber.accountNumber,\n firstName: vm.form.advPhoneNumber.firstName,\n lastName: vm.form.advPhoneNumber.lastName,\n city: vm.form.advPhoneNumber.city || null,\n state: vm.form.advPhoneNumber.state || null,\n zipCode: vm.form.advPhoneNumber.zipCode || null,\n orgName: null,\n houseNo: vm.form.advPhoneNumber.houseNo || null,\n street: vm.form.advPhoneNumber.street || null,\n unit: vm.form.advPhoneNumber.floor ? vm.form.advPhoneNumber.floor.toUpperCase() : null,\n telephone: vm.form.telephoneNo\n };\n } else {\n data = {\n accountNumber: null,\n firstName: null,\n lastName: null,\n city: null,\n state: null,\n zipCode: null,\n orgName: null,\n houseNo: null,\n street: null,\n unit: null,\n telephone: vm.form.telephoneNo\n };\n }\n return data;\n }\n function updateAccountNumberFormData() {\n var data = {};\n data = {\n accountNumber: vm.form.accountNumber,\n firstName: null,\n lastName: null,\n city: null,\n state: null,\n zipCode: null,\n orgName: null,\n houseNo: null,\n street: null,\n unit: null,\n telephone: null\n };\n return data;\n }\n function updateBusinessFormData() {\n var data = {};\n if (vm.showAdvancedFormInputs) {\n data = {\n accountNumber: vm.form.advBusiness.accountNo,\n firstName: null,\n lastName: null,\n city: vm.form.businessCity || null,\n state: vm.form.businessState || null,\n zipCode: vm.form.businessZip || null,\n orgName: vm.form.businessName,\n houseNo: vm.form.advBusiness.houseNo || null,\n street: vm.form.advBusiness.streetAddress || null,\n unit: vm.form.advBusiness.floor ? vm.form.advBusiness.floor.toUpperCase() : null,\n telephone: vm.form.advBusiness.phoneNo\n };\n } else {\n data = {\n accountNumber: null,\n firstName: null,\n lastName: null,\n city: vm.form.businessCity,\n state: vm.form.businessState,\n zipCode: vm.form.businessZip,\n orgName: vm.form.businessName,\n houseNo: null,\n street: null,\n unit: null,\n telephone: null\n };\n }\n return data;\n }\n function updatePremiseFormData() {\n return {\n accountNumber: null,\n firstName: null,\n lastName: null,\n city: null,\n state: null,\n zipCode: null,\n orgName: null,\n houseNo: null,\n street: null,\n unit: null,\n telephone: null,\n premiseID: vm.form.premiseID\n };\n }\n function submitForm() {\n vm.noDataFound = false;\n vm.serviceDown = false;\n $scope.$emit('loadingSpinner', true);\n sendVirtualPagePushSubmit();\n vm.showResults = false;\n var data = {};\n var tabName = '';\n if (isSet(customerTabId)) {\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\n vm.isNotBusinessTab = true;\n data = updateCustomerFormData();\n } else if (isSet(streetTabId)) {\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\n vm.isNotBusinessTab = true;\n data = updateStreetFormData();\n } else if (isSet(phoneNumberTabId)) {\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\n vm.isNotBusinessTab = true;\n data = updatePhoneNumberFormData();\n } else if (isSet(accountNumberTabId)) {\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\n vm.isNotBusinessTab = true;\n data = updateAccountNumberFormData();\n } else if (isSet(businessTabId)) {\n vm.isNotBusinessTab = false;\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\n data = updateBusinessFormData();\n } else if (isSet(premiseTabId)) {\n vm.isNotBusinessTab = true;\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\n data = updatePremiseFormData();\n }\n attributePush(\"workFlow:\".concat($('#tpst-customer-gat').attr('businessFunction')), \"buttonText:\".concat($('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText), \"headline:\".concat($('#tpst-customer-gat').attr('headLine')), \"subheadline: \".concat(tabName));\n getThirdPartySearchCustomer(data, tabName).then(function () {\n $scope.$emit('loadingSpinner', false);\n sendVirtualPagePushResult();\n if (!vm.noDataFound && !vm.serviceDown) {\n vm.showResults = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setStateField() {\n if (vm.form.state !== '') {\n vm.selectStatesList = genericHelperService.setSelectedProp(vm.selectStatesList, _kwValue, vm.form.state);\n vm.submitBtnDisabled = false;\n }\n if (vm.form.advPhoneNumber.state !== '') {\n vm.selectStatesList = genericHelperService.setSelectedProp(vm.selectStatesList, _kwValue, vm.form.advPhoneNumber.state);\n vm.submitBtnDisabled = false;\n }\n if (vm.form.customerState !== '') {\n vm.selectStatesList = genericHelperService.setSelectedProp(vm.selectStatesList, _kwValue, vm.form.customerState);\n vm.submitBtnDisabled = false;\n }\n if (vm.form.businessState !== '') {\n vm.selectStatesList = genericHelperService.setSelectedProp(vm.selectStatesList, _kwValue, vm.form.businessState);\n vm.submitBtnDisabled = false;\n }\n }\n function setTab(tabId) {\n $scope.$emit('loadingSpinner', true);\n vm.tab = tabId;\n var goToPage = '';\n var tabName = '';\n switch (tabId) {\n case 1:\n goToPage = 'customerName';\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\n break;\n case 2:\n goToPage = 'address';\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\n break;\n case 3:\n goToPage = 'telephoneNumber';\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\n break;\n case 4:\n goToPage = 'accountNumber';\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\n break;\n case 5:\n goToPage = 'businessName';\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\n break;\n case 6:\n goToPage = 'premiseID';\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\n break;\n default:\n goToPage = 'home';\n }\n attributePush(\"workFlow:\".concat($('#tpst-customer-gat').attr('businessFunction')), 'buttonText:tab', \"addedSpec: \".concat(tabName), \"headline:\".concat($('#tpst-customer-gat').attr('headLine')), 'subheadline: tab navigation');\n // clearForm();\n $scope.$emit('nextStep', goToPage);\n $scope.$emit('loadingSpinner', false);\n }\n function load() {\n vm.selectStatesList = [{\n value: 'FL',\n text: 'Florida'\n }, {\n value: 'IN',\n text: 'Indiana'\n }, {\n value: 'KY',\n text: 'Kentucky'\n }, {\n value: 'NC',\n text: 'North Carolina'\n }, {\n value: 'OH',\n text: 'Ohio'\n }, {\n value: 'SC',\n text: 'South Carolina'\n }];\n if ($rootScope.enableBacktoPrevBtn) {\n vm.enableBackToPrevButton = true;\n } else {\n vm.enableBackToPrevButton = false;\n }\n var formData = sessionStorageService.get(assetService.storageKeys.tpstSearchCriteria);\n var tabNumber = sessionStorageService.get(assetService.storageKeys.selectedTab);\n var showAdvanced = sessionStorageService.get(assetService.storageKeys.showAdvancedFields);\n if (formData) {\n vm.form = formData;\n setStateField();\n }\n if (tabNumber) {\n if (showAdvanced) {\n vm.showAdvancedFormInputs = showAdvanced;\n }\n setTab(tabNumber);\n submitForm();\n } else {\n $scope.$emit('nextStep', 'accountNumber');\n // only generate this VPV first time coming to TPST and not from details page.\n $timeout(function () {\n virtualPagePush($('#tpst-customer-gat').attr('businessFunction'), $('#tpst-customer-gat').attr('headLine'), $('#tpst-customer-gat').attr('subHeadLine'), getTabNameFromTabId(vm.tab));\n }, 0);\n }\n $scope.$emit('loadingSpinner', false);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n function concatTab() {\n var pageToPush = [$('#tpst-customer-gat').attr('businessFunction'), $('#tpst-customer-gat').attr('headLine')];\n var tabName = getTabNameFromTabId(vm.tab);\n pageToPush.push(tabName);\n return pageToPush;\n }\n function virtualPagePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function sendVirtualPagePushSubmit() {\n var pageToPush = concatTab();\n pageToPush.push($('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText);\n virtualPagePush.apply(void 0, _toConsumableArray(pageToPush));\n }\n function sendVirtualPagePushDetails() {\n var pageToPush = concatTab();\n pageToPush.push($('#tpst-customersearchresults-gat').attr('detailsButtonLabel'));\n virtualPagePush.apply(void 0, _toConsumableArray(pageToPush));\n }\n function sendVirtualPagePushResult() {\n var pageToPush = concatTab();\n if (vm.searchResults && vm.searchResults.length > 0) {\n pageToPush.push('success');\n } else {\n pageToPush.push($('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText, 'error', 'not set');\n }\n virtualPagePush.apply(void 0, _toConsumableArray(pageToPush));\n }\n\n /* --------------Function Declarations-----------------------*/\n vm.cancel = cancel;\n vm.clearForm = clearForm;\n vm.exportCSV = exportCSV;\n vm.isSet = isSet;\n vm.submitForm = submitForm;\n vm.setTab = setTab;\n vm.sortByColumn = sortByColumn;\n vm.activateDetails = activateDetails;\n vm.capitalizeName = capitalizeName;\n vm.validateSearchCriteria = validateSearchCriteria;\n vm.onClickAdvancedSearch = onClickAdvancedSearch;\n vm.attributePush = attributePush;\n vm.sendVirtualPagePushSubmit = sendVirtualPagePushSubmit;\n vm.sendVirtualPagePushResult = sendVirtualPagePushResult;\n vm.sendVirtualPagePushDetails = sendVirtualPagePushDetails;\n vm.virtualPagePush = virtualPagePush;\n vm.updateCustomerFormData = updateCustomerFormData;\n vm.updateStreetFormData = updateStreetFormData;\n vm.updatePhoneNumberFormData = updatePhoneNumberFormData;\n vm.updateAccountNumberFormData = updateAccountNumberFormData;\n vm.updateBusinessFormData = updateBusinessFormData;\n}\napp.controller('PropertySearchController', PropertySearchController);\nPropertySearchController.$inject = ['$log', 'assetService', 'commonService', 'sessionStorageService', '$scope', 'thirdPartySearchProperty', '$rootScope', 'TPSCSVService', 'dataModelsDTOProductsAndServices', 'commongaTaggingService', 'genericHelperService', 'apiConfigService', 'componentStateHandler'];\nfunction PropertySearchController($log, assetService, commonService, sessionStorageService, $scope, thirdPartySearchProperty, $rootScope, csvExportService, dataModelsDTOProductsAndServices, commongaTaggingService, genericHelperService, apiConfigService, componentStateHandler) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var fileName = 'PropertySearchResults';\n var pageCase = 'property';\n var noDataFoundErrorMessage = 'Sorry! We are unable to find any results. Please try again.';\n var _kwValue = assetService.strings.VALUE;\n var MAX_RECORDS = 999;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.message = null;\n vm.orderBy = 'Name';\n vm.orderPos = 0;\n vm.sortAsc = true;\n vm.tab = 1;\n vm.noDataFound = false;\n vm.showResults = false;\n vm.disableAdvancedSearch = false;\n vm.submitBtnDisabled = true;\n vm.enableBackToPrevButton = false;\n vm.isMaxResults = false;\n vm.form = {\n address: null,\n houseNo: null,\n street: null,\n unit: null,\n city: null,\n state: null,\n zipCode: null\n };\n vm.searchPageItems = [{\n value: 10,\n text: 10\n }, {\n value: 25,\n text: 25\n }, {\n value: 50,\n text: 50\n }, {\n value: 100,\n text: 100\n }, {\n value: 1000,\n text: 1000\n }];\n vm.minusTableHeaders = [{\n column: 'customerBillingName',\n sortAsc: true\n }, {\n column: 'customerLastName',\n sortAsc: true\n }, {\n column: 'customerFirstName',\n sortAsc: true\n }, {\n column: 'streetAddress1',\n sortAsc: true\n }, {\n column: 'streetAddress2',\n sortAsc: true\n }, {\n column: 'city',\n sortAsc: true\n }, {\n column: 'state',\n sortAsc: true\n }, {\n column: 'zipCode',\n sortAsc: true\n }, {\n column: 'accountNumber',\n sortAsc: true\n }, {\n column: 'accountStatus',\n sortAsc: true\n }];\n\n /* --------------Function Declarations-----------------------*/\n vm.cancel = cancel;\n vm.isSet = isSet;\n vm.clearForm = clearForm;\n vm.exportCSV = exportCSV;\n vm.submitForm = submitFormNoParse;\n vm.setTab = setTab;\n vm.sortByColumn = sortByColumn;\n vm.activateDetails = activateDetails;\n vm.capitalizeName = capitalizeName;\n vm.attributePush = attributePush;\n vm.virtualPagePush = virtualPagePush;\n vm.validateSearchCriteria = validateSearchCriteria;\n vm.sendVirtualPagePushResult = sendVirtualPagePushResult;\n vm.printData = printData;\n\n /* --------------Function Definitions-----------------------*/\n function activateDetails(item) {\n attributePush(\"workFlow:\".concat($('#tpst-property-gat').attr('businessfunction')), \"headline:\".concat($('#tpst-property-gat').attr('headline')), \"buttonText:\".concat($('#tpst-propertysearchresults-gat').attr('detailsbuttonlabel')));\n virtualPagePush($('#tpst-property-gat').attr('businessfunction'), $('#tpst-property-gat').attr('headline'), $('#tpst-propertysearchresults-gat').attr('detailsbuttonlabel'));\n $rootScope.searchType = 2;\n $scope.$emit('nextStep', \"viewDetails?AccountNumber=\".concat(item.redirectAccountNumber));\n }\n function cancel() {\n clearForm();\n $scope.$emit('nextStep', 'home');\n }\n function clearSessions() {\n // eslint-disable-next-line no-underscore-dangle\n sessionStorageService.delete(assetService.storageKeys.tpstSearchCriteria);\n }\n function clearForm() {\n if (vm.addressSearchForm) {\n vm.addressSearchForm.$setPristine();\n vm.addressSearchForm.$setUntouched();\n }\n vm.searchResults = [];\n vm.showResults = false;\n vm.noDataFound = false;\n vm.form = {\n address: null,\n houseNo: null,\n street: null,\n unit: null,\n city: null,\n state: null,\n zipCode: null\n };\n vm.submitBtnDisabled = true;\n clearSessions();\n }\n function exportCSV() {\n attributePush(\"workFlow:\".concat($('#tpst-property-gat').attr('businessfunction')), \"headline:\".concat($('#tpst-property-gat').attr('headline')), \"buttonText:\".concat($('#tpst-propertysearchresults-gat').attr('exportlabel')));\n csvExportService.exportToCSV(pageCase, vm.searchResults, fileName);\n }\n function capitalizeName(name) {\n return dataModelsDTOProductsAndServices.transformName(name);\n }\n function sortByColumn(value) {\n vm.orderBy = vm.minusTableHeaders[value].column;\n vm.orderPos = value;\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\n }\n function validateSearchCriteria() {\n if (vm.form.street && vm.form.city && vm.form.state) {\n vm.submitBtnDisabled = false;\n } else if (vm.form.street && vm.form.zipCode) {\n vm.submitBtnDisabled = false;\n } else {\n vm.submitBtnDisabled = true;\n }\n }\n function virtualPagePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.virtualPagePush(arrayElements);\n }\n function attributePush() {\n for (var _len2 = arguments.length, theArguments = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n theArguments[_key2] = arguments[_key2];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n function setFormSessions(formData) {\n sessionStorageService.set(assetService.storageKeys.tpstSearchCriteria, formData);\n }\n function getThirdPartySearchProperty(data) {\n vm.searchResults = [];\n return thirdPartySearchProperty.sitecore.propertySearch(data).then(function (result) {\n if (!result) {\n componentStateHandler.failedState(vm);\n } else if (result.MessageList.ReplyCode === 'ERROR') {\n vm.noDataFound = true;\n attributePush(\"workFlow:error \".concat($('#tpst-property-gat').attr('businessFunction')), 'returnCode:not set', \"endpoint:\".concat(apiConfigService.post.thirdPartySearchProperty()), \"msgHeader:\".concat(noDataFoundErrorMessage), \"headline:\".concat($('#tpst-property-gat').attr('headLine')));\n vm.message = noDataFoundErrorMessage;\n $scope.$emit('loadingSpinner', false);\n } else {\n vm.noDataFound = false;\n $scope.rowLimit = 10;\n vm.startingRecord = 1;\n vm.endingRecord = $scope.rowLimit;\n vm.currentPage = 0;\n vm.isMaxResults = result.MessageList.IsMoreData && result.Records.length === MAX_RECORDS;\n setFormSessions(vm.form);\n vm.searchResults = _.map(result.Records, function (record) {\n var isNonReg = record.SrcSysCode === 'NR';\n var isMidWest = record.PremiseState === 'IN' || record.PremiseState === 'OH' || record.PremiseState === 'KY';\n return {\n customerBillingName: record.CustomerName.trim() ? record.CustomerName.trim() : record.OrgName,\n customerLastName: record.BP_Last_Name,\n customerFirstName: record.BP_First_Name,\n streetAddress1: \"\".concat(record.PremiseHouseNum, \" \").concat(record.PremiseStreet),\n streetAddress2: record.PremiseUnit,\n city: record.PremiseCity,\n state: record.PremiseState,\n zipCode: record.PremiseZipCode,\n accountNumber: isNonReg && isMidWest ? '' : record.AccountNumber,\n accountStatus: record.Status,\n redirectAccountNumber: record.AccountNumber\n };\n });\n }\n sendVirtualPagePushResult();\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function printData() {\n attributePush(\"workFlow:\".concat($('#tpst-property-gat').attr('businessfunction')), \"headline:\".concat($('#tpst-property-gat').attr('headline')), \"buttonText:\".concat($('#tpst-propertysearchresults-gat').attr('printlabel')));\n window.print();\n }\n function fnChangeRowLimit(rowLimit) {\n $scope.rowLimit = rowLimit.value;\n vm.currentPage = 0;\n vm.endingRecord = $scope.rowLimit;\n vm.startingRecord = 1;\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\n }\n vm.fnChangeRowLimit = fnChangeRowLimit;\n function fnPreviousRecordsShow() {\n vm.currentPage -= 1;\n vm.startingRecord -= $scope.rowLimit;\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\n }\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\n function fnNextRecordsShow() {\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\n vm.currentPage += 1;\n vm.endingRecord = vm.currentPage + 1 === vm.totalPages ? vm.searchResults.length : vm.startingRecord + $scope.rowLimit - 1;\n }\n vm.NextRecordsShow = fnNextRecordsShow;\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function submitFormNoParse() {\n vm.showResults = false;\n $scope.$emit('loadingSpinner', true);\n vm.noDataFound = false;\n var data = {\n houseNo: vm.form.houseNo,\n street: vm.form.street || null,\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\n city: vm.form.city || null,\n zipCode: vm.form.zipCode || null,\n state: vm.form.state || null\n };\n getThirdPartySearchProperty(data).then(function (result) {\n $scope.$emit('loadingSpinner', false);\n if (!vm.noDataFound) {\n vm.showResults = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function submitForm() {\n vm.showResults = false;\n $scope.$emit('loadingSpinner', true);\n vm.noDataFound = false;\n var parsed = null;\n var addr = '';\n if (vm.form.street) {\n addr += vm.form.street;\n }\n if (vm.form.floor) {\n addr += \" \".concat(vm.form.floor);\n }\n addr += ',';\n if (vm.form.city) {\n addr += \" \".concat(vm.form.city);\n }\n if (vm.form.state) {\n addr += \" \".concat(vm.form.state);\n }\n if (vm.form.zipCode) {\n addr += \" \".concat(vm.form.zipCode);\n }\n parsed = parseAddress.parseLocation(addr);\n var unit = null;\n if (parsed.sec_unit_type) {\n unit = \"\".concat(parsed.sec_unit_type, \" \").concat(parsed.sec_unit_num);\n }\n var street = null;\n if (parsed.prefix && parsed.type) {\n street = \"\".concat(parsed.prefix, \" \").concat(parsed.street, \" \").concat(parsed.type);\n } else if (parsed.prefix && !parsed.type) {\n street = \"\".concat(parsed.prefix, \" \").concat(parsed.street);\n } else if (!parsed.prefix && parsed.type) {\n street = \"\".concat(parsed.street, \" \").concat(parsed.type);\n } else {\n street = parsed.street;\n }\n var data = {\n houseNo: parsed.number,\n street: street || null,\n unit: unit ? unit.toUpperCase() : null,\n city: parsed.city || vm.form.city,\n state: parsed.state || vm.form.state,\n zipCode: parsed.zip || vm.form.zipCode\n };\n getThirdPartySearchProperty(data).then(function (result) {\n $scope.$emit('loadingSpinner', false);\n if (!vm.noDataFound) {\n vm.showResults = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setStateField() {\n if (vm.form.state !== '') {\n vm.selectStatesList = genericHelperService.setSelectedProp(vm.selectStatesList, _kwValue, vm.form.state);\n vm.submitBtnDisabled = false;\n }\n }\n function setTab(tabId) {\n vm.tab = tabId;\n }\n function load() {\n if ($rootScope.enableBacktoPrevBtn) {\n vm.enableBackToPrevButton = true;\n } else {\n vm.enableBackToPrevButton = false;\n }\n var formData = sessionStorageService.get(assetService.storageKeys.tpstSearchCriteria);\n if (formData) {\n vm.form = formData;\n setStateField();\n // submitForm();\n submitFormNoParse();\n }\n $scope.$emit('loadingSpinner', false);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.selectStatesList = [{\n value: 'FL',\n text: 'Florida'\n }, {\n value: 'IN',\n text: 'Indiana'\n }, {\n value: 'KY',\n text: 'Kentucky'\n }, {\n value: 'NC',\n text: 'North Carolina'\n }, {\n value: 'OH',\n text: 'Ohio'\n }, {\n value: 'SC',\n text: 'South Carolina'\n }];\n load();\n };\n init();\n function sendVirtualPagePushResult() {\n var pageToPush = [$('#tpst-property-gat').attr('businessFunction'), $('#tpst-property-gat').attr('headLine')];\n if (!vm.noDataFound) {\n pageToPush.push('success');\n } else {\n pageToPush.push($('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText, 'error', 'not set');\n }\n virtualPagePush.apply(void 0, pageToPush);\n }\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n/* eslint-disable no-magic-numbers */\napp.controller('ThirdPartySearchViewDetailsController', ThirdPartySearchViewDetailsController);\nThirdPartySearchViewDetailsController.$inject = ['$log', '$scope', 'assetService', 'thirdPartySearchDetails', '$state', '$stateParams', '$rootScope', 'commongaTaggingService'];\nfunction ThirdPartySearchViewDetailsController($log, $scope, assetService, thirdPartySearchDetails, $state, $stateParams, $rootScope, commongaTaggingService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.details = {\n customer: {},\n account: {},\n premise: {},\n meter: [],\n serviceAgreement: [],\n usage: {},\n eepp: {}\n };\n vm.isLoaded = false;\n vm.pageName = '';\n vm.showDetails = [];\n vm.noData = false;\n var GAS = 'gas';\n /** Watchers */\n\n /**\r\n * Function Definitions\r\n */\n\n function onClickBackToResults() {\n if (vm.tab === 1) {\n $scope.$emit('nextStep', 'customerSearch');\n } else {\n $scope.$emit('nextStep', 'propertySearch');\n }\n }\n function checkNullFields(data) {\n var valueArray = Object.values(data);\n var hideDetails = true;\n for (var index = 0; index < valueArray.length; index += 1) {\n if (valueArray[index]) {\n hideDetails = false;\n break;\n }\n }\n return hideDetails;\n }\n function addSpaceBetweenWord(word) {\n // inp => AccountZIP\n // out => Account ZIP\n var answer = '';\n var curLetter = '';\n var prevLetter = '';\n var startFromSecondLetter = 1;\n for (var index = startFromSecondLetter; index < word.length; index += 1) {\n prevLetter = word[index - startFromSecondLetter];\n curLetter = word[index];\n // if previous letter is lowercase and next letter is upper case then add a space\n if (prevLetter === prevLetter.toLowerCase() && curLetter === curLetter.toUpperCase()) {\n answer += ' ';\n }\n answer += curLetter;\n }\n return word[0] + answer;\n }\n function getCustomerDetails(result) {\n return {\n Name: result.CustomerName,\n NamePrefix: result.NamePrefix,\n FirstName: result.FirstName,\n MiddleName: result.MiddleName,\n LastName: result.LastName,\n DoingBusinessAs: result.DoingBusinessAs,\n AreaCode: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].AreaCode : null,\n PhoneNumber: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].TelephoneNumber : null,\n PhoneType: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].TelephoneTypeCode : null,\n // GlobalOptOutIndicator: (result.ContractAccountPreferenceArray.results.length > 0 ? result.ContractAccountPreferenceArray.results[0].OptOutType : null),\n SourceSystemCode: result.SrcSysCd,\n BusinessPartnerID: result.BPID,\n GenerationID: result.GenID\n };\n }\n function getAccountDetails(result) {\n return {\n AccountNumber: result.AccountNumber,\n AccountHUBID: result.AccountHUBID,\n StatusDescription: result.AccountStatusDescription,\n StatusCode: result.AccountStatusCode,\n StatusEffectiveDate: result.AccountStatusEffectiveDate,\n ActiveDate: result.ActiveDate,\n SourceSystemCode: result.SrcSysCd,\n AccountType: result.AccountType,\n AccountAddressLine1: result.AccountAddressLine1,\n AccountAddressLine2: result.AccountAddressLine2,\n AccountAddressLine3: result.AccountAddressLine3,\n AccountAddressLine4: result.AccountAddressLine4,\n AccountCity: result.AccountCity,\n AccountState: result.AccountState,\n AccountZIP: result.AccountZipCode,\n Country: result.Country,\n PreferredLanguage: result.PreferredLanguage,\n UniversalMarketingConsent: result.UniversalMarketingConsent,\n UniversalMarketingConsentVersion: result.UMCVersion,\n PowerManager: result.PowerManager,\n CurrentYearPowerManagerIncentiveAccount: result.CurrYrPwrMgtIncvAmt\n };\n }\n function getPremiseDetails(result) {\n return {\n SourcePremiseID: result.SrcPremiseId,\n PremiseAddressLine1: result.PremiseAddressLine1,\n PremiseAddressLine2: result.PremiseAddressLine2,\n PremiseAddressLine3: result.PremiseAddressLine3,\n PremiseAddressLine4: result.PremiseAddressLine4,\n PremiseCity: result.PremiseCity,\n PremiseState: result.PremiseState,\n PremiseZIPCode: result.PremiseZipCode,\n EffectiveDate: result.EffectiveDate,\n TaxCounty: result.TaxCounty,\n Jurisdiction: result.Jurisdiction,\n RenterIndicator: result.RenterIndicator,\n LandlordName: result.LandlordName,\n PremiseType: result.PremiseType,\n TelephoneTypeCode: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].TelephoneTypeCode : null,\n AreaCode: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].AreaCode : null,\n TelephoneNumber: result.TelephoneArray && result.TelephoneArray.results && result.TelephoneArray.results.length > 0 ? result.TelephoneArray.results[0].TelephoneNumber : null\n };\n }\n function getServiceAgreementDetails(result) {\n vm.details.serviceAgreement.push({\n SourceServicePointID: result.SrcServicePointID,\n TypeCode: result.TypeCode,\n TypeDescription: result.TypeDescription,\n StatusCode: result.StatusCode,\n StatusDescription: result.StatusDescription,\n StatusEffectiveDate: result.StatusEffectiveDate,\n ActiveDate: result.ActiveDate,\n EndDate: result.EndDate,\n PriceName: result.PriceName,\n PriceScheduleName: result.PriceScheduleName,\n PriceEffectiveDate: result.PriceEffectiveDate,\n RateScheduleCode: result.RateScheduleCode\n });\n }\n function getMeterDetails(result) {\n if (!result.MeterArray || !result.MeterArray.results) return;\n for (var index = 0; index < result.MeterArray.results.length; index += 1) {\n var meterObject = result.MeterArray.results[index];\n vm.details.meter.push({\n SourceMeterId: meterObject.SrcMtrId,\n SerialNumber: meterObject.SerialNumber,\n ManufacturerTypeCode: meterObject.ManufacturerTypeCode,\n ManufacturerTypeName: meterObject.ManufacturerName,\n MeterStatus: meterObject.MeterStatus,\n SurgeInstalled: meterObject.SurgeInstalled\n });\n }\n }\n function getUsageDetails(result) {\n var _result$ServicePointA;\n if (!result.ServicePointArray || !result.ServicePointArray.results) return null;\n var electricUsages = [];\n var gasUsages = [];\n (_result$ServicePointA = result.ServicePointArray) === null || _result$ServicePointA === void 0 || (_result$ServicePointA = _result$ServicePointA.results) === null || _result$ServicePointA === void 0 || _result$ServicePointA.forEach(function (service) {\n if (service.MeterArray && service.MeterArray.results) {\n var _service$MeterArray;\n (_service$MeterArray = service.MeterArray) === null || _service$MeterArray === void 0 || (_service$MeterArray = _service$MeterArray.results) === null || _service$MeterArray === void 0 || _service$MeterArray.forEach(function (meter) {\n if (meter.UsageArray && meter.UsageArray.results) {\n var _service$TypeDescript;\n if ((_service$TypeDescript = service.TypeDescription) !== null && _service$TypeDescript !== void 0 && _service$TypeDescript.toLowerCase().includes(GAS)) {\n gasUsages.push.apply(gasUsages, _toConsumableArray(meter.UsageArray.results));\n } else {\n electricUsages.push.apply(electricUsages, _toConsumableArray(meter.UsageArray.results));\n }\n }\n });\n }\n });\n electricUsages.sort(function (a, b) {\n return (a.TransactionDate ? new Date(a.TransactionDate) : new Date()) - (b.TransactionDate ? new Date(b.TransactionDate) : new Date());\n });\n gasUsages.sort(function (a, b) {\n return (a.TransactionDate ? new Date(a.TransactionDate) : new Date()) - (b.TransactionDate ? new Date(b.TransactionDate) : new Date());\n });\n return [].concat(electricUsages, gasUsages);\n }\n function getEeppDetails(result) {\n var _result$EEParticipati;\n if (!result.EEParticipationArray || !result.EEParticipationArray.results) return null;\n var nonDateProducts = [];\n var listProducts = [];\n (_result$EEParticipati = result.EEParticipationArray) === null || _result$EEParticipati === void 0 || (_result$EEParticipati = _result$EEParticipati.results) === null || _result$EEParticipati === void 0 || _result$EEParticipati.forEach(function (product) {\n if (product.ProductEnrollmentStartDate) {\n listProducts.push({\n ProductEnrollmentStartDate: product.ProductEnrollmentStartDate,\n ProgramCancelDate: product.ProductCancelDate,\n ProgramMeasureID: product.ProgMeasId,\n ProgramMeasureName: product.MeasNm,\n PoductCode: product.ProductCode,\n ProductDescription: product.ProductsDescription,\n EnrollmentStatus: product.EnrollmentStatus,\n Quantity: product.Qty\n });\n } else {\n nonDateProducts.push({\n ProductEnrollmentStartDate: product.ProductEnrollmentStartDate,\n ProgramCancelDate: product.ProductCancelDate,\n ProgramMeasureID: product.ProgMeasId,\n ProgramMeasureName: product.MeasNm,\n PoductCode: product.ProductCode,\n ProductDescription: product.ProductsDescription,\n EnrollmentStatus: product.EnrollmentStatus,\n Quantity: product.Qty\n });\n }\n });\n listProducts.sort(function (a, b) {\n return new Date(b.ProductEnrollmentStartDate) - new Date(a.ProductEnrollmentStartDate);\n });\n listProducts.push.apply(listProducts, nonDateProducts);\n return listProducts;\n }\n function getThirdPartySearchDetails(data) {\n vm.hideAcctDetails = true;\n vm.hideCustDetails = true;\n vm.hidepremiseDetails = true;\n vm.hideserviceAgreementDetails = true;\n vm.hidemeterDetails = true;\n vm.hideusageDetails = true;\n vm.hideeeppDetails = true;\n return thirdPartySearchDetails.sitecore.thirdPartySearchDetails(data).then(function (result) {\n if (result !== '') {\n _.forEach(result.results, function (result) {\n vm.details.customer = getCustomerDetails(result);\n vm.hideCustDetails = checkNullFields(vm.details.customer);\n vm.details.account = getAccountDetails(result);\n vm.hideAcctDetails = checkNullFields(vm.details.account);\n vm.details.premise = getPremiseDetails(result);\n vm.hidepremiseDetails = checkNullFields(vm.details.premise);\n vm.details.transformer = {\n Longitude: result.Longitude,\n Latitude: result.Latitude\n };\n\n // single loop for both service agreement and meter details\n if (result.ServicePointArray && result.ServicePointArray.results) {\n for (var index = 0; index < result.ServicePointArray.results.length; index += 1) {\n getServiceAgreementDetails(result.ServicePointArray.results[index]);\n getMeterDetails(result.ServicePointArray.results[index]);\n }\n }\n if (vm.details.serviceAgreement) {\n for (var _index = 0; _index < vm.details.serviceAgreement.length; _index += 1) {\n if (!checkNullFields(vm.details.serviceAgreement[_index])) {\n vm.hideserviceAgreementDetails = false;\n break;\n }\n }\n }\n if (vm.details.meter) {\n for (var _index2 = 0; _index2 < vm.details.meter.length; _index2 += 1) {\n if (!checkNullFields(vm.details.meter[_index2])) {\n vm.hidemeterDetails = false;\n break;\n }\n }\n }\n vm.details.usage = getUsageDetails(result);\n if (vm.details.usage) {\n for (var _index3 = 0; _index3 < vm.details.usage.length; _index3 += 1) {\n if (!checkNullFields(vm.details.usage[_index3])) {\n vm.hideusageDetails = false;\n break;\n }\n }\n }\n vm.details.eepp = getEeppDetails(result);\n if (vm.details.eepp) {\n for (var _index4 = 0; _index4 < vm.details.eepp.length; _index4 += 1) {\n if (!checkNullFields(vm.details.eepp[_index4])) {\n vm.hideeeppDetails = false;\n break;\n }\n }\n }\n });\n }\n if (vm.hideCustDetails && vm.hideAcctDetails && vm.hidepremiseDetails && vm.hideserviceAgreementDetails && vm.hidemeterDetails && vm.hideusageDetails && vm.hideeeppDetails) {\n vm.noData = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function load() {\n vm.isLoaded = false;\n $scope.$emit('loadingSpinner', true);\n vm.tab = $rootScope.searchType;\n vm.pageName = vm.tab !== 1 ? 'Property' : 'Customer';\n var accountNumber = $stateParams.accountNumber;\n getThirdPartySearchDetails({\n accountNumber: accountNumber\n }).then(function () {\n vm.isLoaded = true;\n $scope.$emit('loadingSpinner', false);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function attributePush() {\n for (var _len = arguments.length, theArguments = new Array(_len), _key = 0; _key < _len; _key++) {\n theArguments[_key] = arguments[_key];\n }\n var arrayElements = theArguments;\n commongaTaggingService.attributePush(arrayElements);\n }\n var expand = function expand(data, event) {\n if (!angular.element(event.currentTarget.parentElement).hasClass('active')) {\n var search = vm.tab !== 1 ? $('#tpst-viewdetails-gat').attr('propertyHeadline') : $('#tpst-viewdetails-gat').attr('customerHeadline');\n if (data === 'firstTab') {\n data = vm.tab !== 1 ? $('#tpst-viewdetails-gat').attr('propertyDetailsLabel') : $('#tpst-viewdetails-gat').attr('customerDetailsLabel');\n }\n attributePush(\"workFlow:\".concat($('#tpst-viewdetails-gat').attr('businessFunction')), 'buttonText:expand', \"headline: \".concat(search), \"addedSpec: \".concat(data));\n }\n };\n function sendVirtualPagePushDetailsExpansion(eventAction) {\n var eventCategory = 'third_party_search';\n var fireEvent = 'fire-event';\n var eventLabel = vm.tab !== 1 ? 'property-search' : 'customer-search';\n $rootScope.attributePush(eventCategory, eventAction, eventLabel, fireEvent);\n }\n\n /**\r\n * Function Declarations\r\n */\n vm.sendVirtualPagePushDetailsExpansion = sendVirtualPagePushDetailsExpansion;\n vm.onClickBackToResults = onClickBackToResults;\n vm.attributePush = attributePush;\n vm.expand = expand;\n vm.addSpaceBetweenWord = addSpaceBetweenWord;\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-use-before-define */\n/* eslint-disable max-len */\napp.factory('TPSCSVService', function () {\n var vm = this;\n var formattedData = {};\n function exportToCSV(pageCase, newData, fileName) {\n /* (NewCaseToMap, Array, FileNAme) */\n switch (pageCase) {\n case 'customer':\n formattedData = _.map(newData, function (record) {\n return {\n Name: record.name,\n 'Street Address': record.streetAddress,\n City: record.city,\n State: record.state,\n 'Zip Code': record.zipCode,\n Telephone: record.telephoneNo,\n 'Account Number': record.accountNumber\n };\n });\n saveAsCSV(formattedData, fileName);\n break;\n case 'property':\n formattedData = _.map(newData, function (record) {\n return {\n 'Billing Name': record.customerBillingName,\n 'First Name': record.customerFirstName,\n 'Last Name': record.customerLastName,\n 'Street Address1': record.streetAddress1,\n 'Street Address2': record.streetAddress2,\n City: record.city,\n State: record.state,\n 'Zip Code': record.zipCode,\n 'Account Number': record.accountNumber,\n 'Account Status': record.accountStatus\n };\n });\n saveAsCSV(formattedData, fileName);\n break;\n default:\n break;\n }\n }\n function saveAsCSV(dataFormatted, fileName) {\n var csvFile = Papa.unparse(dataFormatted, {\n header: true\n });\n var blob = new Blob([csvFile], {\n type: 'text/plain;charset=utf-8'\n });\n saveAs(blob, \"\".concat(fileName, \".csv\"));\n }\n return {\n exportToCSV: exportToCSV\n };\n});\napp.controller('FormToPay', FormToPay);\nFormToPay.$inject = ['sessionStorageService', 'assetService', '$state', '$scope', '$sce', '$rootScope', '$filter', 'manageBankAccountsForPrepaidService'];\nfunction FormToPay(sessionStorageService, assetService, $state, $scope, $sce, $rootScope, $filter, manageBankAccountsForPrepaidService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n $rootScope.apiValidation = false;\n var _bankAccountRemoveResponse;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.activeAccountsDetails = false;\n vm.actualPath = 0;\n vm.actualStep = 0;\n vm.activeTab = 1;\n vm.balanceStorage = {};\n vm.accountSelected = {};\n vm.billsQuantity = 0;\n vm.submitButtonText = 'SUBMIT PAYMENT';\n var _bankAccountsOriginal = false;\n // vm.cancelPath = assetService.balanceRouteStates.BILLS;\n vm.cyclePath = [\n // {\n // path: assetService.balanceRouteStates.PAYMENT_DATE,\n // change: true,\n // pathAlt: '',\n // },\n // {\n // path: assetService.balanceRouteStates.PAYMENT_AMOUNT,\n // change: true,\n // pathAlt: '',\n // },\n // {\n // path: assetService.balanceRouteStates.PAYMENT_METHOD,\n // change: true,\n // pathAlt: '',\n // },\n {\n path: assetService.balanceRouteStates.REVIEW_PAY,\n change: true,\n pathAlt: '',\n mainBtn: vm.submitButtonText\n }];\n vm.mainBtnActivate = false;\n vm.reviewPay = true;\n vm.showHide = {\n singleAccount: false,\n isNewAmount: false\n };\n vm.multipleAccount = false;\n vm.steps = [\n // assetService.balanceStepsName.PAYMENT_DATE,\n // assetService.balanceStepsName.PAYMENT_AMOUNT,\n // assetService.balanceStepsName.PAYMENT_METHOD,\n assetService.balanceStepsName.REVIEW_PAY];\n vm.stepTitle = 'Total Amount Due';\n vm.FormValidationStatus = '';\n vm.FormErrMsg = false;\n /* --------------Function Declarations-----------------------*/\n vm.activateAccountsDetails = activateAccountsDetails;\n vm.formatTotalAmount = formatTotalAmount;\n vm.nextStep = nextStep;\n vm.onCancel = onCancel;\n\n /* --------------Function Definitions-----------------------*/\n function nextStep() {\n $scope.$broadcast(assetService.balanceEvents.SAVE_STEPS, vm.moveSteps);\n }\n function saveSteps() {\n $scope.$broadcast(assetService.balanceEvents.SAVE_STEPS, true);\n }\n function newStep(data) {\n vm.actualStep = data.step;\n vm.actualPath = data.step;\n }\n function onCancel(path) {\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n if (vm.balanceStorage.accountId && vm.balanceStorage.savePaymentInfo !== undefined && !vm.balanceStorage.savePaymentInfo) {\n var newParamData = {\n businessPartnerId: vm.accountSelected.primaryBp,\n bankDescription: '',\n accountNumber: '',\n routingNumber: '',\n accountType: '',\n requestedBy: vm.balanceStorage.currentUser.emailId,\n action: assetService.serviceActions.manageBankAccountsForPrepaid.DELETE,\n bankAccountId: vm.balanceStorage.accountId\n };\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(newParamData).then(function (result) {\n _bankAccountRemoveResponse = result.d.ManageBankAcc_NAV;\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n }, function (error) {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n });\n }\n $rootScope.$broadcast('cancelling', true);\n window.location.href = path;\n }\n function formatTotalAmount(amount) {\n var formattedAmount = [];\n if (Number.isInteger(amount)) {\n formattedAmount[0] = amount;\n formattedAmount[1] = '00';\n } else {\n formattedAmount = String(amount).split('.');\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1], \"\"));\n }\n function activateAccountsDetails() {\n if (vm.activeAccountsDetails === false) {\n vm.activeAccountsDetails = true;\n } else {\n vm.activeAccountsDetails = false;\n }\n }\n function removeNewBankAccount(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data).then(function (result) {\n _bankAccountRemoveResponse = result.d.ManageBankAcc_NAV;\n }, function (error) {\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n }\n $scope.$on(assetService.balanceEvents.SAVE_DATA, function () {\n saveSteps();\n });\n $scope.$on(assetService.balanceEvents.FORM_VALIDATION, function () {\n vm.FormValidationStatus = sessionStorageService.get(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n vm.FormErrMsg = vm.FormValidationStatus.ShowErrorForm;\n });\n $scope.$on(assetService.balanceEvents.CHANGE_STORAGE, function () {\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n if (vm.balanceStorage.newTotalAmount != vm.balanceStorage.totalAmount) {\n vm.showHide.isNewAmount = true;\n } else {\n vm.showHide.isNewAmount = false;\n }\n });\n $scope.$on(assetService.balanceEvents.SET_STEP, function (event, data) {\n newStep(data);\n });\n function load() {\n // Load sessionStorageService\n vm.conflictMessage = '';\n vm.messagePriority = '';\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n vm.accountSelected = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected;\n vm.msgCount = 0;\n vm.balanceStorage.selectedAccounts.forEach(function (element) {\n vm.conflictMessage = element.message ? \"\".concat(element.message, \" \").concat(vm.conflictMessage) : vm.conflictMessage;\n vm.messagePriority = element.messagePriority;\n if (element.messagePriority == 1000) {\n vm.msgCount += 1;\n }\n });\n vm.conflictMessage;\n\n /* if(vm.balanceStorage.selectedAccounts.length > 1) {\r\n vm.cancelPath = assetService.balanceRouteStates.BILLS;\r\n } else {\r\n vm.cancelPath = assetService.balanceRouteStates.HOW_TO_PAY;\r\n } */\n\n if (vm.balanceStorage.dateSelected !== undefined) {} else {\n vm.balanceStorage.dateSelected = {\n index: '0'\n };\n }\n if (vm.balanceStorage.newTotalAmount !== undefined) {\n if (vm.balanceStorage.newTotalAmount != vm.balanceStorage.totalAmount) {\n vm.showHide.isNewAmount = true;\n } else {\n vm.showHide.isNewAmount = false;\n }\n }\n if (vm.balanceStorage.billsQuantity < 2) {\n vm.showHide.singleAccount = true;\n } else {\n vm.showHide.singleAccount = true;\n }\n if (vm.balanceStorage.selectedAccounts.length > 1) {\n vm.multipleAccount = true;\n }\n $state.go(assetService.balanceRouteStates.REVIEW_PAY);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n function generateAccountNumberLabel() {\n var stringToReturn = '';\n if (vm.balanceStorage.billsQuantity > 1) {\n stringToReturn = vm.balanceStorage.billsQuantity.toString().concat('-accounts-selected');\n } else {\n stringToReturn = 'single-account-selected';\n }\n return stringToReturn;\n }\n function generateDateLabel() {\n var stringToReturn = '';\n switch (vm.balanceStorage.dateSelected.index) {\n case 0:\n stringToReturn = 'pay-now';\n break;\n case 1:\n stringToReturn = 'pay-on-due-date';\n break;\n case 2:\n stringToReturn = 'other-date';\n break;\n }\n return stringToReturn;\n }\n function generateAmountLabel() {\n var stringToReturn = 'how-much-would-you-like-to-pay-|-';\n switch (vm.balanceStorage.amountSelected) {\n case 0:\n stringToReturn = stringToReturn.concat('total-amount-due');\n break;\n case 1:\n stringToReturn = stringToReturn.concat('other-amount');\n break;\n }\n return stringToReturn;\n }\n function generateShareWarmth() {\n var stringToReturn = '';\n switch (vm.balanceStorage.programsContributions) {\n case undefined:\n stringToReturn = stringToReturn.concat('submit-payment');\n break;\n default:\n stringToReturn = stringToReturn.concat('share-the-warmth');\n break;\n }\n return stringToReturn;\n }\n function generateVirtualPagePushPaymentDate(error) {\n var push = '/vpv/authenticated/account-payment/pay-my-bill/';\n push = push.concat(generateAccountNumberLabel()).concat('/payment-date/when-would-you-like-to-pay-your-bill/').concat(generateDateLabel());\n push = error ? push.concat('/error') : push.concat('/continue');\n return push;\n }\n function generateVirtualPagePushPaymentAmount(error) {\n var push = '/vpv/authenticated/account-payment/pay-my-bill/payment-amount/';\n push = push.concat(generateAmountLabel()).concat('/how-much-would-you-like-to-pay/').concat(generateDateLabel());\n push = error ? push.concat('/error') : push.concat('/continue');\n return push;\n }\n function generateVirtualPagePushPaymentMethod(error) {\n var push = '/vpv/authenticated/account-payment/pay-my-bill/';\n push = push.concat(generateAmountLabel()).concat('/payment-method/which-bank-account-do-you-want-to-pay-with/');\n push = error ? push.concat('/error') : push.concat('/continue');\n return push;\n }\n function generateVirtualPagePushReviewPay(error) {\n var push = '/vpv/authenticated/account-payment/pay-my-bill/review-pay';\n push = push.concat(generateAmountLabel()).concat('/review-the-information-below/').concat(generateShareWarmth());\n return push;\n }\n}\napp.controller('PaymentAmount', PaymentAmount);\nPaymentAmount.$inject = ['sessionStorageService', 'assetService', '$scope', '$rootScope', '$filter', '$sce', 'commongaTaggingService', 'broadcastService', '$modalInstance'];\nfunction PaymentAmount(sessionStorageService, assetService, $scope, $rootScope, $filter, $sce, commongaTaggingService, broadcastService, $modalInstance) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _toFixed = 2;\n $rootScope.apiValidation = false;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.acceptWarmth = false;\n vm.amountSection = false;\n vm.amountSelected = '';\n vm.balanceStorage = {};\n vm.bindedAmounts = [];\n vm.copySelectedAccounts = [];\n vm.dueAmount = 0;\n vm.newAmountsArray = [];\n vm.newTotalAmount = 0;\n vm.inputAmount = [];\n vm.balanceAmount = [];\n vm.paymentAmount = {};\n vm.reviewPay = false;\n vm.totalNoWarmth = 0;\n vm.warmthValue = 0;\n vm.negativeAmountSection = false;\n vm.multipleAmountInput = false;\n vm.guid = '';\n vm.disableSaveButton = false;\n vm.zeroDueAmount = false;\n vm.enableError = false;\n vm.amountToPay = undefined;\n vm.amountLength = undefined;\n vm.lengthError = [];\n vm.singleAccLength = false;\n vm.checkSaved = [];\n vm.checkSavedPayment = false;\n vm.amtCheck = [];\n vm.checkVal = false;\n vm.checkSingle = false;\n vm.checkLimit = undefined;\n vm.amtLimit = undefined;\n vm.amountCheck = false;\n vm.filterAmountCheck = false;\n vm.zeroAmountCounter = 0;\n vm.zeroAmountError = [];\n var amount = 0;\n\n /* --------------Function Declarations-----------------------*/\n vm.formatNewAmounts = formatNewAmounts;\n vm.formatTotalAmount = formatTotalAmount;\n vm.sumAll = sumAll;\n vm.toggleSection = toggleSection;\n vm.nextStep = nextStep;\n vm.closeModal = closeModal;\n vm.changeAmount = changeAmount;\n vm.addValidation = addValidation;\n vm.submitOtherAmount = submitOtherAmount;\n vm.singleAmountCheck = singleAmountCheck;\n\n /* --------------Function Definitions-----------------------*/\n function nextStep(value) {\n if (vm.newAmountsArray.length === 0) {\n if (vm.balanceStorage.newAmountsArray !== undefined) {\n vm.newAmountsArray = vm.balanceStorage.newAmountsArray;\n }\n }\n if (value) {\n // Run just when Next Step is True\n if (!vm.amountSelected) {\n vm.warmthValue = 0;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n vm.bindedAmounts = [];\n vm.totalNoWarmth = vm.newTotalAmount;\n }\n }\n vm.balanceStorage.shareWarmth = vm.warmthValue;\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\n vm.balanceStorage.amountSelected = vm.amountSelected;\n vm.balanceStorage.newAmounts = vm.bindedAmounts;\n vm.balanceStorage.totalNoWarmth = vm.totalNoWarmth;\n if (vm.amountSelected == '1') {\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.bindedAmounts && vm.bindedAmounts.length > 0) {\n vm.balanceStorage.selectedAccounts[index].billAmount = isNaN(vm.bindedAmounts[index].charAt(0)) ? vm.bindedAmounts[index].substring(1).replace(/,/g, '') : vm.bindedAmounts[index];\n }\n });\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $rootScope.zeroDueFlag = false;\n }\n function closeModal() {\n $modalInstance.close();\n }\n function addValidation() {\n var value = isNaN(vm.bindedAmounts[0]) ? Number(vm.bindedAmounts[0].substring(1).replace(/,/g, '')) : vm.bindedAmounts[0];\n if (value <= 0) {\n vm.enableError = true;\n } else {\n vm.enableError = false;\n }\n }\n function sumAll(warmth) {\n vm.newTotalAmount = 0;\n vm.totalNoWarmth = 0;\n vm.bindedAmounts.forEach(function (element) {\n if (element !== undefined && isNaN(element)) {\n if (isNaN(Number(element.charAt(0)))) {\n if (element.charAt(0) === '-') {\n vm.newTotalAmount += Number(element);\n } else {\n var sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n vm.newTotalAmount += Number(sub);\n }\n }\n } else {\n vm.newTotalAmount += Number(element);\n }\n });\n vm.totalNoWarmth = vm.newTotalAmount.toFixed(_toFixed);\n if (vm.acceptWarmth) {\n vm.newTotalAmount += vm.warmthValue;\n } else if (warmth === assetService.strings.WARMTH) {\n vm.warmthValue = 0;\n }\n vm.newTotalAmount = vm.newTotalAmount.toFixed(_toFixed);\n if (vm.newTotalAmount < vm.balanceStorage.totalAmount) {\n vm.balanceStorage.contributionForm = undefined;\n }\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\n }\n\n //Function to show error when length is greater than 6 for multiple accounts\n function submitOtherAmount(index, ident) {\n sumAll();\n vm.newAmountsArray[index] = {\n id: ident,\n bill: isNaN(vm.bindedAmounts[index].charAt(0)) ? vm.bindedAmounts[index].substring(1).replace(/,/g, '') : vm.bindedAmounts[index]\n };\n vm.inputAmount[index] = vm.newAmountsArray[index].bill;\n var validateAmount = vm.inputAmount[index];\n vm.amountToPay = String(validateAmount).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.amtLimit) {\n vm.lengthError[index] = true;\n vm.checkSingle = true;\n }\n }\n function formatNewAmounts(index, ident) {\n sumAll();\n vm.newAmountsArray[index] = {\n id: ident,\n bill: isNaN(vm.bindedAmounts[index].charAt(0)) ? vm.bindedAmounts[index].substring(1).replace(/,/g, '') : vm.bindedAmounts[index],\n balance: vm.balanceStorage.selectedAccounts[index].amount\n };\n vm.inputAmount[index] = vm.newAmountsArray[index].bill;\n //In-line error check for <= zero Amount\n if (vm.newAmountsArray[index].bill <= 0) {\n vm.zeroAmountError[index] = true;\n } else {\n vm.zeroAmountError[index] = false;\n }\n\n //to remove the error message for multiple accounts\n if (vm.balanceStorage.selectedAccounts.length > 1) {\n var validateAmount = vm.inputAmount[index];\n vm.amountToPay = String(validateAmount).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.checkLimit) {\n vm.lengthError[index] = true;\n } else {\n vm.lengthError[index] = false;\n }\n vm.checkSingle = _.filter(vm.lengthError, function (result) {\n return result === true;\n });\n\n //to check if the amount entered is greater than due for multiple accounts\n vm.balanceAmount[index] = vm.newAmountsArray[index].balance;\n var fullBalance = Number(vm.balanceAmount[index]);\n var payAmount = Number(vm.inputAmount[index]);\n if (payAmount > fullBalance) {\n vm.checkSaved[index] = true;\n } else {\n vm.checkSaved[index] = false;\n }\n vm.filterAmt = _.filter(vm.checkSaved, function (result) {\n return result === true;\n });\n sessionStorageService.set('filterAmountLength', vm.checkSaved);\n vm.amountCheck = vm.filterAmt.length > 0 ? true : false;\n sessionStorageService.set('lengthError', false);\n } else if (vm.balanceStorage.selectedAccounts.length == 1) {\n //to remove the error message for single accounts\n var checkAmount = vm.totalNoWarmth;\n vm.singleAmtToPay = String(checkAmount).split('');\n vm.singleAmtlength = vm.singleAmtToPay.length;\n if (vm.singleAmtlength > vm.checkLimit) {\n vm.singleAccLength = true;\n vm.checkSingle = true;\n } else {\n vm.singleAccLength = false;\n vm.checkSingle = false;\n }\n\n //to check if the amount entered is greater than due for single accounts\n var totalDueAmt = Number(vm.balanceStorage.totalAmount);\n var amtTotal = Number(vm.totalNoWarmth);\n if (totalDueAmt < amtTotal) {\n vm.checkSavedPayment = true;\n } else {\n vm.checkSavedPayment = false;\n }\n sessionStorageService.set('lengthError', false);\n }\n\n //Updating balanceStroage value for each amount change in modal\n if (vm.balanceStorage.newAmountsArray !== undefined && vm.balanceStorage.newAmountsArray.length !== 0) {\n vm.newAmountsArray.forEach(function (sElement, sIndex) {\n if (sElement != null) {\n vm.balanceStorage.newAmountsArray.forEach(function (pElement, pIndex) {\n if (pElement != null) {\n if (sElement.id === pElement.id) {\n pElement.bill = sElement.bill;\n }\n }\n });\n }\n });\n } else {\n vm.balanceStorage.newAmountsArray = vm.newAmountsArray;\n }\n vm.balanceStorage.contributionForm = undefined;\n vm.balanceStorage.selectedAccounts.forEach(function (element) {\n element.donationValue = 0;\n if (element.accountNumber === vm.newAmountsArray[index].id) {\n element.totalDonationAmount = (Number(vm.newAmountsArray[index].bill) + element.donationValue).toFixed(_toFixed);\n }\n });\n vm.tempNewAmountsArray = _.filter(vm.inputAmount, function (item) {\n return item == undefined || item <= 0;\n });\n }\n function formatTotalAmount(amount) {\n var formattedAmount = String(amount).split('.');\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1]));\n }\n function toggleSection(value) {\n //In-line error toggled off initially\n vm.zeroAmountError.forEach(function (sElement, sIndex) {\n vm.zeroAmountError[sIndex] = false;\n });\n vm.radioBtnIndex = value;\n vm.enableError = false;\n vm.singleAccLength = false;\n if (value === 0) {\n vm.multipleAmountInput = false;\n vm.amountSection = false;\n vm.newTotalAmount = vm.balanceStorage.totalAmount;\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\n vm.totalNoWarmth = 0;\n vm.balanceStorage.contributionForm = undefined;\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n element.billAmount = element.amount;\n element.amount += '';\n vm.bindedAmounts[index] = 0;\n element.donationValue = 0;\n if (vm.balanceStorage.selectedAccounts.length > 1) {\n element.totalDonationAmount = Number(element.billAmount) + Number(element.donationValue);\n } else {\n element.totalDonationAmount = 0;\n }\n });\n vm.newAmountsArray = [];\n vm.balanceStorage.newAmountsArray = [];\n vm.inputAmount = [];\n //nextStep();\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\n } else {\n vm.multipleAmountInput = true;\n vm.amountSection = true;\n vm.balanceStorage.contributionForm = undefined;\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n element.amount += '';\n element.donationValue = 0;\n });\n sumAll();\n }\n }\n\n //Function to show the error message when amount is greater then 6 for single accounts\n function singleAmountCheck() {\n var checkAmount = vm.totalNoWarmth;\n vm.singleAmtToPay = String(checkAmount).split('');\n vm.singleAmtlength = vm.singleAmtToPay.length;\n if (vm.singleAmtlength > vm.amtLimit) {\n vm.singleAccLength = true;\n vm.checkSingle = true;\n }\n }\n function changeAmount() {\n //To not SAVE, if 1 or more than 1 field is Zero or Empty only incase of Other Amount\n if (vm.amountSelected == '1') {\n vm.bindedAmounts.forEach(function (sElement, sIndex) {\n //When the page loads for the first time with new account, the value in binded amounts array is not in string\n if (typeof sElement === 'string' || sElement instanceof String) {\n amount = isNaN(sElement.charAt(0)) ? sElement.substring(1).replace(/,/g, '') : sElement;\n } else {\n amount = sElement;\n }\n //In-Line error check if the user does not enter any amount after page load and try to SAVE the page\n if (Number(amount) <= 0) {\n vm.zeroAmountCounter = vm.zeroAmountCounter + 1;\n vm.zeroAmountError[sIndex] = true;\n } else {\n vm.zeroAmountError[sIndex] = false;\n }\n });\n }\n if (vm.zeroAmountCounter <= 0) {\n if (vm.balanceStorage.selectedAccounts.length == 1) {\n sessionStorageService.set('savedOtherAmount', vm.checkSavedPayment);\n } else if (vm.balanceStorage.selectedAccounts.length > 1) {\n sessionStorageService.set('savedOtherAmount', vm.amountCheck);\n }\n if (vm.amountSelected == '0') {\n vm.checkSingle = false;\n sessionStorageService.set('savedOtherAmount', false);\n }\n if (vm.checkSingle == false) {\n if (vm.radioBtnIndex === 1) {\n pushDL('pay-bill', 'other-amount', 'payment-amount');\n } else {\n pushDL('pay-bill', 'total-amount-due', 'payment-amount');\n }\n if (!vm.acceptWarmth) {\n vm.warmthValue = 0;\n }\n nextStep(true);\n broadcastService.refreshPaymentPage();\n closeModal();\n } else {\n if (vm.balanceStorage.selectedAccounts.length == 1) {\n document.getElementById('singleTextBox').focus();\n } else if (vm.balanceStorage.selectedAccounts.length > 1) {\n vm.lengthError.forEach(function (element, index) {\n if (element == true) {\n document.getElementById(index).focus();\n }\n });\n }\n }\n } else {\n vm.zeroAmountCounter = 0;\n }\n }\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n vm.guid = angular.element('#guid').val();\n // Load sessionStorageService\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n vm.amountLimit = sessionStorageService.get('getAmountLimit');\n vm.extraAmountLimit = sessionStorageService.get('getExtraAmountLimit');\n vm.checkLimit = parseInt(vm.extraAmountLimit);\n vm.amtLimit = parseInt(vm.amountLimit);\n //2nd time edit of Payment Amount for Due\n vm.filterCheck = sessionStorageService.get('filterAmountCheck');\n if (vm.balanceStorage.selectedAccounts.length > 1 && vm.filterCheck != true) {\n vm.amtCheck = sessionStorageService.get('filterAmountLength');\n if (vm.amtCheck.length != 0) {\n vm.checkSaved = vm.amtCheck;\n } else {\n sessionStorageService.delete('filterAmountLength');\n sessionStorageService.set('filterAmountCheck', true);\n vm.checkSaved = [];\n }\n }\n if (vm.balanceStorage.amountSelected === '1') {\n vm.multipleAmountInput = true;\n }\n if (vm.balanceStorage.selectedAccounts.length > 1 && Number(vm.balanceStorage.totalAmount) == 0) {\n vm.zeroDueAmount = true;\n }\n vm.totalAmountDue = vm.balanceStorage.totalAmount;\n //$scope.$parent.$parent.vm.stepTitle = 'Payment Amount';\n pushVPV('/vpv/de/page/pay-bill/load/payment-amount');\n // --Start Validation: If balanceStorage has already data\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.balanceStorage.newAmountsArray !== undefined && vm.balanceStorage.newAmountsArray.length > 0) {\n vm.balanceStorage.newAmountsArray.forEach(function (sElement, sIndex) {\n if (sElement != null) {\n if (vm.balanceStorage.selectedAccounts[index].accountNumber === vm.balanceStorage.newAmountsArray[sIndex].id) {\n vm.bindedAmounts[index] = \"\".concat(vm.balanceStorage.newAmountsArray[sIndex].bill);\n vm.inputAmount[index] = vm.bindedAmounts[index];\n } else if (vm.bindedAmounts[index] === undefined) {\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = \"\".concat(element.amount);\n }\n vm.inputAmount[index] = vm.bindedAmounts[index];\n }\n }\n });\n } else if (vm.balanceStorage.newAmounts !== undefined) {\n if (vm.balanceStorage.newAmounts[index] !== undefined) {\n vm.bindedAmounts[index] = \"\".concat(vm.balanceStorage.newAmounts[index]);\n } else {\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = 0;\n }\n }\n vm.newTotalAmount += Number(element.amount);\n } else {\n if (element.amount <= 0) {\n //vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = 0;\n }\n vm.newTotalAmount += Number(element.amount);\n }\n if (vm.balanceStorage.amountSelected !== undefined && vm.balanceStorage.amountSelected !== '') {\n vm.amountSelected = vm.balanceStorage.amountSelected;\n } else {\n vm.amountSelected = '0';\n }\n if (vm.amountSelected === '1') {\n vm.amountSection = true;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n } else {\n vm.amountSection = false;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n }\n if (element.amount <= 0) {\n //vm.negativeAmountSection = true;\n vm.balanceStorage.totalNoWarmth = vm.balanceStorage.newTotalAmount;\n }\n });\n if (vm.negativeAmountSection || vm.amountSelected === '1') {\n var count = 0;\n vm.bindedAmounts.forEach(function (element) {\n if (isNaN(Number(element.charAt(0)))) {\n var sub = element.substring(1);\n sub = sub.replace(/,/g, '');\n if (sub <= 0) {\n count += 1;\n }\n } else {\n if (element <= 0) {\n count += 1;\n }\n }\n if (count >= 1) {}\n });\n }\n if (vm.zeroDueAmount) {\n vm.amountSelected = '1';\n }\n if (vm.balanceStorage.totalNoWarmth !== undefined) {\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\n } else {\n vm.totalNoWarmth = 0;\n }\n if (vm.balanceStorage.shareWarmth !== undefined && vm.balanceStorage.shareWarmth !== 0) {\n vm.acceptWarmth = true;\n vm.warmthValue = vm.balanceStorage.shareWarmth;\n } else {\n vm.acceptWarmth = false;\n vm.warmthValue = 0;\n }\n // --End\n vm.balanceStorage.ShowErrorForm = false;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $scope.$emit(assetService.balanceEvents.FORM_VALIDATION, {});\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('PaymentDate', PaymentDate);\nPaymentDate.$inject = ['sessionStorageService', 'assetService', '$scope', '$rootScope', 'commongaTaggingService', 'broadcastService', '$modalInstance'];\nfunction PaymentDate(sessionStorageService, assetService, $scope, $rootScope, commongaTaggingService, broadcastService, $modalInstance) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _payAsapValue = '0';\n var _payOnDueDateValue = '1';\n var _otherDateValue = '2';\n var _plusOne = 1;\n $rootScope.apiValidation = false;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.balanceStorage = {};\n vm.billsQuantity = 0;\n vm.buttonContinue = true;\n vm.calendarDate = '';\n vm.dateSelected = '';\n vm.currentDate = undefined;\n vm.currentDatePlusOne = undefined;\n vm.dateLimit = undefined;\n vm.disableDate = undefined;\n vm.newDateSelected = vm.dateSelected;\n vm.payOnDueDate = false;\n vm.payOnOtherDate = false;\n vm.reviewPay = false;\n vm.displayDueDate = true;\n vm.showPotentialFeesWarning = false;\n vm.disableSaveButton = false;\n vm.guid = '';\n\n /* --------------Function Declarations-----------------------*/\n vm.selectPaymentDate = selectPaymentDate;\n vm.selectCalendarDate = selectCalendarDate;\n vm.updatePotentialFeesWarning = updatePotentialFeesWarning;\n vm.closeModal = closeModal;\n vm.changeDate = changeDate;\n vm.checkCalendarDate = checkCalendarDate;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n }\n function checkCalendarDate() {\n if (vm.calendarDate === undefined || vm.calendarDate === '') {\n vm.disableSaveButton = true;\n }\n }\n function selectCalendarDate(calenarDate) {\n var day = moment(new Date()).format('MM/DD/YYYY');\n if ($('.sui-days').find(\"td[title='\" + day + \"']\").hasClass('sui-weekend')) {\n $('.sui-days').find(\"td[title='\" + day + \"']\").addClass('sui-currentDateIneligible');\n } else {\n $('.sui-days').find(\"td[title='\" + day + \"']\").addClass('sui-currentDate');\n }\n // vm.calendarDate = calenarDate;\n if (vm.calendarDate !== undefined && vm.calendarDate !== '' && vm.calendarDate !== null) {\n vm.disableSaveButton = false;\n if (vm.calendarDate.indexOf(' ') > 0) {\n vm.calendarDate = vm.calendarDate.replace(/\\s+/g, '');\n vm.disableContribution = vm.calendarDate === day ? true : false;\n vm.correctFormatDate = '';\n }\n }\n if (vm.calendarDate === undefined || vm.calendarDate === '') {\n vm.correctFormatDate = vm.correctFormatDate ? vm.correctFormatDate : '';\n vm.disableDate = moment(vm.currentDatePlusOne).format('MM/DD/YYYY');\n $('.sui-days').find(\"td[title='\" + vm.disableDate + \"']\").removeClass('sui-selected');\n }\n }\n function selectPaymentDate() {\n vm.disableSaveButton = false;\n vm.calendarDate = '';\n vm.newDateSelected = vm.dateSelected;\n vm.disableContribution = vm.newDateSelected === _payAsapValue ? true : false;\n if (vm.newDateSelected === _otherDateValue) {\n vm.disableSaveButton = true;\n }\n }\n $scope.$on('dateInvalid', function (event, data, value) {\n vm.disableSaveButton = data;\n selectCalendarDate(value);\n });\n function updatePotentialFeesWarning() {\n var isCalendarDateLaterThanDueDate = false;\n vm.calendarDate = angular.element('.shared-calendar input')[0].value;\n if (vm.calendarDate) {\n if (vm.calendarDate.indexOf(' ') > 0) {\n vm.calendarDate = vm.calendarDate.replace(/\\s+/g, '');\n }\n var date = new Date(vm.calendarDate).getTime();\n isCalendarDateLaterThanDueDate = vm.balanceStorage.selectedAccounts.map(function (account) {\n return new Date(account.dueDate).getTime();\n }).some(function (dueDate) {\n return dueDate < date;\n });\n }\n vm.showPotentialFeesWarning = isCalendarDateLaterThanDueDate;\n }\n function changeDate() {\n if (vm.newDateSelected === _payAsapValue) {\n vm.balanceStorage.dateSelected = {\n index: _payAsapValue,\n name: assetService.strings.PAY_NOW\n };\n vm.balanceStorage.displayDate = moment(vm.currentDate).format('MM/DD/YY');\n pushDL('pay-bill', 'pay-now', 'payment-date');\n } else if (vm.newDateSelected === _payOnDueDateValue) {\n vm.balanceStorage.dateSelected = {\n index: _payOnDueDateValue,\n name: assetService.strings.PAY_DUE_DATE\n };\n vm.balanceStorage.displayDate = vm.balanceStorage.selectedAccounts[0].dueDate;\n pushDL('pay-bill', 'pay-due-date', 'payment-date');\n } else if (vm.newDateSelected === _otherDateValue) {\n vm.balanceStorage.dateSelected = {\n index: _otherDateValue,\n name: assetService.strings.PAY_OTHER_DATE\n };\n vm.balanceStorage.displayDate = vm.calendarDate;\n pushDL('pay-bill', 'other-date', 'payment-date');\n }\n if (vm.calendarDate !== undefined) {\n vm.balanceStorage.calendarDate = vm.calendarDate;\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n sessionStorageService.set('disableContribution', vm.disableContribution);\n broadcastService.refreshPaymentPage();\n closeModal();\n }\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function load() {\n vm.guid = angular.element('#guid').val();\n vm.disableSaveButton = true;\n // LOAD sessionStorageService\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n pushVPV('/vpv/de/page/pay-bill/load/payment-date');\n vm.currentDate = new Date();\n var d = vm.currentDate.getDate();\n var m = vm.currentDate.getMonth();\n var y = vm.currentDate.getFullYear();\n vm.currentDatePlusOne = new Date(y, m, d);\n vm.dateLimit = new Date(y + _plusOne, m, d + _plusOne);\n var day = ('0' + (d + _plusOne)).slice(-2);\n var month = ('0' + (m + _plusOne)).slice(-2);\n vm.payNowDate = moment(vm.currentDate).format('MM/DD/YYYY');\n if (vm.balanceStorage.selectedAccounts.length === 1) {\n if (new Date(vm.balanceStorage.selectedAccounts[0].dueDate).getTime() < vm.currentDatePlusOne.getTime()) {\n vm.displayDueDate = false;\n }\n }\n if (vm.balanceStorage.calendarDate !== undefined) {\n vm.calendarDate = vm.balanceStorage.calendarDate;\n vm.correctFormatDate = moment(vm.calendarDate).format('MM/DD/YYYY');\n } else {\n vm.calendarDate = '';\n vm.correctFormatDate = '';\n }\n if (vm.balanceStorage.dateSelected !== undefined) {\n vm.dateSelected = vm.balanceStorage.dateSelected.index;\n vm.newDateSelected = vm.dateSelected;\n } else {\n vm.dateSelected = '0';\n }\n if (vm.balanceStorage.reviewPay) {\n vm.dateSelected = _payOnDueDateValue;\n }\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('PaymentMethod', PaymentMethod);\nPaymentMethod.$inject = ['$rootScope', '$scope', 'assetService', 'genericHelperService', 'sessionStorageService', 'getPrepaidDetailsService', 'manageBankAccountsForPrepaidService', 'commongaTaggingService', 'responseNotificationsService', 'ccSitecoreGenericCachingService', '$state', '$modalInstance', 'broadcastService', '$interval', '$timeout'];\nfunction PaymentMethod($rootScope, $scope, assetService, genericHelperService, sessionStorageService, getPrepaidDetailsService, manageBankAccountsForPrepaidService, commongaTaggingService, responseNotificationsService, ccSitecoreGenericCachingService, $state, $modalInstance, broadcastService, $interval, $timeout) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n $rootScope.apiValidation = true;\n var _accountId = assetService.strings.BANK_ACCOUNT_ID;\n var _accountNickName = assetService.strings.BANK_DESCRIPTION;\n var _bankAccountsOriginal = '';\n var _bankAccountIssues = assetService.strings.BANK_ACCOUNT_NOT_ADDED_SUCCESSFULLY;\n var _globalAccountInfo;\n var _SUCCESS = assetService.replyCodes.SUCCESS;\n var _bankAccountAddResponse = '';\n var wasVpvMethodUsed = false;\n var tempTag = '#&$TEMP$&#';\n vm.opti = false;\n $rootScope.isPayMyBill = false;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n vm.account = '';\n vm.accountConfirmNumber = '';\n vm.accountForPay = {};\n vm.accountId = '';\n vm.accountNickname = '';\n vm.accountNumber = '';\n vm.accountRouting = '';\n vm.addedBankResults = {};\n vm.balanceStorage = {};\n vm.buttonContinue = false;\n vm.bankAccounts = [];\n vm.displayAccounts = false;\n vm.lastFourDigits = 0;\n vm.newBankAccount = {};\n vm.reviewPay = false;\n vm.routingNumber = 0;\n vm.selectedBankAccount = false;\n vm.accountSelected = {};\n vm.showAddNewAccount = false;\n vm.saveForFuturePayments = false;\n vm.accountType = [];\n vm.selectAccountType = null;\n vm.defaultBankAccount = null;\n vm.addAccountLabel = null;\n vm.accountTypeValue = '';\n vm.showErrorMessage = false;\n vm.bankAccountsDropdown = [];\n vm.bankAccountPresent = false;\n var _kwValue = assetService.strings.VALUE;\n $rootScope.savedACH = false;\n var sessionStorageAddedInterval;\n $rootScope.noSavedBank = '';\n vm.disableSaveBankerror = false;\n $rootScope.mnberror = true;\n vm.ACIValidationFailed = false;\n vm.ACIValidationErr = '';\n vm.guid = '';\n vm.disableSubmitButton = false;\n vm.formActive = false;\n vm.aci429 = '';\n vm.aci278 = '';\n vm.aci734 = '';\n vm.aci739 = '';\n vm.accNameEmpty = false;\n vm.accRoutingEmpty = false;\n vm.accNumEmpty = false;\n vm.accConfirmNumEmpty = false;\n vm.accTypeEmpty = false;\n vm.getAccountLimit = undefined;\n vm.getNameLimit = undefined;\n\n /* --------------Function Declarations-----------------------*/\n vm.init = init;\n vm.checkAndContinue = checkAndContinue;\n vm.selectBankAccount = selectBankAccount;\n vm.showAddAccount = showAddAccount;\n vm.closeModal = closeModal;\n vm.changeBankAccount = changeBankAccount;\n vm.saveBankDetails = saveBankDetails;\n vm.nicknameCheck = nicknameCheck;\n vm.nameError = nameError;\n vm.accountCheck = accountCheck;\n vm.accountError = accountError;\n vm.confirmAccCheck = confirmAccCheck;\n vm.confirmAccError = confirmAccError;\n\n /* --------------Function Definitions-----------------------*/\n function closeModal() {\n $modalInstance.close();\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n }\n function nicknameCheck() {\n var nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\n if (nameLength >= vm.getNameLimit) {\n vm.showNameError = true;\n }\n }\n function nameError() {\n var nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\n if (nameLength > vm.getNameLimit) {\n vm.showNameError = true;\n } else {\n vm.showNameError = false;\n }\n }\n function accountCheck() {\n var accLength = vm.accountNumber ? vm.accountNumber.length : 0;\n if (accLength >= vm.getAccountLimit) {\n vm.showAccError = true;\n }\n }\n function accountError() {\n var accLength = vm.accountNumber ? vm.accountNumber.length : 0;\n if (accLength > vm.getAccountLimit) {\n vm.showAccError = true;\n } else {\n vm.showAccError = false;\n }\n }\n function confirmAccCheck() {\n var accCLength = vm.accountConfirmNumber ? vm.accountConfirmNumber.length : 0;\n if (accCLength >= vm.getAccountLimit) {\n vm.showConfirmAccError = true;\n }\n }\n function confirmAccError() {\n var accCLength = vm.accountConfirmNumber ? vm.accountConfirmNumber.length : 0;\n if (accCLength > vm.getAccountLimit) {\n vm.showConfirmAccError = true;\n } else {\n vm.showConfirmAccError = false;\n }\n }\n function changeBankAccount() {\n vm.balanceStorage.paymentData.bankAccountId = vm.balanceStorage.accountId;\n saveBankDetails();\n if (vm.showAddNewAccount) {\n vm.showAddNewAccount = false;\n vm.displayAccounts = true;\n selectBankAccount(vm.balanceStorage.accountId);\n } else {\n broadcastService.refreshPaymentPage();\n closeModal();\n }\n }\n function selectBankAccount(data) {\n _bankAccountsOriginal.forEach(function (element) {\n if (data === element.BankAccountId) {\n vm.selectedBankAccount = true;\n vm.accountId = element.BankAccountId;\n vm.accountForPay = {\n accountNickName: element.BankDescription ? element.BankDescription : 'Account',\n maskedAccNo: element.BankAccountNumber,\n bankTransit: element.BankRoutingNumber\n };\n vm.account = element.BankDescription ? element.BankDescription : 'Account';\n vm.lastFourDigits = element.BankAccountNumber.substr(element.BankAccountNumber.length - 4);\n vm.routingNumber = element.BankRoutingNumber;\n vm.accountTypeValue = '';\n vm.accountType.forEach(function (item) {\n if (item.value === element.BankAccountType) {\n vm.accountTypeValue = item.text;\n }\n });\n }\n });\n vm.balanceStorage.accountId = vm.accountId;\n vm.balanceStorage.accountType = vm.accountType;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n }\n function checkAndContinue(value) {\n vm.showErrorMessage = false;\n if ($scope.payment.$valid) {\n $rootScope.apiValidation = true;\n }\n if (vm.accountRouting) {\n vm.accountRouting = vm.accountRouting.toString().replace(/[A-Za-z]/g, '');\n }\n }\n function addDataToSitecoreCache(payload) {\n return ccSitecoreGenericCachingService.addToSitecoreCache(payload).then(function (response) {\n return response;\n }, function () {});\n }\n function showAddAccount() {\n $scope.payment.$setUntouched();\n $scope.payment.$setPristine();\n vm.formActive = true;\n //gat-events\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account');\n vm.accountConfirmNumber = '';\n vm.accountNickname = '';\n vm.accountNumber = '';\n vm.accountRouting = '';\n vm.balanceStorage.newBankAccount = '';\n if (!vm.showAddNewAccount) {\n vm.showAddNewAccount = true;\n vm.displayAccounts = false;\n vm.bankAccountsDropdown.forEach(function (element) {\n if (element.value === '0') {\n vm.defaultBankAccountDropdown = element.text;\n element.selected = true;\n } else {\n element.selected = false;\n }\n });\n } else {\n vm.showAddNewAccount = false;\n vm.displayAccounts = true;\n if (vm.balanceStorage.accountForPay !== undefined) {\n selectBankAccount(vm.balanceStorage.accountForPay.nickName);\n }\n }\n }\n $scope.onSelectBankAccount = function (item) {\n if (item.value == 0) {\n vm.showAddNewAccount = true;\n vm.formActive = true;\n vm.displayAccounts = false;\n vm.bankAccountsDropdown.forEach(function (element) {\n if (element.value === '0') {\n vm.defaultBankAccountDropdown = element.text;\n element.selected = true;\n } else {\n element.selected = false;\n }\n });\n } else {\n selectBankAccount(item.value);\n }\n };\n $scope.onSelectAddBankAccount = function (item) {\n if (item.value !== '0') {\n vm.showAddNewAccount = false;\n vm.displayAccounts = true;\n vm.selectedBankAccount = true;\n vm.bankAccounts.forEach(function (element) {\n if (element.value === item.value) {\n vm.defaultBankAccount = element.text;\n element.selected = true;\n } else {\n element.selected = false;\n }\n });\n selectBankAccount(item.value);\n }\n vm.ACIValidationFailed = false;\n };\n function saveBankDetails() {\n vm.balanceStorage.newAccountAdded = vm.showAddNewAccount;\n if (vm.showAddNewAccount) {\n vm.balanceStorage.savePaymentInfo = vm.saveForFuturePayments;\n vm.accNameEmpty = vm.accountNickname ? false : true;\n vm.accRoutingEmpty = vm.accountRouting ? false : true;\n vm.accNumEmpty = vm.accountNumber ? false : true;\n vm.accConfirmNumEmpty = vm.accountConfirmNumber ? false : true;\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\n var selectedAddressData = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n var accountSelected = selectedAddressData.accountSelected;\n var _businessPartnerId = orgBP ? orgBP : relatedBP ? relatedBP : accountSelected.primaryBp;\n vm.balanceStorage.accountType = vm.accountType;\n if (!vm.accNameEmpty && !vm.accRoutingEmpty && !vm.accNumEmpty && !vm.accConfirmNumEmpty && !vm.accTypeEmpty) {\n var newParamData = {\n businessPartnerId: _businessPartnerId,\n bankDescription: vm.saveForFuturePayments ? vm.accountNickname : tempTag,\n accountNumber: vm.accountNumber,\n routingNumber: vm.accountRouting,\n accountType: vm.selectAccountType,\n requestedBy: vm.balanceStorage.currentUser.emailId,\n action: assetService.serviceActions.manageBankAccountsForPrepaid.ADD\n };\n addNewBankAccount(newParamData).then(function () {\n if (_bankAccountAddResponse.ReplyCode === _SUCCESS) {\n vm.bankAddedSuccess = true;\n var cachedParamData = {\n Key: _bankAccountAddResponse.BankId,\n Value: {\n BankDescription: vm.accountNickname,\n BankAccountNumber: vm.accountNumber.slice(-4),\n BankRoutingNumber: vm.accountRouting,\n BankAccountType: vm.selectAccountType,\n BankAccountId: _bankAccountAddResponse.BankId\n }\n };\n var tempBankData = {\n BankDescription: vm.accountNickname,\n BankAccountNumber: vm.accountNumber.slice(-4),\n BankRoutingNumber: vm.accountRouting,\n BankAccountType: vm.selectAccountType,\n BankAccountId: _bankAccountAddResponse.BankId\n };\n vm.balanceStorage.accountId = _bankAccountAddResponse.BankId;\n var data = {\n businessPartnerId: _businessPartnerId,\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber\n };\n if (vm.saveForFuturePayments === true) {\n vm.loadingSpinner = false;\n loadBankDetails(data, false);\n } else {\n tempBankData.BankAccountNumber = \"******\".concat(vm.accountNumber.slice(-4));\n _bankAccountsOriginal.push(tempBankData);\n }\n addDataToSitecoreCache(cachedParamData).then(function (result) {\n if (result) {\n vm.balanceStorage.accountId = _bankAccountAddResponse.BankId;\n vm.showErrorMessage = false;\n vm.bpid = vm.balanceStorage.globalSelectedAccount.businessPartner;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n sessionStorageService.set('cacheId', _bankAccountAddResponse.BankId);\n $modalInstance.close();\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if (!vm.saveForFuturePayments) {\n setDropdowns();\n }\n //$rootScope.$broadcast(assetService.events.manualNextComponent);\n } else {\n // error occured saving to sitecore cache\n console.log('error saving to sitecore cache');\n }\n $rootScope.noSavedACH = false;\n vm.noSavedACH = false;\n broadcastService.refreshPaymentPage();\n }, function (error) {\n console.log(error);\n });\n } else if (_bankAccountAddResponse.MessageNum === '732' || _bankAccountAddResponse.MessageNum === '739') {\n vm.showErrorMessage = true;\n }\n vm.balanceStorage.ShowErrorForm = vm.showErrorMessage;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $scope.$emit(assetService.balanceEvents.FORM_VALIDATION, {});\n });\n }\n } else {\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n var cachedParamData = {\n Key: vm.balanceStorage.accountId,\n Value: {\n BankDescription: vm.accountForPay.accountNickName,\n BankAccountNumber: vm.accountForPay.maskedAccNo,\n BankRoutingNumber: vm.accountForPay.bankTransit,\n BankAccountType: vm.accountTypeValue,\n BankAccountId: vm.balanceStorage.accountId\n }\n };\n addDataToSitecoreCache(cachedParamData).then(function (result) {\n if (result) {\n vm.balanceStorage.accountId = vm.balanceStorage.accountId;\n vm.showErrorMessage = false;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n sessionStorageService.set('cacheId', vm.balanceStorage.accountId);\n //$rootScope.$broadcast(assetService.events.manualNextComponent);\n } else {\n // error occured saving to sitecore cache\n console.log('error saving to sitecore cache');\n }\n broadcastService.refreshPaymentPage();\n closeModal();\n }, function (error) {\n console.log(error);\n });\n }\n }\n function loadBankDetails(data, action) {\n getPrepaidDetails(data).then(function () {\n if (_bankAccountsOriginal.length > 0) {\n setDropdowns();\n if (vm.balanceStorage.accountId) {\n _bankAccountsOriginal.forEach(function (element) {\n if (element.accountId === vm.balanceStorage.accountId) {\n selectBankAccount(element.accountId);\n }\n });\n }\n if (action) {\n vm.displayAccounts = true;\n vm.showAddNewAccount = false;\n }\n } else {\n vm.displayAccounts = false;\n vm.showAddNewAccount = true;\n }\n });\n }\n function setDropdowns() {\n if (_bankAccountsOriginal.length > 0) {\n vm.bankAccountPresent = true;\n vm.bankAccountsDropdown = [];\n var bankAccounts = _.map(_bankAccountsOriginal, function (item) {\n return {\n value: item.BankAccountId,\n text: item.BankDescription ? item.BankDescription + ' - ' + item.BankAccountNumber.substr(1) : \"Account - \".concat(item.BankAccountNumber.substr(1))\n };\n });\n var addBankAccounts = _.map(_bankAccountsOriginal, function (item) {\n return {\n value: item.BankAccountId,\n text: item.BankDescription ? item.BankDescription + ' - ' + item.BankAccountNumber.substr(1) : \"Account - \".concat(item.BankAccountNumber.substr(1))\n };\n });\n vm.bankAccounts = bankAccounts;\n vm.bankAccountsDropdown = addBankAccounts;\n vm.bankAccountsDropdown.push({\n value: '0',\n text: 'Add Bank Account',\n selected: true\n });\n vm.bankAccounts.push({\n value: '0',\n text: 'Add Bank Account'\n });\n if (vm.balanceStorage.accountId) {\n vm.bankAccounts.forEach(function (item) {\n if (item.value === vm.balanceStorage.accountId) {\n vm.defaultBankAccount = item.text;\n item.selected = true;\n }\n });\n selectBankAccount(vm.balanceStorage.accountId);\n }\n }\n vm.bankAccounts = genericHelperService.setSelectedProp(vm.bankAccounts, _kwValue, vm.defaultBankAccount);\n }\n function getPrepaidDetails(data) {\n vm.loadingSpinner = true;\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n $rootScope.bankData = _bankAccountsOriginal;\n vm.loadingSpinner = false;\n vm.aci429 = $('#AccountType').attr('aci429');\n vm.aci278 = $('#AccountType').attr('aci278');\n vm.aci734 = $('#AccountType').attr('aci734');\n vm.aci739 = $('#AccountType').attr('aci739');\n }, function (error) {\n vm.loadingSpinner = false;\n });\n }\n function addNewBankAccount(data) {\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(data).then(function (result) {\n _bankAccountAddResponse = result.d.ManageBankAcc_NAV;\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account/na/save');\n vm.ACIValidationFailed = false;\n vm.loadingSpinner = false;\n $rootScope.isPayMyBill = false;\n }, function (error) {\n vm.showAddNewAccount = true;\n vm.displayAccounts = false;\n vm.disableSaveBankerror = true;\n vm.ACIValidationFailed = true;\n vm.loadingSpinner = false;\n if (error.MessageNum === '732' || error.MessageNum === '739' || error.MessageNum === '734' || error.MessageNum === '278' || error.MessageNum === '429' || error.MessageNum === '270') {\n vm.ACIValidationErr = error.Message;\n vm.ACIMessageNum = error.MessageNum;\n } else {\n vm.ACIValidationFailed = false;\n $modalInstance.close();\n }\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n if (vm.ACIMessageNum) {\n pushVPV(\"/vpv/de/page/pay-bill/error/add-bank-account/na/na/\".concat(vm.ACIMessageNum));\n switch (vm.ACIMessageNum) {\n case '429':\n pushDL('pay-bill_error', \"\".concat(vm.ACIMessageNum, \"-|-\").concat($rootScope.dataLayerFormat(vm.aci429), \"-|-\").concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'pay-my-bill-|-bank-account');\n break;\n case '278':\n pushDL('pay-bill_error', \"\".concat(vm.ACIMessageNum, \"-|-\").concat($rootScope.dataLayerFormat(vm.aci278), \"-|-\").concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'pay-my-bill-|-bank-account');\n break;\n case '734' || '732' || '270':\n pushDL('pay-bill_error', \"\".concat(vm.ACIMessageNum, \"-|-\").concat($rootScope.dataLayerFormat(vm.aci734), \"-|-\").concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'pay-my-bill-|-bank-account');\n break;\n case '739':\n pushDL('pay-bill_error', \"\".concat(vm.ACIMessageNum, \"-|-\").concat($rootScope.dataLayerFormat(vm.aci739), \"-|-\").concat(assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid), 'pay-my-bill-|-bank-account');\n break;\n default:\n break;\n }\n }\n });\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function load() {\n vm.guid = angular.element('#guid').val();\n // First: Load sessionStorageService\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n vm.accountSelected = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected;\n vm.getAccountLimit = sessionStorageService.get('getAccLimit');\n vm.getNameLimit = sessionStorageService.get('getNameLimit');\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var _businessPartnerId = orgBP ? orgBP : relatedBP ? relatedBP : vm.accountSelected.primaryBp;\n var data = {\n businessPartnerId: _businessPartnerId,\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber\n };\n vm.bankAccountsDropdown.push({\n value: '0',\n text: 'Add Bank Account',\n selected: true\n });\n vm.defaultBankAccountDropdown = vm.bankAccountsDropdown[0].text;\n loadBankDetails(data, true);\n }\n\n /* ---------------Initialization-------------------*/\n function init() {\n vm.noSavedACH = $rootScope.noSavedACH;\n var accountTypeArray = [{\n CHK: 'Personal Checking'\n }, {\n SAV: 'Personal Savings'\n }, {\n BCK: 'Business Checking'\n }, {\n BSV: 'Business Savings'\n }];\n if (accountTypeArray) {\n var accounts = _.map(accountTypeArray, function (item) {\n return {\n value: Object.keys(item)[0],\n text: Object.values(item)[0]\n };\n });\n vm.accountType = accounts;\n if (vm.accountType) {\n vm.selectAccountType = vm.accountType[0].text;\n }\n }\n vm.accountType = genericHelperService.setSelectedProp(vm.accountType, _kwValue, vm.selectAccountType);\n vm.addAccountLabel = 'Add Account';\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData) ? sessionStorageService.get(assetService.storageKeys.selectedAddressData) : undefined;\n load();\n }\n init();\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('ReviewPay', ReviewPay);\nReviewPay.$inject = ['$rootScope', '$state', '$scope', 'assetService', 'commonService', 'makeOneTimeMonthlyContributionService', 'payNowOrScheduledService', 'returnApplicableProgramsService', 'sessionStorageService', 'commongaTaggingService', 'responseNotificationsService', '$stateParams', '$filter', '$sce', 'ccSitecoreGenericCachingService', 'modalService', 'getPrepaidDetailsService', 'broadcastService', '$window'];\nfunction ReviewPay($rootScope, $state, $scope, assetService, commonService, makeOneTimeMonthlyContributionService, payNowOrScheduledService, returnApplicableProgramsService, sessionStorageService, commongaTaggingService, responseNotificationsService, $stateParams, $filter, $sce, ccSitecoreGenericCachingService, modalService, getPrepaidDetailsService, broadcastService, $window) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n $rootScope.apiValidation = true;\n var _bankAccountsOriginal = false;\n var _bankAccountRemoveResponse = '';\n var _otherDateValue = 3;\n var _notSuccessfulPayment = assetService.strings.NOT_SUCCESSFUL_PAYMENT;\n var _numberTwo = '2';\n var _toFixed = 2;\n var _success = assetService.replyCodes.SUCCESS;\n var _temporalProgram = [];\n\n /* --------------Gloabl Vars-----------------------*/\n vm.accountNickName = '';\n vm.accountNumber = '';\n vm.accountType = '';\n vm.lastFourDigits = '';\n vm.inputAmountvalue = [];\n vm.bills = [];\n vm.balanceStorage = {};\n vm.billsQuantity = 0;\n vm.contributeOptions = [];\n vm.contributeOptionsArray = [];\n vm.form = {\n checkbox: [],\n donation: []\n };\n vm.makeContributionsPayment = {};\n vm.bindedAmounts = [];\n vm.inputAmount = [];\n vm.newPaymentAmount = false;\n vm.isPayNow = true;\n vm.newTotalAmount = 0;\n vm.tempTotalAmount = 0;\n vm.otherPaymentDate = false;\n vm.loadingSpinner = true;\n vm.payStep = 1;\n vm.programsContributions = [];\n vm.routingNumber = '';\n vm.successPayment = [];\n vm.viewRoutes = [assetService.balanceRouteStates.PAYMENT_DATE, assetService.balanceRouteStates.PAYMENT_AMOUNT, assetService.balanceRouteStates.PAYMENT_METHOD, assetService.balanceRouteStates.REVIEW_PAY, assetService.balanceRouteStates.SUBMIT_BUTTON_MODAL, assetService.balanceRouteStates.BILLS, assetService.balanceRouteStates.SUCCESS_PAY];\n vm.paramDataTemp = [];\n vm.donationTotal = 0;\n vm.warmth = false;\n vm.BankAccountId = '';\n vm.bpid = '';\n vm.accountSelected = {};\n vm.showContribution = false;\n vm.showValidation = false;\n vm.showDonationValidation = false;\n vm.message = '';\n vm.sucessStatus = '';\n vm.errorResult = '';\n vm.countButtonClick = 0;\n vm.displayDate = '';\n vm.displayAmount = '';\n vm.accountAddress = '';\n vm.negativeAmountSection = false;\n vm.otherAmount = '';\n $rootScope.bankData = '';\n $rootScope.defaultDate = false;\n vm.paymentMethod = {};\n vm.noSavedACH = false;\n vm.kubraerror = false;\n vm.payBillPageError = false;\n $rootScope.paymybillpage = true;\n $rootScope.noSavedACH = false;\n $rootScope.paymentSpinner = false;\n // $rootScope.isPMB = true;\n //new vars\n vm.balanceStorage.selectedDate = '';\n vm.selectedDate = '';\n $rootScope.accountNickName = '';\n $rootScope.accountNumber = '';\n vm.newAmountsArray = [];\n vm.guid = '';\n $rootScope.zeroDueFlag = false;\n vm.singleAccNegative = false;\n vm.multiAccZeroAmount = false;\n vm.disableSubmit = true;\n var invalidError = 'Invalid Request - Please verify your input data';\n $rootScope.isPayMyBill = false;\n vm.amountToPay = undefined;\n vm.amountLength = undefined;\n vm.lengthError = false;\n vm.savedOtherAmt = false;\n vm.checkSavedAmnt = false;\n vm.showModal = false;\n vm.totalNoWarmth = 0;\n vm.saveAmount = false;\n vm.checkForError = false;\n vm.getFullDue = 0;\n vm.checkLimit = undefined;\n vm.amtLimit = undefined;\n /* --------------Function Declarations-----------------------*/\n\n vm.addProgramContribution = addProgramContribution;\n vm.formatTotalAmount = formatTotalAmount;\n vm.returnToStep = returnToStep;\n vm.backToBills = backToBills;\n vm.formatLastFourDigits = formatLastFourDigits;\n vm.checkContribution = checkContribution;\n vm.paymentAmountModal = paymentAmountModal;\n vm.paymentDateModal = paymentDateModal;\n vm.paymentMethodModal = paymentMethodModal;\n vm.changeDate = changeDate;\n vm.submitPayment = submitPayment;\n vm.previous = previous;\n vm.onCancel = onCancel;\n vm.formatNewAmounts = formatNewAmounts;\n vm.getJurisdictions = getJurisdictions;\n vm.addValidation = addValidation;\n vm.checkAmoutPaid = checkAmoutPaid;\n vm.checkSubmitPayment = checkSubmitPayment;\n vm.checkAmountChange = checkAmountChange;\n vm.savePayment = savePayment;\n\n /* --------------Function Definitions-----------------------*/\n\n $scope.getLimits = function (amountLimit, extraAmountLimit, accLimit, nicknameLimit) {\n vm.checkLimit = parseInt(extraAmountLimit);\n vm.amtLimit = parseInt(amountLimit);\n sessionStorageService.set('getAmountLimit', amountLimit);\n sessionStorageService.set('getExtraAmountLimit', extraAmountLimit);\n sessionStorageService.set('getAccLimit', accLimit);\n sessionStorageService.set('getNameLimit', nicknameLimit);\n };\n function addProgramContribution(value, secValFromCDP) {\n console.log('addProgramContribution value - >', value);\n console.log('addProgramContribution secValFromCDP - >', secValFromCDP);\n if (value && parseFloat(Number(value.donationAmount.substring(1).replace(/,/g, '')).toFixed(_toFixed)) > 500) {\n vm.showDonationValidation = true;\n } else {\n vm.showDonationValidation = false;\n vm.disableSubmit = false;\n }\n if (vm.balanceStorage.totalNoWarmth) {\n vm.newTotalAmount = parseFloat(Number(vm.balanceStorage.totalNoWarmth) + Number(vm.balanceStorage.selectedAccounts[0].donationValue));\n } else {\n vm.newTotalAmount = parseFloat(vm.balanceStorage.totalAmount);\n }\n vm.balanceStorage.selectedAccounts.forEach(function (ele, index) {\n if (ele.id == undefined) {\n angular.forEach(vm.tempContributeOptions, function (valu) {\n if (ele.accountNumber === valu.contractAccount) {\n vm.balanceStorage.selectedAccounts[index].id = valu.id;\n vm.balanceStorage.selectedAccounts[index].jurisdiction = valu.jurisdiction;\n }\n });\n }\n if (value !== undefined && ele.id === value.id && ele.accountNumber === value.contractAccount) {\n ele.donationValue = value.donationAmount ? Number(value.donationAmount.substring(1).replace(/,/g, '')).toFixed(_toFixed) : 0;\n ele.totalDonationAmount = Number(ele.billAmount) < 0 ? (Number(ele.billAmount) - Number(ele.donationValue)).toFixed(_toFixed) : (Number(ele.billAmount) + Number(ele.donationValue)).toFixed(_toFixed);\n }\n });\n vm.balanceStorage.contributionForm = vm.form;\n changeAmount(vm.newTotalAmount);\n }\n function paymentAmountModal() {\n pushDL('pay-bill', 'edit', 'payment-amount');\n if (vm.balanceStorage.selectedAccounts.length === 1 && (vm.amountSelected == 1 || vm.negativeAmountSection)) {\n vm.enableInputAmountBox = true;\n vm.showValidation = false;\n } else modalService.paymentAmountModal();\n }\n function paymentDateModal() {\n pushDL('pay-bill', 'edit', 'payment-date');\n modalService.paymentDateModal();\n }\n function paymentMethodModal() {\n if (vm.noSavedACH) {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account');\n } else {\n pushDL('pay-bill', 'edit', 'bank-account');\n }\n modalService.paymentMethodModal();\n }\n function nextStep(value) {\n if (vm.newAmountsArray.length === 0) {\n if (vm.balanceStorage.newAmountsArray !== undefined) {\n vm.newAmountsArray = vm.balanceStorage.newAmountsArray;\n }\n }\n if (value) {\n // Run just when Next Step is True\n if (!vm.amountSelected) {\n vm.warmthValue = 0;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n vm.bindedAmounts = [];\n vm.totalNoWarmth = vm.newTotalAmount;\n }\n }\n vm.balanceStorage.shareWarmth = vm.warmthValue;\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\n vm.balanceStorage.amountSelected = vm.amountSelected;\n vm.balanceStorage.newAmounts = vm.bindedAmounts;\n vm.balanceStorage.totalNoWarmth = vm.totalNoWarmth;\n vm.balanceStorage.newAmountsArray = vm.newAmountsArray;\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.bindedAmounts && vm.bindedAmounts.length > 0) {\n vm.balanceStorage.selectedAccounts[index].billAmount = isNaN(vm.bindedAmounts[index].charAt(0)) ? vm.bindedAmounts[index].substring(1).replace(/,/g, '') : vm.bindedAmounts[index];\n }\n });\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n }\n function formatNewAmounts() {\n vm.balanceStorage.totalNoWarmth = isNaN(vm.balanceStorage.totalNoWarmth.charAt(0)) ? vm.balanceStorage.totalNoWarmth.substring(1).replace(/,/g, '') : vm.balanceStorage.totalNoWarmth;\n vm.inputAmountvalue[0] = vm.balanceStorage.totalNoWarmth;\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\n if (Number(vm.balanceStorage.totalNoWarmth <= 0)) {\n vm.disableSubmit = true;\n } else vm.disableSubmit = false;\n vm.balanceStorage.selectedAccounts[0].billAmount = vm.balanceStorage.totalNoWarmth;\n if (Number(vm.balanceStorage.selectedAccounts[0].donationValue) < 0 && vm.form.checkbox[0]) {\n vm.disableSubmit = true;\n } else {\n vm.balanceStorage.selectedAccounts[0].totalDonationAmount = Number(vm.balanceStorage.totalNoWarmth) + Number(vm.balanceStorage.selectedAccounts[0].donationValue);\n }\n\n //to remove the error when amount length is less than 6\n var amountPaid = vm.totalNoWarmth;\n vm.amountToPay = String(amountPaid).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.checkLimit) {\n vm.lengthError = true;\n } else {\n vm.lengthError = false;\n }\n sessionStorageService.set('lengthError', vm.lengthError);\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n checkAmoutPaid();\n }\n function formatTotalAmount(amount) {\n var formattedAmount = String(amount).split('.');\n if (formattedAmount[1]) {\n formattedAmount[1] = formattedAmount[1].length === 1 ? \"\".concat(formattedAmount[1], \"0\") : formattedAmount[1];\n } else {\n formattedAmount[1] = '00';\n }\n var formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\n return $sce.trustAsHtml(\"$\".concat(formattedIntegerAmount, \".\").concat(formattedAmount[1]));\n }\n function checkContribution(index) {\n vm.balanceStorage.contributionForm = vm.form;\n if (vm.form.donation[index] == undefined || vm.form.donation[index] == '') {\n vm.form.donation[index] = 0;\n }\n vm.balanceStorage.formIndex = index;\n if (!vm.form.checkbox[index]) {\n vm.form.donation[index] = 0;\n vm.contributeOptions[index].donationAmount = 0;\n addProgramContribution();\n }\n }\n function assignValues(myAccount) {\n vm.accountNickName = myAccount.BankDescription ? myAccount.BankDescription : 'Account';\n vm.routingNumber = myAccount.BankRoutingNumber;\n vm.lastFourDigits = myAccount.BankAccountNumber.substr(myAccount.BankAccountNumber.length - 4);\n vm.accountNumber = \"*****\".concat(vm.lastFourDigits);\n if (vm.balanceStorage.accountType) {\n vm.balanceStorage.accountType.forEach(function (item) {\n if (item.text === myAccount.BankAccountType) {\n vm.accountType = myAccount.BankAccountType;\n } else if (item.value === myAccount.BankAccountType) {\n vm.accountType = item.text;\n }\n });\n }\n $rootScope.accountNickName = vm.accountNickName;\n $rootScope.accountNumber = vm.accountNumber;\n }\n function backToBills() {\n $scope.$emit(assetService.balanceEvents.EDIT_BILLS, true);\n $state.go(assetService.balanceRouteStates.BILLS);\n }\n function changeAmount(newTotalAmount) {\n vm.tempTotalAmount = 0;\n vm.balanceStorage.selectedAccounts.forEach(function (ele, index) {\n vm.tempTotalAmount = Number(vm.tempTotalAmount) + (ele.totalDonationAmount ? Number(ele.totalDonationAmount) : 0);\n });\n vm.tempCheckbox = vm.form.checkbox.filter(function (e) {\n return e == true;\n });\n vm.tempCheckDonationValue = vm.contributeOptions.filter(function (item) {\n return (isNaN(item.donationAmount) ? Number(item.donationAmount.substr(1).replace(/,/g, '')) : item.donationAmount) >= 0 && (isNaN(item.donationAmount) ? Number(item.donationAmount.substr(1).replace(/,/g, '')) : item.donationAmount) <= 500;\n });\n if (vm.tempCheckDonationValue.length != vm.tempCheckbox.length) {\n vm.disableSubmit = true;\n } else {\n if (vm.balanceStorage.selectedAccounts.length === 1 && vm.balanceStorage.totalNoWarmth <= 0 && vm.balanceStorage.amountSelected !== '0') {\n vm.disableSubmit = true;\n } else {\n vm.disableSubmit = false;\n }\n }\n vm.balanceStorage.newTotalAmount = vm.tempTotalAmount > 0 ? vm.tempTotalAmount : parseFloat(newTotalAmount);\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\n }\n function formatLastFourDigits(number) {\n var lastDigits = String(number).slice(12, 16);\n return lastDigits;\n }\n function returnToStep(value) {\n $scope.$emit(assetService.balanceEvents.SET_STEP, {\n step: value\n });\n $state.go(vm.viewRoutes[value]);\n }\n function schedulePayment(paramData) {\n $rootScope.isPayMyBill = true;\n return payNowOrScheduledService.sitecore.payNowOrScheduled(paramData).then(function (result) {\n if (result === '') {\n $rootScope.paymentSpinner = false;\n vm.payBillPageError = true;\n $rootScope.isPayMyBill = false;\n } else {\n vm.successPayment = result;\n if (vm.form.checkbox.length > 0 && vm.showContribution) {\n _.forEach(vm.form.checkbox, function (value, index) {\n pushDL('pay-bill', \"share-the-light-|-\".concat(vm.contributeOptions[index].jurisCode.toLowerCase()), 'kpi');\n });\n }\n if (vm.balanceStorage.selectedAccounts.length > 1) {\n pushDL('pay-bill', 'success-|-multiple', 'kpi');\n pushVPV('/vpv/de/page/pay-bill/success/pay-my-bill/thank-you-for-payment/na/multiple');\n } else {\n pushDL('pay-bill', 'success-|-single', 'kpi');\n pushVPV('/vpv/de/page/pay-bill/success/pay-my-bill/thank-you-for-payment/na/single');\n }\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.successPayment.length > 0) {\n vm.successPayment.forEach(function (sElement, sIndex) {\n if (sElement.processedResult.accountNumber === element.accountNumber) {\n vm.balanceStorage.selectedAccounts[index].confirmationCode = sElement.processedResult.paymentId;\n vm.balanceStorage.selectedAccounts[index].cpiMessageDisplay = sElement.processedResult.metaData.cpiPostMessage ? sElement.processedResult.metaData.cpiPostMessage : vm.balanceStorage.selectedAccounts[index].message;\n }\n });\n }\n });\n if (result !== '' && result !== undefined && result !== null) {\n if (result.length > 0) {\n vm.errorResult = result[0].errorResult;\n vm.sucessStatus = result[0].processedResult.status;\n }\n }\n if (result.Error === invalidError) {\n $rootScope.paymentSpinner = false;\n vm.payBillPageError = true;\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $rootScope.isPayMyBill = false;\n }\n }, function (error) {\n $rootScope.isPayMyBill = false;\n $rootScope.paymentSpinner = false;\n });\n }\n function makeContribution() {\n _.forEach(vm.form.checkbox, function (value, index) {\n if (value) {\n var tempContriArray = vm.balanceStorage.selectedAccounts.filter(function (o1) {\n return o1.id === vm.contributeOptions[index].id && o1.billAmount > 0;\n });\n if (tempContriArray.length > 0) {\n var dataToPost = {\n action: assetService.serviceActions.makeOneTimeMonthlyContribution.Donation,\n businessPartnerId: vm.accountSelected.primaryBp,\n contractAccountId: vm.contributeOptions[index].contractAccount,\n programName: vm.contributeOptions[index].id,\n donationAmount: isNaN(tempContriArray[0].donationValue) ? isNaN(tempContriArray[0].donationValue.charAt(0)) ? tempContriArray[0].donationValue.substring(1).replace(/,/g, '') : String(tempContriArray[0].donationValue) : String(tempContriArray[0].donationValue),\n monthly: assetService.serviceActions.makeOneTimeMonthlyContribution.ONE_TIME_PAYMENT,\n numberMonths: '0'\n };\n vm.programsContributions[index] = {\n programName: vm.contributeOptions[index].name,\n donationAmount: isNaN(tempContriArray[0].donationValue) ? isNaN(tempContriArray[0].donationValue.charAt(0)) ? tempContriArray[0].donationValue.substring(1).replace(/,/g, '') : String(tempContriArray[0].donationValue) : String(tempContriArray[0].donationValue),\n contractAccountId: vm.contributeOptions[index].contractAccount,\n newAmount: vm.newTotalAmount,\n jurisdiction: tempContriArray[0].jurisdiction.replace(/[.]/g, '')\n };\n makeOneTimeMonthlyContribution(dataToPost);\n }\n // To do for make contributions\n }\n });\n vm.balanceStorage.programsContributions = vm.programsContributions;\n }\n function getJurisdictions() {\n if (vm.accJurisdiction[0].businessArea == 'FL01') {\n vm.jurisdiction = $rootScope.deFlorida;\n } else if (vm.accJurisdiction[0].businessArea === 'NC01' || vm.accJurisdiction[0].businessArea === 'SC01') {\n vm.jurisdiction = $rootScope.deCarolinas;\n } else if (vm.accJurisdiction[0].businessArea === 'SC02' || vm.accJurisdiction[0].businessArea === 'NC02') {\n vm.jurisdiction = $rootScope.deProgress;\n } else if (vm.accJurisdiction[0].businessArea == 'KY01') {\n vm.jurisdiction = $rootScope.deKentucky;\n } else if (vm.accJurisdiction[0].businessArea == 'OH01') {\n vm.jurisdiction = $rootScope.deOhio;\n } else if (vm.accJurisdiction[0].businessArea == 'IN01') {\n vm.jurisdiction = $rootScope.deIndiana;\n } else {\n vm.jurisdiction = '';\n }\n }\n function returnApplicablePrograms(data) {\n vm.loadingSpinner = true;\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(function (result) {\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\n vm.accJurisdiction = vm.balanceStorage.accountStatusByCA.filter(function (x) {\n return x.contractAccountNumber == result.d.Programtores_nav.results[0].ContractAccount;\n });\n getJurisdictions();\n vm.contributeOptionsArray.push({\n id: _temporalProgram[0].trim(),\n name: _temporalProgram[1].toLowerCase().split(' ').map(function (s) {\n return s.charAt(0).toUpperCase() + s.substring(1);\n }).join(' '),\n contractAccount: result.d.Programtores_nav.results[0].ContractAccount,\n jurisdiction: vm.jurisdiction,\n jurisCode: vm.accJurisdiction[0].businessArea,\n donationAmount: ''\n });\n vm.tempcontriarray = vm.contributeOptionsArray.filter(function (ele) {\n return ele.jurisdiction === $rootScope.deProgress;\n });\n if (vm.tempcontriarray.length > 0) {\n angular.forEach(vm.contributeOptionsArray, function (valu) {\n if (valu.id === 'ENF') {\n valu.jurisdiction = $rootScope.deProgress;\n }\n });\n }\n vm.tempContributeOptions = _toConsumableArray(vm.contributeOptionsArray);\n vm.contributeOptions = vm.contributeOptionsArray.filter(function (item, itemValue, element) {\n return element.map(function (elementValue) {\n return elementValue.id;\n }).indexOf(item.id) === itemValue;\n });\n angular.forEach(vm.tempContributeOptions, function (valu) {\n angular.forEach(vm.balanceStorage.selectedAccounts, function (item, index) {\n if (item.accountNumber === valu.contractAccount) {\n vm.balanceStorage.selectedAccounts[index].id = valu.id;\n vm.balanceStorage.selectedAccounts[index].jurisdiction = valu.jurisdiction;\n }\n });\n });\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n }, function (error) {\n //vm.loadingSpinner = false;\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n }\n function makeOneTimeMonthlyContribution(data) {\n return makeOneTimeMonthlyContributionService.sitecore.makeOneTimeMonthlyContribution(data).then(function (result) {\n vm.makeContributionsPayment = {\n replyCode: result.d.Message.ZreplyCode\n };\n }, function (error) {\n $rootScope.paymentSpinner = false;\n responseNotificationsService.errorResponse({\n vehicle: assetService.strings.TOAST,\n message: error && error.message ? error.message : '',\n pageTitle: assetService.strings.PAY_MY_BILL\n });\n });\n }\n function notificationError() {\n $rootScope.notifHeaders = $scope.analytics.notif_error[0];\n $rootScope.notifMessage = angular.element('#DuplicatePayment').val();\n $rootScope.primaryCtaLink = $scope.analytics.notif_error[2];\n $rootScope.primaryCtaLabel = $scope.analytics.notif_error[3];\n $rootScope.secondaryCtaLabel = $scope.analytics.notif_error[4];\n $rootScope.secondaryCtaLink = $scope.analytics.notif_error[5];\n }\n function addDataToSitecoreCache(payload) {\n return ccSitecoreGenericCachingService.addToSitecoreCache(payload).then(function (response) {\n return response;\n }, function () {});\n }\n function retrieveDataFromSitecoreCache(payload) {\n return ccSitecoreGenericCachingService.retrieveFromSitecoreCache(payload).then(function (response) {\n vm.bankData = response;\n assignValues(vm.bankData);\n return response;\n }, function () {});\n }\n function getPrepaidDetails(data) {\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(function (result) {\n _bankAccountsOriginal = angular.copy(result.d.PrepaidToBP.results[0].BPToBankDetail.results);\n vm.loadingSpinner = false;\n }, function (error) {\n vm.loadingSpinner = false;\n });\n }\n function loadBankDetails(data) {\n getPrepaidDetails(data).then(function () {\n if (_bankAccountsOriginal.length > 0) {\n vm.accountNickName = _bankAccountsOriginal[0].BankDescription, vm.accountNumber = _bankAccountsOriginal[0].BankAccountNumber, vm.bankAccountId = _bankAccountsOriginal[0].BankAccountId, vm.displayAccounts = true;\n vm.showAddNewAccount = false;\n var lastFourDigits = _bankAccountsOriginal[0].BankAccountNumber.substr(_bankAccountsOriginal[0].BankAccountNumber.length - 4);\n var accNumber = \"*****\".concat(lastFourDigits);\n vm.accountNumber = accNumber;\n $rootScope.accountNickName = _bankAccountsOriginal[0].BankDescription;\n $rootScope.accountNumber = accNumber;\n vm.balanceStorage.accountId = _bankAccountsOriginal[0].BankAccountId;\n } else {\n $rootScope.noSavedACH = true;\n vm.noSavedACH = true;\n }\n //gat-event\n if (vm.balanceStorage.selectedAccounts.length > 1) {\n if (vm.noSavedACH == true) {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/unsaved-ach-bank-details/na/multiple');\n } else {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/saved-ach-bank-details/na/multiple');\n }\n pushDL('pay-bill', 'intent-|-multiple', 'kpi');\n } else {\n if (vm.noSavedACH == true) {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/unsaved-ach-bank-details/na/single');\n } else {\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/saved-ach-bank-details/na/single');\n }\n pushDL('pay-bill', 'intent-|-single', 'kpi');\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $rootScope.paymentSpinner = false;\n });\n }\n vm.submitAmount = function ($event, isOnBlur) {\n if (isOnBlur && vm.balanceStorage.totalNoWarmth !== 0 && vm.balanceStorage.totalNoWarmth !== '0.00') {\n vm.enableInputAmountBox = false;\n } else if ($event.key === 'Enter' && vm.balanceStorage.totalNoWarmth !== 0 && vm.balanceStorage.totalNoWarmth !== '0.00') {\n vm.enableInputAmountBox = false;\n }\n if (vm.balanceStorage.totalNoWarmth.length > vm.checkLimit) {\n vm.enableInputAmountBox = true;\n }\n };\n\n //Function to show error when amount length is greater than 6\n function checkAmountChange() {\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\n var amountPaid = vm.totalNoWarmth;\n vm.amountToPay = String(amountPaid).split('');\n vm.amountLength = vm.amountToPay.length;\n if (vm.amountLength > vm.amtLimit) {\n vm.lengthError = true;\n } else {\n vm.lengthError = false;\n }\n }\n function addValidation() {\n var value = isNaN(vm.balanceStorage.totalNoWarmth) ? Number(vm.balanceStorage.totalNoWarmth.substring(1).replace(/,/g, '')) : vm.balanceStorage.totalNoWarmth;\n if (value <= 0) {\n vm.showValidation = true;\n } else {\n vm.showValidation = false;\n }\n }\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n var pushDL = function pushDL(category, action, label) {\n $rootScope.dataLayer.push({\n event: 'event-click',\n 'event-category': category,\n 'event-action': action,\n 'event-label': label,\n guid: vm.guid ? vm.guid : ''\n });\n };\n function setModels() {\n vm.cacheId = sessionStorageService.get('cacheId');\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n payNowstatus = sessionStorageService.get('disableContribution');\n if (payNowstatus !== null && payNowstatus !== undefined) {\n vm.isPayNow = payNowstatus;\n } else {\n vm.isPayNow = true;\n }\n vm.ACIvalidationErr = $rootScope.bankError;\n vm.noSavedACH = $rootScope.noSavedACH;\n vm.savedOtherAmt = sessionStorageService.get('savedOtherAmount');\n if (vm.savedOtherAmt == true) {\n vm.checkSavedAmnt = true;\n } else {\n vm.checkSavedAmnt = false;\n }\n if (vm.cacheId) {\n retrieveDataFromSitecoreCache(vm.cacheId);\n }\n if (vm.balanceStorage.contributionForm === undefined) {\n vm.form.checkbox = [];\n }\n if (Number(vm.balanceStorage.newTotalAmount) < Number(vm.balanceStorage.totalAmount)) {\n vm.showContribution = false;\n } else {\n vm.showContribution = true;\n }\n if (!$rootScope.zeroDueFlag) {\n vm.disableSubmit = false;\n }\n if (Number(vm.balanceStorage.newTotalAmount) > 0 || Number(vm.balanceStorage.totalNoWarmth) > 0) {\n vm.disableSubmit = false;\n } else {\n vm.disableSubmit = true;\n }\n }\n function load() {\n vm.guid = angular.element('#guid').val();\n // First: Load sessionStorageService\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n //To be used in PaymentAmount\n sessionStorageService.set(assetService.storageKeys.filterAmountCheck, false);\n if (Number(vm.balanceStorage.newTotalAmount) == 0) {\n vm.disableSubmit = true;\n } else vm.disableSubmit = false;\n vm.accountLength = sessionStorageService.get(assetService.storageKeys.accountLength);\n if (vm.balanceStorage.selectedAccounts.length > 1 && Number(vm.balanceStorage.newTotalAmount) == 0) {\n $rootScope.zeroDueFlag = true;\n vm.multiAccZeroAmount = true;\n }\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.balanceStorage.selectedAccounts.length > 0) {\n vm.balanceStorage.selectedAccounts[index].billAmount = vm.balanceStorage.selectedAccounts[index].amount;\n }\n });\n if (vm.balanceStorage.selectedAccounts.length == 1 && vm.balanceStorage.totalAmount <= 0) {\n vm.singleAccNegative = true;\n }\n if (vm.balanceStorage.selectedAccounts.length === 1 && (vm.amountSelected == 1 || vm.singleAccNegative)) {\n vm.enableInputAmountBox = true;\n vm.disableSubmit = true;\n }\n if (Number(vm.balanceStorage.totalAmount) <= Number(vm.balanceStorage.newTotalAmount)) {\n vm.showContribution = true;\n if (vm.balanceStorage.contributionForm !== undefined) {\n vm.donationTotal = 0;\n vm.balanceStorage.contributionForm.checkbox.forEach(function (item, index) {\n if (item !== undefined && item == true) {\n vm.donationTotal += isNaN(vm.balanceStorage.contributionForm.donation[index].charAt(0)) ? Number(vm.balanceStorage.contributionForm.donation[index].substring(1).replace(/,/g, '')) : Number(vm.balanceStorage.contributionForm.donation[index]);\n }\n });\n } else {\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n element.donationValue = 0;\n });\n }\n } else {\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n element.donationValue = 0;\n });\n }\n vm.balanceStorage.selectedAccounts.forEach(function (element, index) {\n if (vm.balanceStorage.newAmountsArray !== undefined && vm.balanceStorage.newAmountsArray.length > 0) {\n vm.balanceStorage.newAmountsArray.forEach(function (sElement, sIndex) {\n if (sElement != null) {\n if (vm.balanceStorage.selectedAccounts[index].accountNumber === vm.balanceStorage.newAmountsArray[sIndex].id) {\n vm.bindedAmounts[index] = \"\".concat(vm.balanceStorage.newAmountsArray[sIndex].bill);\n vm.inputAmount[index] = vm.bindedAmounts[index];\n } else if (vm.bindedAmounts[index] === undefined) {\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = \"\".concat(element.amount);\n }\n vm.inputAmount[index] = vm.bindedAmounts[index];\n }\n }\n });\n } else if (vm.balanceStorage.newAmounts !== undefined) {\n if (vm.balanceStorage.newAmounts[index] !== undefined) {\n vm.bindedAmounts[index] = \"\".concat(vm.balanceStorage.newAmounts[index]);\n } else {\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = \"\".concat(element.amount);\n }\n }\n vm.inputAmount[index] = vm.bindedAmounts[index];\n vm.newTotalAmount += Number(element.amount);\n } else {\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.bindedAmounts[index] = '0';\n } else {\n vm.bindedAmounts[index] = \"\".concat(element.amount);\n }\n vm.inputAmount[index] = vm.bindedAmounts[index];\n vm.newTotalAmount += Number(element.amount);\n }\n if (vm.balanceStorage.amountSelected !== undefined && vm.balanceStorage.amountSelected !== '') {\n vm.amountSelected = vm.balanceStorage.amountSelected;\n $scope.$parent.vm.mainBtnActivate = false;\n } else {\n vm.amountSelected = '';\n }\n if (vm.amountSelected === '1') {\n vm.amountSection = true;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n } else {\n vm.amountSection = false;\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\n }\n if (element.amount <= 0) {\n vm.negativeAmountSection = true;\n vm.balanceStorage.totalNoWarmth = vm.balanceStorage.newTotalAmount;\n }\n });\n vm.bpid = vm.balanceStorage.globalSelectedAccount.businessPartner;\n /* get bills dynamically from session storage */\n vm.bills = _.map(vm.balanceStorage.selectedAccounts, function (item) {\n return {\n contractAccountId: item.accountNumber\n };\n });\n var promises = [];\n _.forEach(vm.bills, function (account) {\n promises.push(returnApplicablePrograms(account));\n });\n commonService.executePromises(promises).then(function () {\n // --Start Validation: If balanceStorage has already data\n if (vm.balanceStorage.dateSelected !== undefined) {\n if (vm.balanceStorage.dateSelected.index === _otherDateValue) {\n vm.otherPaymentDate = true;\n } else {\n vm.otherPaymentDate = false;\n }\n } else {\n vm.otherPaymentDate = false;\n }\n if (vm.balanceStorage.newTotalAmount !== undefined) {\n vm.newPaymentAmount = true;\n } else {\n vm.newPaymentAmount = false;\n }\n if (vm.balanceStorage.shareWarmth !== undefined) {\n vm.warmth = true;\n } else {\n vm.warmth = false;\n }\n if (vm.balanceStorage.contributionForm !== undefined) {\n vm.donationTotal = 0;\n vm.balanceStorage.contributionForm.checkbox.forEach(function (item, index) {\n if (item !== undefined && item == true) {\n vm.donationTotal += isNaN(vm.balanceStorage.contributionForm.donation[index].charAt(0)) ? Number(vm.balanceStorage.contributionForm.donation[index].substring(1).replace(/,/g, '')) : Number(vm.balanceStorage.contributionForm.donation[index]);\n vm.form.checkbox[index] = true;\n vm.form.donation[index] = isNaN(vm.balanceStorage.contributionForm.donation[index].charAt(0)) ? Number(vm.balanceStorage.contributionForm.donation[index].substring(1).replace(/,/g, '')) : Number(vm.balanceStorage.contributionForm.donation[index]);\n }\n });\n if ((vm.donationTotal + Number(vm.balanceStorage.totalAmount)).toFixed(_toFixed) === vm.balanceStorage.newTotalAmount) {\n vm.showContribution = true;\n }\n } else {\n vm.form = {\n checkbox: [],\n donation: []\n };\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n });\n }\n function changeDate() {\n if (vm.balanceStorage.calendarDate && vm.balanceStorage.dateSelected.index === '2') {\n vm.selectedDate = vm.balanceStorage.calendarDate.replace(/ /g, '');\n var currentDate = new Date();\n var d = String(currentDate.getDate()).padStart(2, '0');\n var m = String(currentDate.getMonth() + 1).padStart(2, '0');\n var y = currentDate.getFullYear();\n var dateFormat = m + '/' + d + '/' + y;\n if (dateFormat == vm.selectedDate) {\n var currESTDate = currentDate.toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\n }\n } else if (vm.balanceStorage.dateSelected && vm.balanceStorage.dateSelected.index === '0') {\n // var vm.selectedDate = vm.balanceStorage.displayDate;\n var _currentDate = new Date();\n var currESTDate = _currentDate.toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\n vm.displayDate = vm.selectedDate;\n } else if (vm.balanceStorage.dateSelected && vm.balanceStorage.dateSelected.index === '1') {\n var _currentDate2 = new Date();\n var currESTDate = _currentDate2.toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n vm.balanceStorage.selectedAccounts.forEach(function (account) {\n account.dueDate = new Date(account.dueDate).getTime() > _currentDate2.getTime() ? account.dueDate : moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\n });\n }\n }\n $scope.$on(assetService.events.refreshPaymentPage, function () {\n setModels();\n });\n $scope.$on(assetService.events.submitPayment, function () {\n submitPayment();\n });\n $scope.$on(assetService.events.kubraDuplicateErrorPayBill, function (event, data) {\n if (data) {\n if (data.errorCode === 'CD002') {\n vm.kubraerror = true;\n $rootScope.paymentSpinner = false;\n //for GAT\n pushVPV('/vpv/de/page/pay-bill/error/pay-my-bill/na/na/' + data.errorCode);\n var errorMsg = 'We are unable to process payments at this time.';\n pushDL('pay-bill_error', data.errorCode + '-|-' + $rootScope.dataLayerFormat(errorMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.payNowOrScheduled), 'pay-my-bill');\n }\n if (data.errorVal) {\n vm.payBillPageError = true;\n $rootScope.paymentSpinner = false;\n broadcastService.pageNotificationTriggered({\n type: 'RESET'\n });\n //for GAT\n pushVPV('/vpv/de/page/pay-bill/error/pay-my-bill/na/na/' + 'not-set');\n var errorMsg = 'We are unable to process payments at this time.';\n pushDL('pay-bill_error', 'not-set' + '-|-' + $rootScope.dataLayerFormat(errorMsg) + '-|-' + \"\".concat(assetService.sitecoreEndpoints.payNowOrScheduled), 'pay-my-bill');\n }\n }\n });\n function onCancel() {\n window.location.href = '/my-account/Dashboard';\n }\n function previous() {\n if (vm.accountLength !== null && vm.accountLength.length > 1 && vm.accountLength.length <= 20) {\n $state.go(assetService.balanceRouteStates.BILLS);\n } else {\n vm.balanceStorage.dateSelected = undefined;\n vm.balanceStorage.totalNoWarmth = undefined;\n vm.balanceStorage.contributionForm = undefined;\n vm.balanceStorage.newAmountsArray = undefined;\n vm.balanceStorage.newAmounts = undefined;\n vm.balanceStorage.newTotalAmount = vm.balanceStorage.totalAmount;\n vm.balanceStorage.selectedAccounts[0].totalDonationAmount = undefined;\n vm.form.checkbox = [];\n vm.balanceStorage.amountSelected = undefined;\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n $state.go(assetService.balanceRouteStates.HOW_TO_PAY);\n }\n }\n\n //Function to check if amount entered is greater than due\n function checkAmoutPaid() {\n var totalDueAmt = vm.balanceStorage.totalAmount;\n var totalAmtToPay = vm.balanceStorage.totalNoWarmth;\n if (totalAmtToPay > totalDueAmt) {\n vm.checkSavedAmnt = true;\n } else {\n vm.checkSavedAmnt = false;\n }\n sessionStorageService.set('savedOtherAmount', vm.checkSavedAmnt);\n if (vm.checkSavedAmnt == true || vm.lengthError == true) {\n vm.checkForError = true;\n } else {\n vm.checkForError = false;\n }\n }\n function savePayment() {\n if (vm.lengthError == false && vm.checkSavedAmnt == true) {\n checkSubmitPayment();\n } else {\n document.getElementById('noBalance').focus();\n }\n }\n\n //Function to show the modal when amount is greater than due\n function checkSubmitPayment() {\n if (vm.checkSavedAmnt == true) {\n vm.showModal = true;\n } else {\n vm.showModal = false;\n }\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n modalService.checkSubmitPayment();\n }\n function submitPayment() {\n addProgramContribution();\n $rootScope.paymentSpinner = true;\n $window.scrollTo(0, 0);\n // $scope.$on(assetService.balanceEvents.SAVE_STEPS, () => {\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n notificationError();\n vm.countButtonClick += 1;\n //This needs to be checked\n if (vm.countButtonClick == 1) {\n $scope.$parent.vm.mainBtnActivate = true;\n } else {\n $scope.$parent.vm.mainBtnActivate = false;\n }\n changeDate();\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n var _businessPartnerId = orgBP ? orgBP : relatedBP ? relatedBP : vm.balanceStorage.globalSelectedAccount.businessPartner;\n vm.paramDataTemp = _.map(vm.balanceStorage.selectedAccounts, function (bill) {\n var paymentDate = vm.selectedDate;\n if (vm.balanceStorage.dateSelected && vm.balanceStorage.dateSelected.index === '1') {\n paymentDate = new Date(bill.dueDate) < new Date() ? moment(new Date().toLocaleString('en-US', {\n timeZone: 'America/New_York'\n }), 'MM/DD/YYYY').format('MM/DD/YY') : bill.dueDate;\n }\n return {\n language: assetService.strings.EN,\n BusinessPartner: _businessPartnerId,\n clientReferenceId: '',\n payType: {\n mode: assetService.strings.BANK_ACCOUNT,\n routing: assetService.strings.STANDARD\n },\n // vm.balanceStorage.newTotalAmount,\n amount: vm.balanceStorage.selectedAccounts.length > 1 ? bill.donationValue ? Number(bill.billAmount) <= 0 ? (Number(bill.billAmount) - Number(bill.donationValue)).toFixed(_toFixed) : (Number(bill.billAmount) + Number(bill.donationValue)).toFixed(_toFixed) : String(bill.billAmount) : vm.balanceStorage.newTotalAmount,\n date: paymentDate || (new Date(bill.dueDate) < new Date() ? moment(new Date().toLocaleString('en-US', {\n timeZone: 'America/New_York'\n }), 'MM/DD/YYYY').format('MM/DD/YY') : bill.dueDate),\n accountNumber: bill.accountNumber ? bill.accountNumber : '',\n payer: {\n payerName: \"\".concat(vm.balanceStorage.globalSelectedAccount.payerFirstName, \" \").concat(vm.balanceStorage.globalSelectedAccount.payerLastName) ? \"\".concat(vm.balanceStorage.globalSelectedAccount.payerFirstName, \" \").concat(vm.balanceStorage.globalSelectedAccount.payerLastName) : '',\n eMail: vm.balanceStorage.currentUser.emailId ? vm.balanceStorage.currentUser.emailId : ''\n },\n paySource: {\n channel: {\n type: assetService.strings.ENROLLED,\n enrolled: assetService.strings.WEB,\n unEnrolled: assetService.strings.NONE\n }\n },\n sapWalletProfile: {\n sapBankAccountId: vm.balanceStorage.accountId,\n sapBankBp: _businessPartnerId\n }\n };\n });\n if (vm.form.checkbox.length > 0 && vm.form.donation.length > 0 && vm.showContribution) {\n makeContribution();\n vm.paramDataTemp = _.filter(vm.paramDataTemp, function (account) {\n return account.amount > 0;\n });\n schedulePayment(vm.paramDataTemp).then(function () {\n if (vm.errorResult === null && vm.sucessStatus === 'SCHEDULED') {\n sessionStorageService.set('cacheId', vm.BankAccountId);\n $state.go(assetService.balanceRouteStates.SUCCESS_PAY);\n }\n });\n } else {\n vm.paramDataTemp = _.filter(vm.paramDataTemp, function (account) {\n return account.amount > 0;\n });\n schedulePayment(vm.paramDataTemp).then(function () {\n if (vm.errorResult === null && vm.sucessStatus === 'SCHEDULED') {\n sessionStorageService.set('cacheId', vm.BankAccountId);\n $state.go(assetService.balanceRouteStates.SUCCESS_PAY);\n }\n });\n }\n sessionStorageService.set(assetService.storageKeys.balanceStorage, vm.balanceStorage);\n // });\n }\n $scope.$watch('programForm.$invalid', function (data) {\n // Always observe the value from the form to send the disable\n $scope.$parent.vm.mainBtnActivate = data;\n });\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n $rootScope.paymentSpinner = true;\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n vm.accountSelected = sessionStorageService.get(assetService.storageKeys.selectedAddressData).accountSelected;\n var relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBPNumber);\n var orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\n var data = {\n businessPartnerId: orgBP ? orgBP : relatedBP ? relatedBP : vm.accountSelected.primaryBp,\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber\n };\n vm.acctNickName = vm.balanceStorage.selectedAccounts[0].accountNickname;\n vm.acctAddress = vm.balanceStorage.selectedAccounts[0].address;\n vm.acctNo = vm.balanceStorage.selectedAccounts[0].accountNumber;\n vm.tooltipMessage = vm.balanceStorage.selectedAccounts[0].message;\n var currentDate = new Date();\n var currESTDate = currentDate.toLocaleString('en-US', {\n timeZone: 'America/New_York'\n });\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\n loadBankDetails(data);\n load();\n };\n init();\n}\napp.controller('SubmitPayment', SubmitPayment);\nSubmitPayment.$inject = ['sessionStorageService', 'assetService', '$scope', '$rootScope', '$filter', '$sce', 'commongaTaggingService', 'broadcastService', '$modalInstance', '$window'];\nfunction SubmitPayment(sessionStorageService, assetService, $scope, $rootScope, $filter, $sce, commongaTaggingService, broadcastService, $modalInstance, $window) {\n /* --------------Gloabl Vars-----------------------*/\n var vm = this;\n $rootScope.apiValidation = false;\n\n /* --------------Function Declarations-----------------------*/\n vm.closeModal = closeModal;\n vm.makePayment = makePayment;\n vm.updatePayment = updatePayment;\n vm.paymentSubmit = paymentSubmit;\n\n /* --------------Function Definitions-----------------------*/\n\n var pushVPV = function pushVPV(vpv) {\n $rootScope.dataLayer.push({\n event: 'send-VPV',\n 'vpv-name': vpv\n });\n };\n function closeModal() {\n broadcastService.closePaymentModal();\n $modalInstance.close();\n }\n function makePayment() {\n broadcastService.submitPaymentButton();\n closeModal();\n $window.scrollTo(0, 0);\n }\n function updatePayment() {\n broadcastService.savePaymentButton();\n $modalInstance.close();\n }\n function paymentSubmit(a) {\n if (a == 'PayMyBill') {\n makePayment();\n } else if (a == 'ManageSchedulePay') {\n updatePayment();\n }\n }\n function load() {\n vm.balanceStorage = sessionStorageService.get(assetService.storageKeys.balanceStorage);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n pushVPV('/vpv/de/lite-auth/pay-bill/load/payment-amount/payment-creates-credit-balance');\n load();\n };\n init();\n}\napp.controller('bpBannerController', bpBannerController);\nbpBannerController.$inject = ['$log', '$scope', 'assetService', 'getAccountConditionService', 'sessionStorageService'];\nfunction bpBannerController($log, $scope, assetService, getAccountConditionService, sessionStorageService) {\n /** Scope Vars */\n\n var vm = this;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var params = {};\n var rc_UpdatePhoneNumber = '009';\n var noPhoneNumberFlag = 'No_Phone_Number_Flag';\n var rc_UpdateEmail = '009';\n\n /** Global Vars */\n vm.response = {\n displayBPBanner: false,\n message: null,\n ctaLink: {\n url: null,\n label: null\n }\n };\n vm.errorMsg = assetService.messageType.error;\n vm.informationalMsg = assetService.messageType.informational;\n vm.successMsg = assetService.messageType.success;\n vm.msgType = null;\n vm.loadingSpinner = true;\n\n /** Watchers */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n vm.loadingSpinner = true;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo && globalAccountInfo.hasOwnProperty('accountSelected')) {\n if (globalAccountInfo.accountSelected.length) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n load();\n }\n }\n });\n\n /** Function Definitions */\n function load() {\n var params = {\n contractAccountId: globalSelectedAccount.accountNum\n };\n getAccountCondition(params).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function getAccountCondition(data) {\n return getAccountConditionService.sitecore.accountCondition(data).then(function (result) {\n var updatePhoneNumber = _.filter(_.map(result.ReturnCodes, function (returnCode) {\n return {\n message: returnCode.ContractAccounts.Response[1].Value\n };\n }), function (returnCode) {\n return returnCode.returnCode.length && returnCode.ReturnCode === rc_UpdatePhoneNumber && returnCode.ContractAccounts.Response.length && returnCode.ContractAccounts.Response[0].Name === noPhoneNumberFlag && returnCode.ContractAccounts.Response[0].Value === 'X';\n });\n var response = _.map(result.getAccountAndBillingInfoResList[0].messageList, function (msg) {\n return {\n displayBPBanner: true,\n message: msg.message\n };\n });\n vm.response = response[0];\n vm.loadingSpinner = false;\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n\n /** Initialize */\n var init = function init() {};\n init();\n}\napp.controller('caBannerController', caBannerController);\ncaBannerController.$inject = ['$log', '$scope', 'assetService', 'getAccountBalanceForRegularAccountService', 'sessionStorageService', '$rootScope'];\nfunction caBannerController($log, $scope, assetService, getAccountBalanceForRegularAccountService, sessionStorageService, $rootScope) {\n /** Scope Vars */\n\n var vm = this;\n vm.displayCABanner = false;\n var globalAccountInfo = {};\n var globalSelectedAccount = {};\n var params = {};\n /** Global Vars */\n vm.response = {\n displayCABanner: false,\n message: null,\n ctaLink: {\n url: null,\n label: null\n }\n };\n vm.errorMsg = assetService.messageType.error;\n vm.informationalMsg = assetService.messageType.informational;\n vm.successMsg = assetService.messageType.success;\n vm.msgType = vm.errorMsg;\n vm.loadingSpinner = true;\n\n /** Watchers */\n $scope.$on(assetService.events.globalSwitcherAccount, function () {\n // Global Switcher Account\n vm.loadingSpinner = true;\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\n if (globalAccountInfo && globalAccountInfo.hasOwnProperty('accountSelected')) {\n if (globalAccountInfo.accountSelected) {\n globalSelectedAccount = globalAccountInfo.accountSelected;\n load();\n }\n }\n });\n\n /** Function Definitions */\n function load() {\n var params = {\n accountList: [{\n contractAccountNumber: globalSelectedAccount.accountNum,\n zipCode: globalSelectedAccount.zipCode\n }]\n };\n getAccountBalanceForRegularAccount(params).then(function () {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n function getAccountBalanceForRegularAccount(data) {\n // check if value exists in rootScope\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\n var result = $rootScope.accountBalanceResult;\n setAccountBalanceModel(result);\n return new Promise(function (resolve) {\n resolve();\n });\n }\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(data).then(function (result) {\n setAccountBalanceModel(result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }\n function setAccountBalanceModel(result) {\n var msgPriority = result.getAccountAndBillingInfoResList[0].messageList[0].messagePriority;\n var acountInfoRestSelected = result.getAccountAndBillingInfoResList.filter(function (account) {\n return account.contractAccountNumber == globalSelectedAccount.accountNum;\n });\n if (acountInfoRestSelected) {\n if (acountInfoRestSelected[0].messageList.length > 0 && acountInfoRestSelected[0].messageList[0].messageCode !== '80 ' && acountInfoRestSelected[0].messageList[0].messageCode !== 'PO' && acountInfoRestSelected[0].messageList[0].messagePriority === 1000 && msgPriority !== null && msgPriority !== '') {\n var response = _.map(acountInfoRestSelected[0].messageList, function (msg) {\n return {\n displayCABanner: true,\n message: msg.message\n };\n });\n vm.response = response[0];\n vm.displayCABanner = true;\n } else {\n vm.displayCABanner = false;\n }\n vm.loadingSpinner = false;\n }\n }\n\n /** Initialize */\n var init = function init() {};\n init();\n}\napp.controller('FPDashboardController', FPDashboardController);\nFPDashboardController.$inject = ['$log', '$location', 'assetService', 'apiConfigService', 'apiApigeeConfigService', 'FPAddendumService', 'FPAppService', 'FPBroadcastService', 'FPCurrentUserService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'sessionStorageService', 'FPSitecoreServices', 'acceptedOrdersWebWorkerService', 'invoiceOrdersWebWorkerService', 'getCEPAddendumService', 'getCEPCompanyDetailsService', 'getCEPUsersService'];\nfunction FPDashboardController($log, $location, assetService, apiConfigService, apiApigeeConfigService, addendumService, appService, broadcastService, currentUserService, commonService, dtoService, indexedDbService, sessionStorageService, sitecoreServices, acceptedOrdersWebWorkerService, invoiceOrdersWebWorkerService, getCEPAddendumService, getCEPCompanyDetailsService, getCEPUsersService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _acceptedOrders = [];\n var _addendum = {};\n var _baseUrl = window.location.origin;\n var _errorsPageUrl = assetService.pageUrls.errorPage;\n var _invoiceOrders = [];\n var _roleContractor = assetService.userRoles.contractor;\n var _roleTechnician = assetService.userRoles.technician;\n var _user = {};\n var _users = [];\n\n /* --------------Gloabl Vars-----------------------*/\n vm.acceptedOrdersLoaded = false;\n vm.cdpUserId = null;\n vm.clearIndexedDb = false;\n vm.currentUserRole = currentUserService.getUserRole();\n vm.loaded = false;\n vm.loadingSpinner = true;\n vm.invoiceOrdersLoaded = false;\n vm.isContractor = false;\n vm.serviceHost = null;\n vm.serviceOrder = null;\n vm.sessionCdpUserId = null;\n vm.showOrdersRequest = false;\n vm.workOrderHeader = {};\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Broadcast Watchers-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n appService.initDataLoad();\n var promises = [getAddendum(), getCompanyDetails(), getUsers()];\n commonService.executePromises(promises).then(function () {\n broadcastService.companyDetailsLoaded();\n broadcastService.usersLoaded();\n var qPromises = addendumService.parseAddendumIndexedDb(_addendum);\n commonService.executePromises(qPromises).then(function () {\n var _dataObj = appService.getDataLoad();\n _dataObj.companyDetails = true;\n _dataObj.addendum = true;\n _dataObj.users = true;\n if (!appService.validateDataLoad(_dataObj)) {\n appService.setDataLoad(_dataObj);\n }\n broadcastService.addendumLoaded();\n var queue = [];\n queue.push(indexedDbService.getAcceptedOrders().then(function (result) {\n if (result.length === 0) {\n getAcceptedOrders();\n } else {\n var _dataObj2 = appService.getDataLoad();\n _dataObj2.acceptedOrders = true;\n if (!appService.validateDataLoad(_dataObj2)) {\n appService.setDataLoad(_dataObj2);\n }\n broadcastService.acceptedOrdersLoaded();\n }\n }));\n queue.push(indexedDbService.getInvoiceOrders().then(function (result) {\n if (result.length === 0) {\n getInvoiceOrders();\n } else {\n var _dataObj3 = appService.getDataLoad();\n _dataObj3.acceptedOrders = true;\n if (!appService.validateDataLoad(_dataObj3)) {\n appService.setDataLoad(_dataObj3);\n }\n broadcastService.invoiceOrdersLoaded();\n }\n }));\n commonService.executePromises(queue).then(function (result) {}, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n });\n function getAddendum() {\n return getCEPAddendumService.sitecore.getCEPAddendum(vm.currentUser).then(function (result) {\n _addendum = dtoService.validateFullAddendum(result.addendum);\n addendumService.parseFullAddendum(_addendum);\n }, function (error) {\n s;\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getAcceptedOrders() {\n setFlag(assetService.storageKeys.toggleFlags.acceptedOrders);\n var url = null;\n if (assetService.apiConfig.useLocalHost) {\n url = apiApigeeConfigService.get.getCEPAcceptedOrdersUrl(vm.currentUser);\n } else {\n url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPAcceptedOrdersUrl());\n }\n return acceptedOrdersWebWorkerService.callWebWorker(url).then(function (result) {\n if (result.data.serviceOrders) {\n // Temp solution\n indexedDbService.putAcceptedOrders(result.data.serviceOrders).then(function (result) {\n var _dataObj = appService.getDataLoad();\n _dataObj.acceptedOrders = true;\n if (!appService.validateDataLoad(_dataObj)) {\n appService.setDataLoad(_dataObj);\n }\n broadcastService.acceptedOrdersLoaded();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getInvoiceOrders() {\n setFlag(assetService.storageKeys.toggleFlags.invoiceOrders);\n var url = null;\n if (assetService.apiConfig.useLocalHost) {\n url = apiApigeeConfigService.get.getCEPInvoiceOrdersUrl(vm.currentUser);\n } else {\n url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPInvoiceOrdersUrl());\n }\n return invoiceOrdersWebWorkerService.callWebWorker(url).then(function (result) {\n if (result.data.serviceOrders) {\n // Temp solution\n indexedDbService.putInvoiceOrders(result.data.serviceOrders).then(function (result) {\n var _dataObj = appService.getDataLoad();\n _dataObj.acceptedOrders = true;\n if (!appService.validateDataLoad(_dataObj)) {\n appService.setDataLoad(_dataObj);\n }\n broadcastService.invoiceOrdersLoaded();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getCompanyDetails() {\n return getCEPCompanyDetailsService.sitecore.getCEPCompanyDetails(vm.currentUser).then(function (result) {\n sessionStorageService.set(assetService.storageKeys.widgetsData.companyDetails, result);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getUsers() {\n setFlag(assetService.storageKeys.toggleFlags.users);\n return getCEPUsersService.sitecore.getCEPUsers(vm.currentUser).then(function (result) {\n // _users = result.users;\n _users = result.users;\n var currentUser = _.find(_users, function (user) {\n return user.cdpId === vm.cdpUserId;\n });\n currentUserService.setUserName(currentUser.name);\n _.forEach(_users, function (user) {\n user.toggleFlag = sessionStorageService.get(assetService.storageKeys.toggleFlags.users);\n });\n sessionStorageService.set(assetService.storageKeys.widgetsData.users, _users);\n _user = _.find(_users, function (user) {\n return user.cdpId === vm.cdpUserId;\n });\n if (_user) {\n if (_user.role.toLowerCase() === _roleContractor) {\n vm.isContractor = true;\n vm.currentUserRole = assetService.userTypes.CONTRACTOR;\n currentUserService.setUserRole(assetService.userTypes.CONTRACTOR);\n } else if (_user.role.toLowerCase() === _roleTechnician) {\n vm.isContractor = false;\n vm.currentUserRole = assetService.userTypes.TECHNICIAN;\n currentUserService.setUserRole(assetService.userTypes.TECHNICIAN);\n } else {\n vm.currentUserRole = assetService.strings.UNAUTHORIZED;\n currentUserService.setUserRole(assetService.strings.UNAUTHORIZED);\n if (assetService.apiConfig.showAppErrors) $log.error(assetService.errors.userNotAuthorized);\n }\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setFlag(flag) {\n var toggleFlag = sessionStorageService.get(flag);\n toggleFlag = !toggleFlag ? '1' : toggleFlag === 1 ? '0' : '1';\n sessionStorageService.set(flag, toggleFlag);\n }\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n vm.sessionCdpUserId = currentUserService.getCdpUserId();\n if (assetService.apiConfig.useLocalHost) {\n vm.currentUser = {\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpUserId: $location.search().cdpId // Get Primary Bp\n };\n indexedDbService.ensureDb().then(function () {\n vm.cdpUserId = vm.currentUser.cdpUserId;\n sessionStorageService.set(assetService.storageKeys.cdpUserId, vm.cdpUserId);\n if (vm.sessionCdpUserId && vm.cdpUserId !== vm.sessionCdpUserId) {\n if (vm.clearIndexedDb) {\n sessionStorageService.clear();\n var qPromises = [indexedDbService.clearAcceptedOrders(), indexedDbService.clearInvoiceOrders(), indexedDbService.clearCompanyOverview(), indexedDbService.clearUsers(), indexedDbService.clearCancelledReasonTypes(), indexedDbService.clearDeclinedReasonTypes(), indexedDbService.clearStatusTypes(), indexedDbService.clearSRResolutionTypes(), indexedDbService.clearSRRepairTypes(), indexedDbService.clearSRStatusTypes(), indexedDbService.clearWOResolutionTypes(), indexedDbService.clearWOStatusTypes()];\n commonService.executePromises(qPromises).then(function () {\n vm.loaded = true;\n load();\n });\n }\n } else {\n vm.loaded = true;\n load();\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n var getHost = function getHost() {\n return sitecoreServices.getApigeeAccessInfo().then(function (result) {\n sessionStorageService.set(assetService.storageKeys.serviceHost, result.ServiceHost);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n var getCdpId = function getCdpId() {\n return sitecoreServices.getCdpId().then(function (result) {\n vm.cdpUserId = result;\n sessionStorageService.set(assetService.storageKeys.cdpUserId, result);\n if (vm.sessionCdpUserId && vm.cdpUserId !== vm.sessionCdpUserId) {\n vm.clearIndexedDb = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n var promises = [getHost(), getCdpId(), indexedDbService.ensureDb()];\n commonService.executePromises(promises).then(function () {\n if (vm.clearIndexedDb) {\n sessionStorageService.clear();\n var qPromises = [indexedDbService.clearAcceptedOrders(), indexedDbService.clearInvoiceOrders(), indexedDbService.clearCompanyOverview(), indexedDbService.clearUsers(), indexedDbService.clearCancelledReasonTypes(), indexedDbService.clearDeclinedReasonTypes(), indexedDbService.clearStatusTypes(), indexedDbService.clearSRResolutionTypes(), indexedDbService.clearSRRepairTypes(), indexedDbService.clearSRStatusTypes(), indexedDbService.clearWOResolutionTypes(), indexedDbService.clearWOStatusTypes()];\n commonService.executePromises(qPromises).then(function () {\n // re-init session vars\n sessionStorageService.set(assetService.storageKeys.cdpUserId, vm.cdpUserId);\n vm.loaded = true;\n load();\n });\n } else {\n vm.loaded = true;\n load();\n }\n });\n }\n };\n init();\n}\napp.controller('FPCompanyInvoicesController', FPCompanyInvoicesController);\nFPCompanyInvoicesController.$inject = ['$log', '$scope', 'assetService', 'apiConfigService', 'FPCurrentUserService', 'FPDataModelsDTOService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPInvoiceService', 'sessionStorageService', 'invoiceOrdersPollingWebWorkerService', 'screenSize'];\nfunction FPCompanyInvoicesController($log, $scope, assetService, apiConfigService, currentUserService, dtoService, genericHelperService, indexedDbService, invoiceService, sessionStorageService, invoiceOrdersPollingWebWorkerService, screenSize) {\n /**\r\n * Scope Vars\r\n */\n var _baseUrl = window.location.origin;\n var _errorsPageUrl = assetService.pageUrls.errorPage;\n var _filterFields = {\n status: {}\n };\n var _ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\n var _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.buttons = {\n refreshData: {\n label: _refreshDataButtonLabel\n }\n };\n vm.column = {\n contractorInvoiceNumber: assetService.tableCols.invoices.contractorInvoiceNumber,\n invoiceTotal: assetService.tableCols.invoices.invoiceTotal,\n orderCount: assetService.tableCols.invoices.orderCount,\n status: assetService.tableCols.invoices.status\n };\n vm.columnSelected = vm.column.contractorInvoiceNumber;\n vm.companyInvoices = null;\n vm.data = {\n serviceOrders: [],\n statusBarValue: 0,\n statusSelector: assetService.status.READY_FOR_INVOICE.code\n };\n vm.dropdowns = {\n statusSelector: null\n };\n vm.loadingSpinner = true;\n vm.invoicesReady = false;\n vm.originalServiceOrders = [];\n vm.reverse = false;\n vm.showRefreshBanner = false;\n vm.isLastRange = false;\n\n /**\r\n * Function Declarations\r\n */\n vm.onSelectItem = onSelectItem;\n vm.gotoDetails = gotoDetails;\n vm.sortColumn = sortColumn;\n vm.takeStatus = takeStatus;\n vm.exportPdf = exportPdf;\n vm.refreshData = refreshData;\n\n /**\r\n * Brodcast Watchers\r\n */\n $scope.$on(assetService.events.refreshInvoiceOrders, function () {\n vm.showRefreshBanner = true;\n });\n\n /**\r\n * Function Definitions\r\n */\n function applyFilter() {\n if (vm.data.statusSelector !== '') {\n var _serviceOrdersCollect;\n var filtersApplied = [];\n var workingSetServiceOrders = [];\n var serviceOrdersCollection = new DataCollection(vm.originalServiceOrders);\n _filterFields.status[\"\".concat(assetService.fieldFilterKeys.status, \"__in\")] = vm.data.statusSelector;\n filtersApplied.push(_filterFields.status);\n workingSetServiceOrders = (_serviceOrdersCollect = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect, filtersApplied).values();\n vm.data.serviceOrders = invoiceService.applyGrouping(workingSetServiceOrders);\n } else {\n vm.data.serviceOrders = invoiceService.applyGrouping(vm.originalServiceOrders);\n }\n }\n function exportPdf() {\n return console.log('exporting');\n }\n function gotoDetails(invoice) {\n var selectedFilters = setInvoiceNumbersFilter([{\n value: invoice.contractorInvoiceNumber,\n text: invoice.contractorInvoiceNumber,\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function load() {\n loadInvoiceOrders().then(function () {\n vm.loadingSpinner = false;\n }, function (error) {});\n }\n function loadInvoiceOrders() {\n return indexedDbService.getInvoiceOrders().then(function (result) {\n if (result) {\n vm.originalServiceOrders = dtoService.transformServiceOrders(result, assetService.storageKeys.toggleFlags.invoiceOrders);\n vm.companyInvoices = angular.copy(vm.originalServiceOrders);\n setDropdowns();\n setModels();\n vm.loadingSpinner = false;\n startPollingInvoiceOrders();\n vm.invoicesReady = true;\n }\n });\n }\n function onSelectItem(item) {\n applyFilter();\n sortColumn(vm.column.status);\n vm.reverse = true;\n vm.isLastRange = false;\n if (screenSize.is('xs, sm')) {\n vm.dropdowns.statusBarSelector = [];\n if (item.id === assetService.statusTrackerInvoices.length - 1) {\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id - 2]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id - 1]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id]);\n vm.isLastRange = true;\n vm.data.statusBarValue = 5;\n } else {\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id - 1]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[item.id + 1]);\n vm.data.statusBarValue = 3;\n vm.isLastRange = false;\n }\n } else {\n vm.dropdowns.statusBarSelector = assetService.statusTrackerInvoices.filter(function (status) {\n return status.id > 0;\n });\n vm.data.statusBarValue = _.findIndex(assetService.statusTrackerInvoices, function (status) {\n return status.value === item.value;\n });\n }\n }\n function refreshData() {\n loadInvoiceOrders().then(function () {\n vm.loadingSpinner = false;\n }, function (error) {});\n }\n function setInvoiceNumbersFilter(invoiceNumFilter) {\n return {\n selectedAssignedTechnicianFilter: [],\n selectedContactForAppointment: [],\n selectedCustomersFilter: [],\n selectedInvoiceNumbersFilter: invoiceNumFilter,\n selectedInvoiceStatusFilter: [],\n selectedJurisdictionFilter: [],\n selectedPostalCodesFilter: [],\n selectedProgramsFilter: [],\n selectedRushOrderFilter: [],\n selectedStatusesFilter: [],\n selectedSLAFilter: [],\n selectedTypesFilter: []\n };\n }\n function setDropdowns() {\n if (screenSize.is('xs, sm')) {\n vm.dropdowns.statusBarSelector = [];\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[1]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[2]);\n vm.dropdowns.statusBarSelector.push(assetService.statusTrackerInvoices[3]);\n vm.dropdowns.statusSelector = genericHelperService.setSelectedProp(assetService.statusTrackerInvoices, 'value', '');\n } else {\n vm.dropdowns.statusBarSelector = assetService.statusTrackerInvoices.filter(function (x) {\n return x.value !== '';\n });\n vm.dropdowns.statusSelector = genericHelperService.setSelectedProp(assetService.statusTrackerInvoices, 'value', '');\n }\n }\n function setModels() {\n vm.data.serviceOrders = invoiceService.applyGrouping(vm.companyInvoices);\n }\n function sortColumn(col) {\n vm.columnSelected = col;\n if (vm.reverse) {\n vm.reverse = false;\n } else {\n vm.reverse = true;\n }\n }\n function startPollingInvoiceOrders() {\n var _url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPInvoiceOrdersUrl());\n return invoiceOrdersPollingWebWorkerService.callWebWorker(_url).then(function (result) {\n if (result.serviceOrders) {\n vm.showRefreshBanner = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function takeStatus(serviceOrder) {\n return invoiceService.takeStatus(serviceOrder);\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n indexedDbService.ensureDb().then(function () {\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n init();\n}\napp.controller('FPOrderDetailsController', FPOrderDetailsController);\nFPOrderDetailsController.$inject = ['$log', '$location', '$scope', '$state', 'assetService', 'apiConfigService', 'FPBroadcastService', 'commonService', 'FPCurrentUserService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'sessionStorageService', 'FPSitecoreServices', 'FPPdfFactory', 'screenSize', 'serviceOrderPollingWebWorkerService', 'FPModalService', 'getCEPServiceOrderService'];\nfunction FPOrderDetailsController($log, $location, $scope, $state, assetService, apiConfigService, broadcastService, commonService, currentUserService, dtoService, indexedDbDataService, genericHelperService, serviceOrdersFactory, sessionStorageService, sitecoreServices, FPPdfFactory, screenSize, serviceOrderPollingWebWorkerService, FPModalService, getCEPServiceOrderService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _baseUrl = window.location.origin;\n var _errorsPageUrl = assetService.pageUrls.errorPage;\n var _kwCode = assetService.strings.CODE;\n var _kwValue = assetService.strings.VALUE;\n var _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\n var _serviceOrders = [];\n var _serviceOrderId;\n var _url = null;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.addendum = null;\n vm.buttons = {\n refreshData: {\n label: _refreshDataButtonLabel\n }\n };\n vm.cdpUserId = null;\n vm.disableSaveBtn = false;\n vm.currentOrderStatus = {};\n vm.currentUserRole = assetService.strings.CUSTOM_ROLE_HEADER;\n vm.loadingSpinner = true;\n vm.isInvoiceSession = false;\n vm.serviceHost = null;\n vm.serviceOrder = null;\n vm.setTracker = {\n orderDetailsStatus: null,\n value: null\n };\n vm.showModalAssignWorkOrder = false;\n vm.showModalDispatch = false;\n vm.showModalWorkComplete = false;\n vm.showModalReview = false;\n vm.showModalReadyForInvoice = false;\n vm.showModalBundleWorkOrder = false;\n vm.showRefreshBanner = false;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR.code;\n vm.statusAccepted = assetService.status.ACCEPTED.code;\n vm.statusScheduled = assetService.status.SCHEDULED.code;\n vm.statusDispatched = assetService.status.DISPATCHED.code;\n vm.statusCompleted = assetService.status.COMPLETED.code;\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.code;\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.code;\n vm.statusInvoiceApproved = assetService.status.INVOICE_APPROVED.code;\n vm.workOrderHeader = {};\n vm.workOrderFooterActions = {\n btn1: {\n label: null,\n modalTarget: null,\n disabled: false,\n visible: true\n },\n btn2: {\n label: null,\n modalTarget: null,\n disabled: false,\n visible: true\n },\n btn3: {\n label: null,\n modalTarget: null,\n disabled: false,\n visible: true\n }\n };\n\n /* --------------Function Declarations-----------------------*/\n vm.btn1ClickAction = btn1ClickAction;\n vm.btn2ClickAction = btn2ClickAction;\n vm.btn3ClickAction = btn3ClickAction;\n vm.isSet = isSet;\n vm.refreshData = refreshData;\n vm.setTab = setTab;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n vm.disableSaveBtn = false;\n setWorkOrderFooterLabels();\n });\n $scope.$on(assetService.events.addendumLoaded, function (event, ars) {\n currentUserService.setUserName();\n });\n $scope.$on(assetService.events.refreshAcceptedOrders, function () {\n vm.showRefreshBanner = true;\n });\n $scope.$on(assetService.events.refreshInvoiceOrders, function () {\n vm.showRefreshBanner = true;\n });\n $scope.$on(assetService.events.loadingSpinner, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* --------------Function Definitions-----------------------*/\n function btn1ClickAction(modal) {\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\n broadcastService.reloadServiceOrder();\n modal();\n }\n function btn2ClickAction(modal) {\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\n broadcastService.reloadServiceOrder();\n modal();\n }\n function btn3ClickAction() {\n FPPdfFactory._downloadServiceOrder(vm.serviceOrder, 'ServiceOrder.pdf');\n }\n function calculateValueForStatusTracker(actualStatusId) {\n var statuses = assetService.statusTrackerOrderDetails.filter(function (status) {\n return status.id <= actualStatusId;\n });\n var lastStatusFromStatuses = statuses.slice(-1)[0];\n assetService.statusTrackerOrderDetails.forEach(function (status, index) {\n if (status.id === lastStatusFromStatuses.id) {\n vm.setTracker.value = index + 1;\n }\n });\n }\n function initialize() {\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n calculateValueForStatusTracker(assetService.status[vm.currentOrderStatus.code].id);\n vm.workOrderHeader = {\n title: \"\".concat(vm.serviceOrder.soTypeName, \" - \").concat(vm.serviceOrder.programName),\n workOrderId: vm.serviceOrder.serviceOrderId,\n workOrderStatuses: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(assetService.serviceOrderStatus, _kwCode, _kwValue), _kwValue, vm.serviceOrder.soStatus),\n workOrderStatus: vm.serviceOrder.soStatusName\n };\n if (screenSize.is('xs, sm')) {\n // it's a mobile device so fetch a small image\n vm.setTracker.value = 3;\n vm.setTracker.orderDetailsStatus = [];\n var startTrackerFiller = {\n id: 0,\n value: 'Init',\n text: 'Init'\n };\n var endTrackerFiller = {\n id: assetService.statusTrackerOrderDetails.length,\n value: 'Paid Invoice Complete',\n text: 'Paid Invoice Complete'\n };\n var currentStatusIndexId = _.findIndex(assetService.statusTrackerOrderDetails, function (statusTracker) {\n return statusTracker.value === vm.serviceOrder.soStatus;\n });\n if (currentStatusIndexId > 0 && currentStatusIndexId < assetService.statusTrackerOrderDetails.length - 1) {\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[currentStatusIndexId - 1]);\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[currentStatusIndexId]);\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[currentStatusIndexId + 1]);\n } else if (currentStatusIndexId === 0) {\n vm.setTracker.orderDetailsStatus.push(startTrackerFiller);\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[0]);\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[1]);\n } else if (currentStatusIndexId === assetService.statusTrackerOrderDetails.length - 1) {\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[currentStatusIndexId - 1]);\n vm.setTracker.orderDetailsStatus.push(assetService.statusTrackerOrderDetails[currentStatusIndexId]);\n vm.setTracker.orderDetailsStatus.push(endTrackerFiller);\n }\n } else {\n // it's a desktop size so do the complicated calculations and render that\n vm.setTracker.orderDetailsStatus = assetService.statusTrackerOrderDetails;\n }\n setWorkOrderFooterLabels();\n vm.setTab(1);\n }\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function load() {\n getCEPServiceOrderService.sitecore.getCEPServiceOrder(vm.currentUser).then(function (result) {\n if (result) {\n if (result.serviceOrders.length === 1) {\n vm.notAnInvoiceSession = assetService.urlTokens.acceptedOrdersStatuses.includes(result.serviceOrders[0].soStatus.code.toUpperCase());\n if (!vm.notAnInvoiceSession) {\n vm.orders = dtoService.transformServiceOrders(result.serviceOrders, assetService.storageKeys.toggleFlags.invoiceOrders);\n } else {\n vm.orders = dtoService.transformServiceOrders(result.serviceOrders, assetService.storageKeys.toggleFlags.acceptedOrders);\n }\n sessionStorageService.set(assetService.storageKeys.currentServiceOrder, result.serviceOrders[0]);\n vm.serviceOrder = vm.orders[0];\n configureServiceOrder();\n initialize();\n vm.loadingSpinner = false;\n $state.go(assetService.stateRoutes.customerLogistics.state);\n startPollingOrderDetails();\n }\n }\n });\n broadcastService.appLoaded();\n }\n function configureServiceOrder() {\n var timeoutPromise;\n vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar = null;\n vm.serviceOrder.rescheduledStartDateDukeCalendar = null;\n vm.serviceOrder.scheduledStartDateDukeCalendar = null;\n vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = null;\n vm.serviceOrder.toggleFlag = assetService.status[vm.serviceOrder.soStatus].id < 9 ? sessionStorageService.get(assetService.storageKeys.toggleFlags.acceptedOrders) : sessionStorageService.get(assetService.storageKeys.toggleFlags.invoiceOrders);\n if (vm.serviceOrder.assignedTechnician.cdpId) {\n var users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n var contractor = _.find(users, function (user) {\n return user.cdpId === vm.serviceOrder.assignedTechnician.cdpId;\n });\n if (contractor) {\n vm.serviceOrder.assignedTechnician = angular.copy(contractor);\n }\n if (timeoutPromise) {\n setTimeout.cancel(timeoutPromise); // cancelling previous promises\n }\n }\n _serviceOrders.push(vm.serviceOrder);\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\n serviceOrdersFactory._setSelectedOrders(_serviceOrders);\n }\n function refreshData() {\n vm.loadingSpinner = true;\n getCEPServiceOrderService.sitecore.getCEPServiceOrder({\n serviceOrderId: _serviceOrderId\n }).then(function (result) {\n if (result) {\n vm.orders = dtoService.transformServiceOrders(result.serviceOrders, assetService.storageKeys.toggleFlags.invoiceOrders);\n if (vm.orders.length === 1) {\n vm.serviceOrder = vm.orders[0];\n vm.isInvoiceSession = assetService.urlTokens.acceptedOrdersStatuses.includes(vm.serviceOrder.soStatus);\n configureServiceOrder(result);\n initialize();\n startPollingOrderDetails();\n $state.reload();\n vm.showRefreshBanner = false;\n vm.loadingSpinner = false;\n }\n }\n });\n }\n function setTab(tabId) {\n vm.tab = tabId;\n }\n function setWorkOrderFooterLabels() {\n vm.workOrderFooterActions.btn3.label = assetService.btnLabels.EXPORT_PDF;\n vm.workOrderFooterActions.btn3.disabled = false;\n switch (vm.serviceOrder.soStatus) {\n case assetService.status.SENT_TO_CONTRACTOR.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.DECLINE;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.declineModal;\n vm.workOrderFooterActions.btn1.disabled = false;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.ACCEPT;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.acceptWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = true;\n break;\n case assetService.status.ACCEPTED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.SCHEDULE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.scheduleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = true;\n break;\n case assetService.status.SCHEDULED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.DISPATCH;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.dispatchModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = true;\n break;\n case assetService.status.DISPATCHED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.COMPLETE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.workCompleteModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = true;\n break;\n case assetService.status.COMPLETED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.REVIEW;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.reviewModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = true;\n break;\n case assetService.status.CONTRACTOR_REVIEWED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = true;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.READY_FOR_INVOICE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.readyForInvoiceModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n case assetService.status.READY_FOR_INVOICE.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = false;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n case assetService.status.INVOICE_READY_FOR_REVIEW.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = false;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n case assetService.status.APPROVED_FOR_INVOICING.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = false;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n case assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = false;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n case assetService.status.INVOICE_APPROVED.code:\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\n vm.workOrderFooterActions.btn1.visible = false;\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\n vm.workOrderFooterActions.btn2.disabled = false;\n vm.workOrderFooterActions.btn2.visible = false;\n break;\n default:\n break;\n }\n }\n function startPollingOrderDetails() {\n _url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPServiceOrderUrl(vm.currentUser));\n return serviceOrderPollingWebWorkerService.callWebWorker(_url).then(function (result) {\n if (result.length > 0) {\n vm.showRefreshBanner = true;\n }\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n _serviceOrderId = $location.search().orderid;\n serviceOrdersFactory._deleteSelectedOrder();\n if (assetService.apiConfig.useLocalHost) {\n vm.currentUser = {\n emailId: $location.search().emailId,\n // Get Primary Bp\n cdpUserId: $location.search().cdpId,\n // Get Primary Bp\n serviceOrderId: _serviceOrderId\n };\n vm.cdpUserId = vm.currentUser.cdpId;\n indexedDbDataService.ensureDb().then(function () {\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n var getCdpId = function getCdpId() {\n return sitecoreServices.getCdpId().then(function (result) {\n vm.currentUser = {\n cdpUserId: result,\n serviceOrderId: _serviceOrderId\n };\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n var promises = [getCdpId(), indexedDbDataService.ensureDb()];\n commonService.executePromises(promises).then(function (data) {\n load();\n });\n }\n };\n init();\n}\napp.controller('FPTechnicalPricingServiceRequest', FPTechnicalPricingServiceRequest);\nFPTechnicalPricingServiceRequest.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory'];\nfunction FPTechnicalPricingServiceRequest($scope, assetService, genericHelperService, serviceOrdersFactory) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.coveredRepairsDescription = null;\n vm.currentOrderStatus = new Object();\n vm.disableAll = false;\n vm.form = {\n serviceOrderBalance: {\n value: 0\n },\n programEntitlementBalance: {\n value: 0\n },\n descriptionOfWorkQtyPartsCovered: null,\n descriptionOfWorkQtyPartsNonCovered: null,\n orderCostTimeDetails: {\n regularLaborHours: 0,\n regularLaborCost: 0,\n laborCost: {\n value: 0\n },\n laborCostNotCovered: {\n value: 0\n },\n entitlementLaborHours: 0,\n entitlementLaborCost: {\n value: 0\n },\n partsCost: {\n value: 0\n },\n partsCostNotCovered: {\n value: 0\n },\n tripFee: {\n value: 0\n }\n },\n soType: null\n };\n vm.groundingRepairsNeededOptions = assetService.yesNoOptions;\n vm.serviceOrderLoaded = false;\n vm.noncoveredRepairsDescription = null;\n vm.serviceOrder = null;\n vm.singlePointGroundingOptions = assetService.yesNoOptions;\n vm.statusCompleted = assetService.status.COMPLETED.value;\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.value;\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.value;\n vm.typeEntitlement = assetService.strings.ENTITLEMENT;\n vm.validationPatterns = assetService.validationPatterns;\n vm.loadingSpinner = true;\n\n /* --------------Function Declarations-----------------------*/\n vm.totalLaborCost = totalLaborCost;\n vm.totalCost = totalCost;\n vm.totalUncoveredCost = totalUncoveredCost;\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.reloadServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 10) {\n vm.disableAll = true;\n }\n setModels();\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setModels() {\n vm.form = {\n serviceOrderBalance: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.serviceOrderBalance.value)\n },\n programEntitlementBalance: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.programEntitlementBalance.value)\n },\n descriptionOfWorkQtyPartsCovered: vm.serviceOrder.descriptionOfWorkQtyPartsCovered,\n descriptionOfWorkQtyPartsNonCovered: vm.serviceOrder.descriptionOfWorkQtyPartsNonCovered,\n orderCostTimeDetails: {\n regularLaborHours: vm.serviceOrder.orderCostTimeDetails.regularLaborHours,\n regularLaborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.regularLaborCost.value)\n },\n laborCostNotCovered: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCostNotCovered.value)\n },\n entitlementLaborHours: vm.serviceOrder.orderCostTimeDetails.entitlementLaborHours,\n entitlementLaborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.entitlementLaborCost.value)\n },\n partsCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCost.value)\n },\n partsCostNotCovered: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCostNotCovered.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n soType: vm.serviceOrder.soType\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n vm.formLoaded = true;\n }\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost);\n }\n function totalCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost) + parseFloat(!partsCost ? '0.0' : partsCost) + parseFloat(!tripFee ? '0.0' : tripFee);\n }\n function totalUncoveredCost(laborCostNotCovered, partsCostNotCovered) {\n return parseFloat(!laborCostNotCovered ? '0.0' : laborCostNotCovered) + parseFloat(!partsCostNotCovered ? '0.0' : partsCostNotCovered);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingWorkOrder', FPTechnicalPricingWorkOrder);\nFPTechnicalPricingWorkOrder.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory'];\nfunction FPTechnicalPricingWorkOrder($scope, assetService, genericHelperService, serviceOrdersFactory) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.currentOrderStatus = new Object();\n vm.description = null;\n vm.disableAll = false;\n vm.form = {\n orderCostTimeDetails: {\n tripFee: {\n value: 0\n },\n materialCost: {\n value: 0\n },\n laborCost: {\n value: 0\n },\n totalOrderCost: {\n value: 0\n }\n },\n descriptionOfWorkQtyParts: null\n };\n vm.groundingRepairsNeededOptions = assetService.yesNoOptions;\n vm.serviceOrderLoaded = false;\n vm.serviceOrder = null;\n vm.singlePointGroundingOptions = assetService.yesNoOptions;\n vm.statusCompleted = assetService.status.COMPLETED.value;\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.value;\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.value;\n vm.validationPatterns = assetService.validationPatterns;\n vm.loadingSpinner = true;\n\n /* --------------Function Declarations-----------------------*/\n vm.totalOrderCost = totalOrderCost;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.reloadServiceOrder, function (event, ars) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n setModels();\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 10) {\n vm.disableAll = true;\n }\n setModels();\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setModels() {\n vm.form = {\n orderCostTimeDetails: {\n materialCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.materialCost.value)\n },\n laborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCost.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts\n };\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n vm.formLoaded = true;\n }\n function totalOrderCost(tripFee, laborCost, materialCost) {\n return parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPHeaderController', FPHeaderController);\nFPHeaderController.$inject = ['$scope', 'FPAssetService', 'FPCurrentUserService', 'sessionStorageService'];\nfunction FPHeaderController($scope, assetService, currentUserService, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var roleContractor = assetService.userTypes.CONTRACTOR;\n\n /**\r\n * Global Vars\r\n */\n vm.appLoaded = false;\n vm.homeUrl = assetService.sitePagesUrlPaths.DASHBOARD;\n vm.invoiceOrdersUrl = assetService.sitePagesUrlPaths.INVOICE_ORDERS;\n vm.isContractor = false;\n vm.ordersUrl = assetService.sitePagesUrlPaths.ORDERS;\n vm.checkAllOrders = true;\n /**\r\n * Function Declarations\r\n */\n vm.setTab = setTab;\n vm.isSet = isSet;\n vm.clearSession = clearSession;\n vm.goHome = goHome;\n\n /**\r\n * Broadcast Watchers\r\n */\n $scope.$on(assetService.events.usersLoaded, function (event, ars) {\n var userRole = currentUserService.getUserRole();\n if (userRole.toLowerCase() === roleContractor) {\n vm.isContractor = true;\n }\n });\n /**\r\n * Function Definitions\r\n */\n function setTab(tabId) {\n vm.tab = tabId;\n }\n function isSet(tabId) {\n return vm.tab === tabId;\n }\n function clearSession() {\n sessionStorageService.set('checkAllOrders', vm.checkAllOrders);\n }\n function goHome() {\n if (vm.checkAllOrders == true) {\n vm.checkAllOrders = false;\n }\n sessionStorageService.set('checkAllOrders', vm.checkAllOrders);\n }\n\n /**\r\n * Initialization\r\n */\n var init = function init() {\n var userRole = currentUserService.getUserRole();\n if (userRole && userRole.toLowerCase() === roleContractor) {\n vm.isContractor = true;\n }\n };\n init();\n}\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\napp.controller('FPOrdersController', FPOrdersController);\nFPOrdersController.$inject = ['$log', '$scope', 'assetService', 'acceptedOrdersPollingWebWorkerService', 'invoiceOrdersPollingWebWorkerService', 'apiConfigService', 'FPDataModelsDTOService', 'FPServiceOrdersFactory', 'FPCurrentUserService', 'FPIndexedDbDataService', 'FPGenericHelperService', 'pagerService', 'sessionStorageService', 'FPCSVServiceOrders', 'FPServiceOrderService', 'FPBroadcastService', 'FPModalService'];\nfunction FPOrdersController($log, $scope, assetService, acceptedOrdersPollingWebWorkerService, invoiceOrdersPollingWebWorkerService, apiConfigService, dtoService, serviceOrdersFactory, currentUserService, indexedDbService, genericHelperService, pagerService, sessionStorageService, csvServiceOrders, serviceOrderService, broadcastService, FPModalService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _assignButtonLabel = assetService.btnLabels.ASSIGN_BUTTON;\n var _assignedTechnician = assetService.strings.ASSIGNED_TECHNICIAN;\n var _baseUrl = window.location.origin;\n var _customer = assetService.strings.CUSTOMER;\n var _defaultSortOption = assetService.sortByOptions[1].value;\n var _dispatchButtonLabel = assetService.btnLabels.DISPATCH_BUTTON;\n var _errorsPageUrl = assetService.pageUrls.errorPage;\n var _filterFields = {\n customerName: {},\n postalCode: {},\n program: {},\n status: {},\n type: {},\n invoiceNumber: {},\n assignedTechnician: {},\n invoiceStatus: {},\n rushOrder: {},\n isCompleteWorkOrder: {},\n isContactWorkOrder: {},\n isInvoiceWorkOrder: {},\n isNewWorkOrder: {},\n isScheduleWorkOrder: {},\n isCompleteServiceRequestOrder: {},\n isContactServiceRequestOrder: {},\n isInvoiceServiceRequestOrder: {},\n isNewServiceRequestOrder: {},\n isScheduleServiceRequestOrder: {},\n jurisdiction: {},\n contactForAppointment: {}\n };\n var _invoiceButtonLabel = assetService.btnLabels.INVOICE_BUTTON;\n var _invoiceField = assetService.fieldNames.CONTRACTOR_INVOICE_NUMBER;\n var _invoiceStatusFilters = [assetService.status.APPROVED_FOR_INVOICING.code, assetService.status.INVOICE_APPROVED.code, assetService.status.INVOICE_READY_FOR_REVIEW.code, assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code, assetService.status.READY_FOR_INVOICE.code];\n var _kwValue = assetService.strings.VALUE;\n var _noAcceptedOrders = assetService.strings.NO_ACCEPTED_ORDERS;\n var _program = assetService.strings.PROGRAM;\n var _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\n var _resetFiltersButtonLabel = assetService.btnLabels.RESET_FILTERS;\n var _statusFilters = [assetService.status.SENT_TO_CONTRACTOR.code, assetService.status.ACCEPTED.code, assetService.status.SCHEDULED.code, assetService.status.DISPATCHED.code, assetService.status.COMPLETED.code, assetService.status.CONTRACTOR_REVIEWED.code];\n var _statusAccepted = assetService.status.ACCEPTED.code;\n var _statusScheduled = assetService.status.SCHEDULED.code;\n var _statusReviewed = assetService.status.CONTRACTOR_REVIEWED.code;\n var _searchableFields = {\n assignedTechnicianFilter: {},\n customerNameFilter: {},\n invoiceNumberFilter: {},\n statusFilter: {},\n typeFilter: {},\n programFilter: {},\n workOrderIdFilter: {}\n };\n var _serviceAddress = assetService.fieldNames.SERVICE_ADDRESS;\n var _status = assetService.fieldNames.SO_STATUS;\n var _type = assetService.fieldNames.SO_TYPE;\n\n /* --------------Global Vars-----------------------*/\n vm.assignedTechnicians = [];\n vm.buttons = {\n refreshData: {\n label: _refreshDataButtonLabel\n },\n resetFilters: {\n label: _resetFiltersButtonLabel\n },\n resetOrders: {\n label: null\n },\n invoice: {\n label: _invoiceButtonLabel,\n counter: 0,\n disabled: true\n },\n dispatch: {\n label: _dispatchButtonLabel,\n counter: 0,\n disabled: true\n },\n assign: {\n label: _assignButtonLabel,\n counter: 0,\n disabled: true\n }\n };\n vm.contactForAppointments = [];\n vm.customers = [];\n vm.dropdowns = {\n sortBy: null\n };\n vm.filteredCustomers = null;\n vm.filteredInvoiceNumbers = null;\n vm.filteredPostalCodes = null;\n vm.filteredPrograms = null;\n vm.filteredStatus = null;\n vm.filteredTypes = null;\n vm.invoiceStatuses = [];\n vm.invoiceNumbers = [];\n vm.getAllOrders = null;\n vm.removeFilters = null;\n vm.isContractor = false;\n vm.isInvoiceSession = false;\n vm.jurisdictions = [];\n vm.loadingSpinner = true;\n vm.noAcceptedOrdersVerbiage = _noAcceptedOrders;\n vm.noWorkOrders = false;\n vm.noWorkingSetWorkOrders = false;\n vm.orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\n vm.ordersPerPage = 18;\n vm.originalServiceOrders = [];\n vm.pagination = assetService.pagination;\n vm.pager = pagerService.createPager(assetService.storageKeys.acceptedOrdersPager, 0, 1, vm.ordersPerPage);\n vm.postalCodes = [];\n vm.resetcheck = false;\n vm.programs = [];\n vm.redrawLeftNav = true;\n vm.refreshFilters = false;\n vm.refreshAcceptedOrdersComplete = false;\n vm.refreshInvoiceOrdersComplete = false;\n vm.rushOrders = [];\n vm.searchInput = null;\n vm.selectAllModel = false;\n vm.selectedAssignedTechnicianFilter = [];\n vm.selectedContactForAppointment = [];\n vm.selectedCustomersFilter = [];\n vm.selectedFilters = [];\n vm.selectedInvoiceStatusFilter = [];\n vm.selectedInvoiceNumbersFilter = [];\n vm.selectedJurisdictionFilter = [];\n vm.selectedPostalCodesFilter = [];\n vm.selectedProgramsFilter = [];\n vm.selectedRushOrderFilter = [];\n vm.selectedSLAFilter = [];\n vm.selectedStatusesFilter = [];\n vm.selectedSortField = null;\n vm.selectedTypesFilter = [];\n vm.serviceOrderLoaded = false;\n vm.serviceOrders = [];\n vm.showAssignOption = true;\n vm.showBundleOrdersOption = false;\n vm.showMoreFilters = false;\n vm.showRefreshBanner = false;\n vm.showRefreshDataAlert = false;\n vm.slaOptions = [];\n vm.statuses = [];\n vm.title = null;\n vm.types = [];\n vm.workingSetServiceOrders = [];\n\n /* --------------Function Declarations-----------------------*/\n vm.assignOrders = assignOrders;\n vm.addSelectedAssignedTechnician = addSelectedAssignedTechnician;\n vm.addSelectedContactForAppointment = addSelectedContactForAppointment;\n vm.addSelectedCustomer = addSelectedCustomer;\n vm.addSelectedInvoiceStatus = addSelectedInvoiceStatus;\n vm.addSelectedInvoiceNumber = addSelectedInvoiceNumber;\n vm.addSelectedJurisdiction = addSelectedJurisdiction;\n vm.addSelectedPostalCode = addSelectedPostalCode;\n vm.addSelectedProgram = addSelectedProgram;\n vm.addSelectedRushOrder = addSelectedRushOrder;\n vm.addSelectedSla = addSelectedSla;\n vm.addSelectedStatus = addSelectedStatus;\n vm.addSelectedType = addSelectedType;\n vm.bundleWorkOrders = bundleWorkOrders;\n vm.changeSort = changeSort;\n vm.dispatchOrders = dispatchOrders;\n vm.displayFilter = displayFilter;\n vm.exportCSV = exportCSV;\n vm.invoiceOrders = invoiceOrders;\n vm.onChange = onChange;\n vm.orderDetails = orderDetails;\n vm.refreshData = refreshData;\n vm.removeSelectedAssignedTechnician = removeSelectedAssignedTechnician;\n vm.removeSelectedContactForAppointment = removeSelectedContactForAppointment;\n vm.removeSelectedCustomer = removeSelectedCustomer;\n vm.removeSelectedInvoiceStatus = removeSelectedInvoiceStatus;\n vm.removeSelectedInvoiceNumber = removeSelectedInvoiceNumber;\n vm.removeSelectedJurisdiction = removeSelectedJurisdiction;\n vm.removeSelectedPostalCode = removeSelectedPostalCode;\n vm.removeSelectedProgram = removeSelectedProgram;\n vm.removeSelectedRushOrder = removeSelectedRushOrder;\n vm.removeSelectedSla = removeSelectedSla;\n vm.removeSelectedStatus = removeSelectedStatus;\n vm.removeSelectedType = removeSelectedType;\n vm.resetFilters = resetFilters;\n vm.resetOrders = resetOrders;\n vm.search = search;\n vm.selectAll = selectAll;\n vm.setPage = setPage;\n vm.toggleFilters = toggleFilters;\n\n /* --------------Brodcast Watchers----------------------------*/\n $scope.$on(assetService.events.refreshAcceptedOrders, function () {\n vm.showRefreshBanner = true;\n });\n $scope.$on(assetService.events.refreshInvoiceOrders, function () {\n vm.showRefreshBanner = true;\n });\n $scope.$on(assetService.events.loadingSpinner, function (index, data) {\n vm.loadingSpinner = data;\n });\n\n /* --------------Function Definitions-----------------------*/\n function assignOrders() {\n var selectedOrders = vm.workingSetServiceOrders.filter(function (serviceOrder) {\n return serviceOrder.selected === true && serviceOrderService.canBeAssigned(serviceOrder);\n });\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\n broadcastService.triggerSelectedServiceOrdersUpdate();\n FPModalService.assignWorkOrderModal();\n }\n function addSelectedAssignedTechnician(selectedFilter) {\n vm.selectedAssignedTechnicianFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedContactForAppointment(selectedFilter) {\n vm.selectedContactForAppointment.push(selectedFilter);\n applyFilters();\n }\n function addSelectedCustomer(selectedFilter) {\n vm.selectedCustomersFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedInvoiceStatus(selectedFilter) {\n vm.selectedInvoiceStatusFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedInvoiceNumber(selectedFilter) {\n vm.selectedInvoiceNumbersFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedJurisdiction(selectedFilter) {\n vm.selectedJurisdictionFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedPostalCode(selectedFilter) {\n vm.selectedPostalCodesFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedProgram(selectedFilter) {\n vm.selectedProgramsFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedRushOrder(selectedFilter) {\n vm.selectedRushOrderFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedSla(selectedFilter) {\n vm.selectedSLAFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedStatus(selectedFilter) {\n vm.selectedStatusesFilter.push(selectedFilter);\n applyFilters();\n }\n function addSelectedType(selectedFilter) {\n vm.selectedTypesFilter.push(selectedFilter);\n applyFilters();\n }\n function applyFilters() {\n var executeFlag = false;\n var filtersApplied = [];\n var workingSetServiceOrders = [];\n var serviceOrdersCollection = new DataCollection(vm.originalServiceOrders);\n var filterList;\n if (vm.selectedCustomersFilter.length > 0) {\n var _serviceOrdersCollect;\n filtersApplied = [];\n filterList = _.map(vm.selectedCustomersFilter, function (filter) {\n return filter.value;\n });\n _filterFields.customerName[\"\".concat(assetService.fieldFilterKeys.customerName, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.customerName);\n workingSetServiceOrders = (_serviceOrdersCollect = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect, _toConsumableArray(filtersApplied)).values();\n executeFlag = true;\n }\n if (vm.selectedPostalCodesFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedPostalCodesFilter, function (filter) {\n return filter.value;\n });\n _filterFields.postalCode[\"\".concat(assetService.fieldFilterKeys.postalCode, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.postalCode);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect2;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var result = (_serviceOrdersCollect2 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect2, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, result, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect3;\n workingSetServiceOrders = (_serviceOrdersCollect3 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect3, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedProgramsFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedProgramsFilter, function (filter) {\n return filter.value;\n });\n _filterFields.program[\"\".concat(assetService.fieldFilterKeys.program, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.program);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect4;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result = (_serviceOrdersCollect4 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect4, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect5;\n workingSetServiceOrders = (_serviceOrdersCollect5 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect5, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedStatusesFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedStatusesFilter, function (filter) {\n return filter.value;\n });\n _filterFields.status[\"\".concat(assetService.fieldFilterKeys.status, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.status);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect6;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result2 = (_serviceOrdersCollect6 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect6, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result2, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect7;\n workingSetServiceOrders = (_serviceOrdersCollect7 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect7, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedTypesFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedTypesFilter, function (filter) {\n return filter.value;\n });\n _filterFields.type[\"\".concat(assetService.fieldFilterKeys.type, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.type);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect8;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result3 = (_serviceOrdersCollect8 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect8, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result3, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect9;\n workingSetServiceOrders = (_serviceOrdersCollect9 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect9, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedInvoiceNumbersFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedInvoiceNumbersFilter, function (filter) {\n return filter.value;\n });\n _filterFields.invoiceNumber[\"\".concat(assetService.fieldFilterKeys.invoiceNumber, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.invoiceNumber);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect10;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result4 = (_serviceOrdersCollect10 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect10, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result4, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect11;\n workingSetServiceOrders = (_serviceOrdersCollect11 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect11, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedAssignedTechnicianFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedAssignedTechnicianFilter, function (filter) {\n return filter.value;\n });\n _filterFields.assignedTechnician[\"\".concat(assetService.fieldFilterKeys.assignedTechnician, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.assignedTechnician);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect12;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result5 = (_serviceOrdersCollect12 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect12, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result5, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect13;\n workingSetServiceOrders = (_serviceOrdersCollect13 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect13, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedInvoiceStatusFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedInvoiceStatusFilter, function (filter) {\n return filter.value;\n });\n _filterFields.invoiceStatus[\"\".concat(assetService.fieldFilterKeys.status, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.invoiceStatus);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect14;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result6 = (_serviceOrdersCollect14 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect14, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result6, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect15;\n workingSetServiceOrders = (_serviceOrdersCollect15 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect15, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedRushOrderFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedRushOrderFilter, function (filter) {\n return filter.value;\n });\n _filterFields.rushOrder[\"\".concat(assetService.fieldFilterKeys.rushOrder, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.rushOrder);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect16;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result7 = (_serviceOrdersCollect16 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect16, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result7, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect17;\n workingSetServiceOrders = (_serviceOrdersCollect17 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect17, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedSLAFilter.length > 0) {\n filtersApplied = [];\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect18;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n createMappingsForCollection(serviceOrdersCollection);\n filterList = _.map(vm.selectedSLAFilter, function (filter) {\n return filter.value;\n });\n filterList.forEach(function (filter) {\n _filterFields[filter][\"\".concat(assetService.fieldFilterKeys[filter], \"__is\")] = true;\n filtersApplied.push(_filterFields[filter]);\n });\n var _result8 = (_serviceOrdersCollect18 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect18, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result8, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect19;\n createMappingsForCollection(serviceOrdersCollection);\n filterList = _.map(vm.selectedSLAFilter, function (filter) {\n return filter.value;\n });\n filterList.forEach(function (filter) {\n _filterFields[filter][\"\".concat(assetService.fieldFilterKeys[filter], \"__is\")] = true;\n filtersApplied.push(_filterFields[filter]);\n });\n workingSetServiceOrders = (_serviceOrdersCollect19 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect19, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedJurisdictionFilter.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedJurisdictionFilter, function (filter) {\n return filter.value;\n });\n _filterFields.jurisdiction[\"\".concat(assetService.fieldFilterKeys.jurisdiction, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.jurisdiction);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect20;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result9 = (_serviceOrdersCollect20 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect20, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result9, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect21;\n workingSetServiceOrders = (_serviceOrdersCollect21 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect21, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (vm.selectedContactForAppointment.length > 0) {\n filtersApplied = [];\n filterList = _.map(vm.selectedContactForAppointment, function (filter) {\n return filter.value;\n });\n _filterFields.contactForAppointment[\"\".concat(assetService.fieldFilterKeys.contactForAppointment, \"__in\")] = filterList;\n filtersApplied.push(_filterFields.contactForAppointment);\n if (workingSetServiceOrders.length > 0 || executeFlag) {\n var _serviceOrdersCollect22;\n serviceOrdersCollection = null;\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\n var _result10 = (_serviceOrdersCollect22 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect22, _toConsumableArray(filtersApplied)).values();\n workingSetServiceOrders = genericHelperService.intersectionObjects(workingSetServiceOrders, _result10, function (item1, item2) {\n return item1.serviceOrderId === item2.serviceOrderId;\n });\n } else {\n var _serviceOrdersCollect23;\n workingSetServiceOrders = (_serviceOrdersCollect23 = serviceOrdersCollection.query()).filter.apply(_serviceOrdersCollect23, _toConsumableArray(filtersApplied)).values();\n }\n executeFlag = true;\n }\n if (executeFlag || workingSetServiceOrders.length > 0) {\n initializeOrders(workingSetServiceOrders);\n if (vm.searchInput) {\n if (vm.searchInput.length !== 0) {\n search();\n }\n }\n } else {\n reload();\n }\n }\n function applySorting(serviceOrders, fieldToSortBy) {\n var key = assetService.sortFields[fieldToSortBy].key;\n var order = assetService.sortFields[fieldToSortBy].order === 'desc';\n var serviceOrdersCollection = new DataCollection(serviceOrders);\n var serviceOrdersSorted = serviceOrdersCollection.query().sort(key, order).values();\n return serviceOrdersSorted;\n }\n function bundleWorkOrders() {\n var selectedOrders = _.filter(vm.workingSetServiceOrders, function (o) {\n return o.selected === true && o.soStatus === _statusReviewed && o.assignedTechnician.cdpId && !o.contractorInvoiceNumber;\n });\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\n broadcastService.triggerSelectedServiceOrdersUpdate();\n FPModalService.bundleWorkOrderModal();\n }\n function calculateButtonsCounter(item, itemCountable) {\n // INVOICE\n if (serviceOrderService.canBeInvoiced(item)) {\n if (itemCountable) {\n item.selected ? vm.buttons.invoice.counter += 1 : vm.buttons.invoice.counter -= 1;\n }\n vm.buttons.invoice.disabled = vm.buttons.invoice.counter === 0;\n }\n\n // DISPATCH\n if (serviceOrderService.canBeDispatched(item)) {\n if (itemCountable) {\n item.selected ? vm.buttons.dispatch.counter += 1 : vm.buttons.dispatch.counter -= 1;\n }\n vm.buttons.dispatch.disabled = vm.buttons.dispatch.counter === 0;\n }\n\n // ASSIGN\n if (serviceOrderService.canBeAssigned(item)) {\n if (itemCountable) {\n item.selected ? vm.buttons.assign.counter += 1 : vm.buttons.assign.counter -= 1;\n }\n vm.buttons.assign.disabled = vm.buttons.assign.counter === 0;\n }\n }\n function changeSort() {\n initializeOrders(vm.serviceOrders);\n }\n function dispatchOrders() {\n var selectedOrders = vm.workingSetServiceOrders.filter(function (serviceOrder) {\n return serviceOrder.selected === true && serviceOrderService.canBeDispatched(serviceOrder);\n });\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\n broadcastService.triggerSelectedServiceOrdersUpdate();\n FPModalService.multiDispatchModal();\n }\n function displayFilter(showFilter) {\n if (showFilter) {\n $('#bodyContent').fadeOut(1000);\n $('#refineResults').fadeIn(1000);\n } else {\n $('#bodyContent').fadeIn(1000);\n $('#refineResults').fadeOut(1000);\n }\n }\n function createMappingsForCollection(collection) {\n // Work Orders\n collection.createMapping(assetService.slaOptionsFilter.isNewWorkOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER ? serviceOrderService.isNewOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isContactWorkOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER ? serviceOrderService.isContactOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isScheduleWorkOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER ? serviceOrderService.isScheduleOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isInvoiceWorkOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER ? serviceOrderService.isInvoiceOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isCompleteWorkOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER ? serviceOrderService.isCompleteOrder(serviceOrder) : false;\n });\n\n // Service Requests\n collection.createMapping(assetService.slaOptionsFilter.isNewServiceRequestOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST ? serviceOrderService.isNewOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isContactServiceRequestOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST ? serviceOrderService.isContactOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isScheduleServiceRequestOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST ? serviceOrderService.isScheduleOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isInvoiceServiceRequestOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST ? serviceOrderService.isInvoiceOrder(serviceOrder) : false;\n });\n collection.createMapping(assetService.slaOptionsFilter.isCompleteServiceRequestOrder.value, function (serviceOrder) {\n return serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST ? serviceOrderService.isCompleteOrder(serviceOrder) : false;\n });\n }\n function exportCSV(event) {\n var exportButton = event.target;\n exportButton.disabled = true;\n var exportType = vm.isInvoiceSession ? assetService.strings.ACCEPTED_INVOICE_ORDERS : assetService.strings.ACCEPTED_ORDERS;\n csvServiceOrders.exportCSV(exportType).then(function () {\n exportButton.disabled = false;\n }, function (error) {});\n }\n function invoiceOrders() {\n var selectedOrders = vm.workingSetServiceOrders.filter(function (serviceOrder) {\n return serviceOrder.selected === true && serviceOrderService.canBeInvoiced(serviceOrder);\n });\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\n broadcastService.triggerSelectedServiceOrdersUpdate();\n FPModalService.bundleWorkOrderModal();\n }\n function setModels() {\n vm.dropdowns.sortBy = assetService.sortByOptions;\n vm.dropdowns.sortBy = genericHelperService.setSelectedProp(vm.dropdowns.sortBy, _kwValue, _defaultSortOption);\n }\n function onChange(item) {\n calculateButtonsCounter(item, true);\n }\n function orderDetails(event, _serviceOrder) {\n if (event.target.classList.contains('FP-Checkbox__input')) {\n return false;\n }\n var selectedFilters = {\n selectedAssignedTechnicianFilter: vm.selectedAssignedTechnicianFilter,\n selectedContactForAppointment: vm.selectedContactForAppointment,\n selectedCustomersFilter: vm.selectedCustomersFilter,\n selectedInvoiceNumbersFilter: vm.selectedInvoiceNumbersFilter,\n selectedInvoiceStatusFilter: vm.selectedInvoiceStatusFilter,\n selectedJurisdictionFilter: vm.selectedJurisdictionFilter,\n selectedPostalCodesFilter: vm.selectedPostalCodesFilter,\n selectedProgramsFilter: vm.selectedProgramsFilter,\n selectedRushOrderFilter: vm.selectedRushOrderFilter,\n selectedStatusesFilter: vm.selectedStatusesFilter,\n selectedSLAFilter: vm.selectedSLAFilter,\n selectedTypesFilter: vm.selectedTypesFilter\n };\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n var url = vm.orderDetailsUrl + _serviceOrder.serviceOrderId;\n window.location.href = url;\n }\n function removeSelectedAssignedTechnician(selectedFilter) {\n removeSelectedFilter(vm.selectedAssignedTechnicianFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedContactForAppointment(selectedFilter) {\n removeSelectedFilter(vm.selectedContactForAppointment, selectedFilter);\n applyFilters();\n }\n function removeSelectedCustomer(selectedFilter) {\n removeSelectedFilter(vm.selectedCustomersFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedInvoiceNumber(selectedFilter) {\n removeSelectedFilter(vm.selectedInvoiceNumbersFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedInvoiceStatus(selectedFilter) {\n removeSelectedFilter(vm.selectedInvoiceStatusFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedJurisdiction(selectedFilter) {\n removeSelectedFilter(vm.selectedJurisdictionFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedPostalCode(selectedFilter) {\n removeSelectedFilter(vm.selectedPostalCodesFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedProgram(selectedFilter) {\n removeSelectedFilter(vm.selectedProgramsFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedRushOrder(selectedFilter) {\n removeSelectedFilter(vm.selectedRushOrderFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedSla(selectedFilter) {\n removeSelectedFilter(vm.selectedSLAFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedStatus(selectedFilter) {\n removeSelectedFilter(vm.selectedStatusesFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedType(selectedFilter) {\n removeSelectedFilter(vm.selectedTypesFilter, selectedFilter);\n applyFilters();\n }\n function removeSelectedFilter(selectedFilterList, selectedFilter) {\n var idx = _.findIndex(selectedFilterList, function (filter) {\n return filter.value == selectedFilter.value;\n });\n if (idx > -1) {\n selectedFilterList.splice(idx, 1);\n }\n }\n function reload() {\n initializeOrders(vm.originalServiceOrders);\n if (vm.searchInput) {\n if (vm.searchInput.length !== 0) {\n search();\n }\n }\n }\n function resetFilters() {\n vm.searchInput = null;\n vm.selectedAssignedTechnicianFilter = [];\n vm.selectedContactForAppointment = [];\n vm.selectedCustomersFilter = [];\n vm.selectedPostalCodesFilter = [];\n vm.selectedProgramsFilter = [];\n vm.selectedRushOrderFilter = [];\n vm.selectedSLAFilter = [];\n vm.selectedStatusesFilter = [];\n vm.selectedTypesFilter = [];\n vm.selectedInvoiceStatusFilter = [];\n vm.selectedInvoiceNumbersFilter = [];\n vm.selectedJurisdictionFilter = [];\n vm.resetcheck = true;\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\n\n // uncheck all check box's\n var checkboxList = $(\"input[info='filter']\");\n _.forEach(checkboxList, function (checkbox) {\n $(checkbox).prop('checked', false);\n });\n\n // remove checked count\n $('.FP-Orders__refine-results__filter-panel__legend span:first-child').text('');\n load();\n }\n function resetOrders() {\n vm.serviceOrderLoaded = false;\n vm.isInvoiceSession = !vm.isInvoiceSession;\n vm.redrawLeftNav = false;\n vm.searchInput = null;\n vm.selectedAssignedTechnicianFilter = [];\n vm.selectedContactForAppointment = [];\n vm.selectedCustomersFilter = [];\n vm.selectedPostalCodesFilter = [];\n vm.selectedProgramsFilter = [];\n vm.selectedRushOrderFilter = [];\n vm.selectedSLAFilter = [];\n vm.selectedStatusesFilter = [];\n vm.selectedTypesFilter = [];\n vm.selectedInvoiceStatusFilter = [];\n vm.selectedInvoiceNumbersFilter = [];\n vm.selectedJurisdictionFilter = [];\n\n // remove all check box's\n $(\"input[info='filter']\").parent().remove();\n\n // uncheck all check box's\n var checkboxList = $(\"input[info='filter']\");\n _.forEach(checkboxList, function (checkbox) {\n $(checkbox).prop('checked', false);\n });\n\n // remove checked count\n $('.FP-Orders__refine-results__filter-panel__legend span:first-child').text('');\n load();\n }\n function setFilters() {\n var selectedFilters = sessionStorageService.get(assetService.storageKeys.selectedFilters);\n vm.removeFilters = sessionStorageService.get('checkAllOrders');\n if (vm.removeFilters == true || vm.resetcheck == true) {\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\n selectedFilters = null;\n }\n if (selectedFilters) {\n vm.selectedAssignedTechnicianFilter = selectedFilters.selectedAssignedTechnicianFilter;\n vm.selectedContactForAppointment = selectedFilters.selectedContactForAppointment;\n vm.selectedCustomersFilter = selectedFilters.selectedCustomersFilter;\n vm.selectedPostalCodesFilter = selectedFilters.selectedPostalCodesFilter;\n vm.selectedProgramsFilter = selectedFilters.selectedProgramsFilter;\n vm.selectedRushOrderFilter = selectedFilters.selectedRushOrderFilter;\n vm.selectedSLAFilter = selectedFilters.selectedSLAFilter;\n vm.selectedStatusesFilter = selectedFilters.selectedStatusesFilter;\n vm.selectedTypesFilter = selectedFilters.selectedTypesFilter;\n vm.selectedInvoiceStatusFilter = selectedFilters.selectedInvoiceStatusFilter;\n vm.selectedInvoiceNumbersFilter = selectedFilters.selectedInvoiceNumbersFilter;\n vm.selectedJurisdictionFilter = selectedFilters.selectedJurisdictionFilter;\n }\n\n // Customers Filter\n var uniqCustomers = _.chain(vm.serviceOrders).map(_customer).map(function (obj) {\n return obj.name;\n }).compact().uniq().value();\n var customersFilterList = _.map(vm.selectedCustomersFilter, function (filter) {\n return filter.value;\n });\n vm.customers = _.map(uniqCustomers, function (item) {\n return {\n value: item,\n text: item,\n selected: _.includes(customersFilterList, item),\n active: false\n };\n });\n vm.customers = _.sortBy(vm.customers, function (o) {\n return o.value;\n });\n var uniqPostalCodes = _.chain(vm.serviceOrders).map(_serviceAddress).map(function (obj) {\n if (obj) {\n if (obj.hasOwnProperty('postalCode')) {\n return obj.postalCode;\n }\n }\n return '';\n }).compact().uniq().value();\n var postalCodesFilterList = _.map(vm.selectedPostalCodesFilter, function (filter) {\n return filter.value;\n });\n vm.postalCodes = _.map(uniqPostalCodes, function (item) {\n return {\n value: item,\n text: item,\n selected: _.includes(postalCodesFilterList, item),\n active: false\n };\n });\n vm.postalCodes = _.sortBy(vm.postalCodes, function (o) {\n return o.value;\n });\n\n // Programs Filter\n var programsFilterList = _.map(vm.selectedProgramsFilter, function (filter) {\n return filter.value;\n });\n vm.programs = _.map(_.uniqBy(vm.serviceOrders, _program), function (item) {\n return {\n value: item.program,\n text: item.programName,\n selected: _.includes(programsFilterList, item.program),\n active: false\n };\n });\n vm.programs = _.sortBy(vm.programs, function (o) {\n return o.value;\n });\n\n // Status Filter\n var statusFilterList = _.map(vm.selectedStatusesFilter, function (filter) {\n return filter.value;\n });\n vm.statuses = _.map(_.uniqBy(vm.serviceOrders, _status), function (item) {\n return {\n value: item.soStatus,\n text: item.soStatusName,\n selected: _.includes(statusFilterList, item.soStatus),\n active: false\n };\n });\n vm.statuses = _.filter(vm.statuses, function (o) {\n return _statusFilters.includes(o.value);\n });\n vm.statuses = _.sortBy(vm.statuses, function (o) {\n return o.value;\n });\n\n // Types Filter\n var typesFilterList = _.map(vm.selectedTypesFilter, function (filter) {\n return filter.value;\n });\n vm.types = _.map(_.uniqBy(vm.serviceOrders, _type), function (item) {\n return {\n value: item.soType,\n text: item.soTypeName,\n selected: _.includes(typesFilterList, item.soType),\n active: false\n };\n });\n vm.types = _.sortBy(vm.types, function (o) {\n return o.value;\n });\n\n // Invoice Numbers Filter\n var invoiceNumbersFilterList = _.map(vm.selectedInvoiceNumbersFilter, function (filter) {\n return filter.value;\n });\n vm.invoiceNumbers = _.map(_.uniqBy(vm.serviceOrders, _invoiceField), function (item) {\n return {\n value: item.contractorInvoiceNumber,\n text: item.contractorInvoiceNumber,\n selected: _.includes(invoiceNumbersFilterList, item.contractorInvoiceNumber),\n active: false\n };\n });\n vm.invoiceNumbers = _.sortBy(vm.invoiceNumbers, function (o) {\n return o.value;\n });\n\n // Assigned Technicians Filter\n var uniqAssignedTechnicians = _.chain(vm.serviceOrders).map(_assignedTechnician).map(function (obj) {\n return obj.name;\n }).compact().uniq().value();\n var assignedTechniciansFilterList = _.map(vm.selectedAssignedTechnicianFilter, function (filter) {\n return filter.value;\n });\n vm.assignedTechnicians = _.map(uniqAssignedTechnicians, function (item) {\n return {\n value: item,\n text: item,\n selected: _.includes(assignedTechniciansFilterList, item),\n active: false\n };\n });\n vm.assignedTechnicians = _.sortBy(vm.assignedTechnicians, function (o) {\n return o.value;\n });\n\n // Invoice Status Filter\n var invoiceStatusFilterList = _.map(vm.selectedInvoiceStatusFilter, function (filter) {\n return filter.value;\n });\n vm.invoiceStatuses = _.map(_.uniqBy(vm.serviceOrders, _status), function (item) {\n return {\n value: item.soStatus,\n text: item.soStatusName,\n selected: _.includes(invoiceStatusFilterList, item.soStatus),\n active: false\n };\n });\n vm.invoiceStatuses = _.filter(vm.invoiceStatuses, function (o) {\n return _invoiceStatusFilters.includes(o.value);\n });\n vm.invoiceStatuses = _.sortBy(vm.invoiceStatuses, function (o) {\n return o.value;\n });\n\n // Rush Order filter\n var rushOrderFilterList = _.map(vm.selectedRushOrderFilter, function (filter) {\n return filter.value;\n });\n vm.rushOrders = _.map(assetService.boolOptions, function (item) {\n return {\n value: item.value,\n text: item.text,\n selected: _.includes(rushOrderFilterList, item.value),\n active: false\n };\n });\n vm.rushOrders = _.sortBy(vm.rushOrders, function (o) {\n return o.value;\n });\n\n // SLA Filter\n var slaFilterList = _.map(vm.selectedSLAFilter, function (filter) {\n return filter.value;\n });\n vm.slaOptions = _.map(Object.values(assetService.slaOptionsFilter), function (item) {\n return {\n value: item.value,\n text: item.text,\n selected: _.includes(slaFilterList, item.value),\n active: false\n };\n });\n\n // Jurisdiction Filter\n var uniqJurisdictions = _.chain(vm.serviceOrders).map(_serviceAddress).filter(function (obj) {\n if (obj) {\n if (obj.hasOwnProperty('jurisdiction')) {\n return true;\n }\n }\n return false;\n }).map(function (obj) {\n return obj.jurisdiction;\n }).compact().uniq().value();\n var jurisdictionFilterList = _.map(vm.selectedJurisdictionFilter, function (filter) {\n return filter.value;\n });\n vm.jurisdictions = _.map(uniqJurisdictions, function (item) {\n return {\n value: item,\n text: item,\n selected: _.includes(jurisdictionFilterList, item),\n active: false\n };\n });\n vm.jurisdictions = _.sortBy(vm.jurisdictions, function (o) {\n return o.value;\n });\n\n // Contact For Appointment filter\n var contactForAppointmentFilterList = _.map(vm.selectedContactForAppointment, function (filter) {\n return filter.value;\n });\n vm.contactForAppointments = _.map(assetService.boolOptions, function (item) {\n return {\n value: item.value,\n text: item.text,\n selected: _.includes(contactForAppointmentFilterList, item.value),\n active: false\n };\n });\n vm.contactForAppointments = _.sortBy(vm.contactForAppointments, function (o) {\n return o.value;\n });\n if (selectedFilters) {\n applyFilters();\n }\n }\n function initializeOrders(serviceOrders) {\n vm.serviceOrders = [];\n vm.workingSetServiceOrders = [];\n resetSelected();\n _.forEach(serviceOrders, function (item) {\n item.disabled = true;\n item.selected = false;\n item.statusObj = angular.copy(genericHelperService.getStatusObject(item));\n item.selected = false;\n vm.serviceOrders.push(item);\n vm.workingSetServiceOrders.push(item);\n if (item.soStatus === _statusAccepted) {\n if (!item.assignedTechnician.hasOwnProperty('name') || item.assignedTechnician.hasOwnProperty('name') && item.assignedTechnician.name === '') {\n item.disabled = false;\n }\n }\n if (item.soStatus === _statusScheduled) {\n item.disabled = false;\n }\n if (item.soStatus === _statusReviewed && item.assignedTechnician && item.assignedTechnician.cdpId && !item.contractorInvoiceNumber) {\n vm.showBundleOrdersOption = true;\n item.disabled = false;\n }\n });\n vm.serviceOrders = applySorting(vm.serviceOrders, vm.selectedSortField !== null ? vm.selectedSortField : _defaultSortOption);\n if (vm.serviceOrders.length == 0) {\n vm.noWorkOrders = true;\n } else {\n vm.setPage(1);\n }\n }\n function refreshData() {\n if (vm.isInvoiceSession) {\n refreshInvoiceOrders();\n } else {\n refreshAcceptedOrders();\n }\n }\n function refreshInvoiceOrders() {\n loadInvoiceOrders().then(function () {\n vm.showRefreshBanner = false;\n }, function () {});\n }\n function refreshAcceptedOrders() {\n loadAcceptedOrders().then(function () {\n vm.showRefreshBanner = false;\n }, function () {});\n }\n function resetSelected() {\n vm.workingSetServiceOrders.forEach(function (item) {\n item.selected = false;\n });\n vm.buttons.invoice.counter = 0;\n vm.buttons.invoice.disabled = true;\n vm.buttons.dispatch.counter = 0;\n vm.buttons.dispatch.disabled = true;\n vm.buttons.assign.counter = 0;\n vm.buttons.assign.disabled = true;\n vm.selectAllModel = false;\n }\n function search() {\n if (vm.searchInput.length === 0) {\n applyFilters();\n } else {\n var serviceOrdersCollection = new DataCollection(vm.serviceOrders);\n _searchableFields.assignedTechnicianFilter[\"\".concat(assetService.searchFilterKeys.assignedTechnician, \"__icontains\")] = vm.searchInput;\n _searchableFields.customerNameFilter[\"\".concat(assetService.searchFilterKeys.customerName, \"__icontains\")] = vm.searchInput;\n _searchableFields.invoiceNumberFilter[\"\".concat(assetService.searchFilterKeys.invoiceNumber, \"__icontains\")] = vm.searchInput;\n _searchableFields.statusFilter[\"\".concat(assetService.searchFilterKeys.status, \"__icontains\")] = vm.searchInput;\n _searchableFields.typeFilter[\"\".concat(assetService.searchFilterKeys.type, \"__icontains\")] = vm.searchInput;\n _searchableFields.programFilter[\"\".concat(assetService.searchFilterKeys.program, \"__icontains\")] = vm.searchInput;\n _searchableFields.workOrderIdFilter[\"\".concat(assetService.searchFilterKeys.workOrderId, \"__icontains\")] = vm.searchInput;\n vm.serviceOrderFounded = serviceOrdersCollection.query().filter(_searchableFields.assignedTechnicianFilter, _searchableFields.customerNameFilter, _searchableFields.invoiceNumberFilter, _searchableFields.statusFilter, _searchableFields.typeFilter, _searchableFields.programFilter, _searchableFields.workOrderIdFilter).values();\n initializeOrders(vm.serviceOrderFounded);\n }\n }\n function selectAll() {\n vm.workingSetServiceOrders.forEach(function (item) {\n if (!item.disabled) {\n var itemCountable = item.selected !== vm.selectAllModel;\n item.selected = vm.selectAllModel;\n calculateButtonsCounter(item, itemCountable);\n }\n });\n }\n function setPage(page) {\n if (page >= 1 || typeof vm.pager !== 'undefined' && page <= vm.pager.totalPages) {\n if (vm.workingSetServiceOrders.length > 0) {\n vm.noWorkingSetWorkOrders = false;\n vm.noWorkOrders = false;\n vm.workingSetServiceOrders = applySorting(vm.workingSetServiceOrders, vm.selectedSortField !== null ? vm.selectedSortField : _defaultSortOption);\n vm.pager = pagerService.createPager(assetService.storageKeys.acceptedOrdersPager, vm.workingSetServiceOrders.length, page, vm.ordersPerPage);\n vm.currentPageWorkingSetServiceOrders = vm.workingSetServiceOrders.slice(vm.pager.startIndex, vm.pager.endIndex + 1);\n } else {\n vm.noWorkingSetWorkOrders = true;\n }\n }\n }\n function startPollingAcceptedOrders() {\n var _url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPAcceptedOrdersUrl());\n return acceptedOrdersPollingWebWorkerService.callWebWorker(_url).then(function (result) {\n if (result.length > 0) {\n vm.showRefreshBanner = true;\n }\n }, function (e) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function startPollingInvoiceOrders() {\n var _url = \"\".concat(window.location.origin, \"/\").concat(apiConfigService.get.getCEPInvoiceOrdersUrl());\n return invoiceOrdersPollingWebWorkerService.callWebWorker(_url).then(function (result) {\n if (result.length > 0) {\n vm.showRefreshBanner = true;\n }\n }, function (e) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function toggleFilters() {\n vm.showMoreFilters = !vm.showMoreFilters;\n }\n function load() {\n var userRole = currentUserService.getUserRole();\n vm.isContractor = userRole === assetService.userTypes.CONTRACTOR;\n var selectedFilters = sessionStorageService.get(assetService.storageKeys.selectedFilters);\n if (vm.resetcheck) {\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\n }\n vm.getAllOrders = sessionStorageService.get('checkAllOrders');\n if (vm.getAllOrders == true) {\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\n }\n if (vm.isInvoiceSession || selectedFilters && (selectedFilters.selectedInvoiceNumbersFilter.length > 0 || selectedFilters.selectedInvoiceStatusFilter.length > 0)) {\n vm.title = assetService.apiServices.invoiceOrders.name;\n vm.buttons.resetOrders.label = assetService.btnLabels.ACCEPTED_ORDERS;\n vm.isInvoiceSession = true;\n } else {\n vm.title = assetService.apiServices.acceptedOrders.name;\n vm.buttons.resetOrders.label = assetService.btnLabels.INVOICE_ORDERS;\n vm.isInvoiceSession = false;\n }\n if (vm.isInvoiceSession) {\n loadInvoiceOrders().then(function () {\n vm.loadingSpinner = false;\n }, function () {});\n } else {\n loadAcceptedOrders().then(function () {\n vm.loadingSpinner = false;\n }, function () {});\n }\n }\n function loadInvoiceOrders() {\n return indexedDbService.getInvoiceOrders().then(function (result) {\n if (result) {\n if (result.length > 0) {\n vm.originalServiceOrders = dtoService.transformServiceOrders(result, assetService.storageKeys.toggleFlags.invoiceOrders);\n initializeOrders(vm.originalServiceOrders);\n setFilters();\n setModels();\n } else {\n vm.noWorkOrders = true;\n }\n startPollingInvoiceOrders();\n vm.serviceOrderLoaded = true;\n vm.redrawLeftNav = true;\n }\n });\n }\n function loadAcceptedOrders() {\n return indexedDbService.getAcceptedOrders().then(function (result) {\n if (result) {\n if (result.length > 0) {\n vm.originalServiceOrders = dtoService.transformServiceOrders(result, assetService.storageKeys.toggleFlags.acceptedOrders);\n initializeOrders(vm.originalServiceOrders);\n setFilters();\n setModels();\n } else {\n vm.noWorkOrders = true;\n }\n startPollingAcceptedOrders();\n vm.serviceOrderLoaded = true;\n vm.redrawLeftNav = true;\n }\n });\n }\n /* ---------------Initialization-------------------*/\n var init = function init() {\n indexedDbService.ensureDb().then(function () {\n load();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n };\n init();\n}\napp.controller('correspondenceReviewAndEnrolleController', correspondenceReviewAndEnrolleController);\ncorrespondenceReviewAndEnrolleController.$inject = ['$state', 'sessionStorageService', 'assetService'];\nfunction correspondenceReviewAndEnrolleController($state, sessionStorageService, assetService) {\n /**\r\n * Scope Vars\r\n */\n var widgetUsers = null;\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.selected = false;\n vm.data = [];\n vm.accounts = {};\n\n /**\r\n * Function Declarations\r\n */\n var init = init;\n\n /**\r\n * Function Definitions\r\n */\n\n vm.doChanges = function (change) {\n if (change) $state.go('paperlessBilling.reviewAndEnroll'); //continue with enrollment\n else $state.go('paperlessBilling.selectAccounts');\n };\n vm.cancel = function () {\n var data = {\n accounts: []\n };\n vm.accounts.accounts.map(function (item) {\n if (!item.isSuccess) item.selected = false;\n data.accounts.push(item);\n });\n vm.data = [];\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, data);\n $state.go('paperlessBilling.selectAccounts');\n };\n function load() {\n vm.accounts = sessionStorageService.get(assetService.storageKeys.paperlessBilding.account);\n vm.accounts.accounts.map(function (item) {\n if (item.selected) vm.data.push(item);\n });\n }\n init = function init() {\n load();\n };\n init();\n}\napp.controller('correspondenceSelectAccountController', correspondenceSelectAccountController);\ncorrespondenceSelectAccountController.$inject = ['sessionStorageService', 'assetService', '$state'];\nfunction correspondenceSelectAccountController(sessionStorageService, assetService, $state) {\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.selected = false;\n vm.selectEnroll = 0;\n vm.data = {};\n\n /**\r\n * Function Declarations\r\n */\n var init = init;\n\n /**\r\n * Function Definitions\r\n */\n\n vm.doChanges = function (change) {\n if (change && vm.selectEnroll > 0) {\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, vm.data);\n $state.go('paperlessBilling.reviewAndEnroll');\n } else $state.go('paperlessBilling.selectAccounts'); //go previous\n };\n vm.changueSelect = function (item) {\n if (item == -1) selectAll();else {\n vm.selected = false;\n if (!vm.data.accounts[item].selected) vm.selectEnroll++;else vm.selectEnroll--;\n }\n };\n vm.cancel = function () {\n changeAll(false);\n };\n var selectAll = function selectAll() {\n changeAll(!vm.selected);\n };\n changeAll = function changeAll(change) {\n data = [];\n vm.selectEnroll = 0;\n vm.data.accounts.map(function (item) {\n if (!item.isSuccess) {\n item.selected = change;\n if (change) vm.selectEnroll++;\n }\n data.push(item);\n });\n vm.data.accounts = data;\n };\n function load() {\n vm.selectEnroll = 0;\n vm.data = sessionStorageService.get(assetService.storageKeys.paperlessBilding.account);\n vm.data.accounts.forEach(function (element) {\n if (element.selected) vm.selectEnroll++;\n });\n }\n init = function init() {\n load();\n };\n init();\n}\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-use-before-define */\napp.controller('FPCompanyAlertsController', FPCompanyAlertsController);\nFPCompanyAlertsController.$inject = ['$scope', 'FPAssetService'];\nfunction FPCompanyAlertsController($scope, assetService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n\n /**\r\n * Global Vars\r\n */\n vm.loadingSpinner = true;\n vm.serviceRequestAlertsLoaded = false;\n vm.workOrderAlertsLoaded = false;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.workOrderAlertsLoaded, function (event, ars) {\n vm.workOrderAlertsLoaded = true;\n if (vm.serviceRequestAlertsLoaded) {\n vm.loadingSpinner = false;\n }\n });\n $scope.$on(assetService.events.serviceRequestAlertsLoaded, function (event, ars) {\n vm.serviceRequestAlertsLoaded = true;\n if (vm.workOrderAlertsLoaded) {\n vm.loadingSpinner = false;\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n var init = function init() {\n /* empty function */\n };\n init();\n}\napp.controller('FPAnalyticsController', FPAnalyticsController);\nFPAnalyticsController.$inject = ['$scope', 'FPAssetService'];\nfunction FPAnalyticsController($scope, assetService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n vm.workOrderAnalyticsLoaded = false;\n vm.serviceRequestAnalyticsLoaded = false;\n\n /* --------------Function Declarations-----------------------*/\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.workOrderAnalyticsLoaded, function (event, ars) {\n vm.workOrderAnalyticsLoaded = true;\n if (vm.serviceRequestAnalyticsLoaded) {\n vm.loadingSpinner = false;\n }\n });\n $scope.$on(assetService.events.serviceRequestAnalyticsLoaded, function (event, ars) {\n vm.serviceRequestAnalyticsLoaded = true;\n if (vm.workOrderAnalyticsLoaded) {\n vm.loadingSpinner = false;\n }\n });\n\n /* --------------Function Definitions-----------------------*/\n var init = function init() {/* empty function*/};\n init();\n}\napp.controller('FPCompanyDetailsController', FPCompanyDetailsController);\nFPCompanyDetailsController.$inject = ['$scope', 'FPAssetService', 'FPBroadcastService', 'sessionStorageService'];\nfunction FPCompanyDetailsController($scope, assetService, broadcastService, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var _roleContractor = assetService.userRoles.contractor;\n var _roleTechnician = assetService.userRoles.technician;\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.data = {\n name: null,\n billingAddress: null,\n jurisdiction: null,\n email: null,\n fieldCoordinator: null,\n contactNumber: null,\n numberOfAdmins: 0,\n numberOfTechnicians: 0\n };\n vm.companyDetails = null;\n vm.usersReady = false;\n vm.usersLoaded = false;\n vm.companyDetailsLoaded = false;\n vm.companyDetailsReady = false;\n vm.loadingSpinner = true;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.usersLoaded, function () {\n var allUsers = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n vm.data.numberOfAdmins = 0;\n vm.data.numberOfTechnicians = 0;\n allUsers.forEach(function (user) {\n if (user.role.toLowerCase() === _roleContractor) {\n vm.data.numberOfAdmins++;\n } else if (user.role.toLowerCase() === _roleTechnician) {\n vm.data.numberOfTechnicians++;\n }\n });\n vm.usersReady = true;\n vm.usersLoaded = true;\n if (vm.companyDetailsLoaded) {\n load();\n }\n });\n $scope.$on(assetService.events.companyDetailsLoaded, function () {\n vm.companyDetailsLoaded = true;\n if (vm.usersLoaded) {\n load();\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n function formatBillingAddress(address) {\n var formattedAddress = address.line1;\n if (address.line2) {\n formattedAddress += \" \".concat(address.line2);\n }\n formattedAddress += \" \".concat(address.town);\n formattedAddress += \" \".concat(address.region.isocode);\n formattedAddress += \" \".concat(address.postalCode);\n return formattedAddress;\n }\n function setModels() {\n vm.data.name = vm.companyDetails.name;\n vm.data.billingAddress = formatBillingAddress(vm.companyDetails.billingAddress);\n vm.data.jurisdiction = vm.companyDetails.jurisdiction;\n vm.data.email = vm.companyDetails.email;\n vm.data.fieldCoordinator = vm.companyDetails.fieldCoordinator;\n vm.data.contactNumber = vm.companyDetails.contactNumber;\n vm.companyDetailsReady = true;\n broadcastService.triggerCompanyDetailsReady();\n vm.loadingSpinner = false;\n }\n function load() {\n vm.companyDetails = sessionStorageService.get(assetService.storageKeys.widgetsData.companyDetails);\n setModels();\n }\n var init = function init() {/* empty function */};\n init();\n}\napp.controller('FPCompanyInvoicesWidgetController', FPCompanyInvoicesWidgetController);\nFPCompanyInvoicesWidgetController.$inject = ['$scope', 'FPAssetService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'FPInvoiceService'];\nfunction FPCompanyInvoicesWidgetController($scope, assetService, dtoService, indexedDbService, invoiceService) {\n /**\r\n * Scope Vars\r\n */\n\n /**\r\n * Global Vars\r\n */\n\n var vm = this;\n vm.companyInvoicesReady = false;\n vm.companyInvoices = null;\n vm.data = {\n serviceOrders: []\n };\n vm.invoiceOrdersUrl = window.location.origin + assetService.sitePagesUrlPaths.INVOICE_ORDERS;\n vm.loadingSpinner = true;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.invoiceOrdersLoaded, function () {\n load();\n });\n\n /**\r\n * Function Definitions\r\n */\n function setModels() {\n vm.data.serviceOrders = invoiceService.applyGrouping(vm.companyInvoices);\n vm.companyInvoicesReady = true;\n vm.loadingSpinner = false;\n }\n function load() {\n return indexedDbService.getInvoiceOrders().then(function (result) {\n if (result && result.length > 0) {\n vm.companyInvoices = dtoService.transformServiceOrders(result, assetService.storageKeys.toggleFlags.invoiceOrders);\n setModels();\n } else {\n vm.companyInvoicesReady = true;\n vm.loadingSpinner = false;\n }\n });\n }\n vm.getOrderCount = function (invoices) {\n return invoices.length;\n };\n vm.takeStatus = function (serviceOrders) {\n return assetService.status[serviceOrders[0].soStatus].label;\n };\n\n /* ---------------Initialization-------------------*/\n var init = function init() {/* empty function*/};\n init();\n}\napp.controller('FPAllUsersController', FPAllUsersController);\nFPAllUsersController.$inject = ['$log', '$scope', 'FPDateHelperService', 'FPBroadcastService', 'sessionStorageService', 'assetService', 'refreshCEPUsersService', 'getCEPUsersService', 'FPModalService'];\nfunction FPAllUsersController($log, $scope, FPDateHelperService, broadcastService, sessionStorageService, assetService, refreshCEPUsersService, getCEPUsersService, FPModalService) {\n /**\r\n * Scope Vars\r\n */\n var _baseUrl = window.location.origin;\n var _errorsPageUrl = assetService.pageUrls.errorPage;\n\n /**\r\n * Global Vars\r\n */\n var vm = this;\n vm.allUsers = null;\n vm.data = {\n users: []\n };\n vm.usersReady = false;\n vm.addendum = null;\n vm.loadingSpinner = true;\n vm.showInviteUserModal = false;\n vm.showUserAdminModal = false;\n\n /**\r\n * Function Declarations\r\n */\n vm.getDateFromFullDate = getDateFromFullDate;\n vm.inviteUser = inviteUser;\n vm.maintainUsers = maintainUsers;\n\n /**\r\n * Watchers\r\n */\n\n $scope.$on(assetService.events.usersLoaded, function () {\n load();\n });\n $scope.$on(assetService.events.usersReloadRequired, function () {\n vm.usersReady = false;\n vm.loadingSpinner = true;\n if (assetService.apiConfig.useLocalHost) {\n getUsers().then(function () {\n broadcastService.usersLoaded();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n } else {\n getRefreshUsers().then(function () {\n broadcastService.usersLoaded();\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n function inviteUser() {\n FPModalService.inviteUserModal();\n }\n function maintainUsers() {\n FPModalService.userAdministrationModal();\n }\n function setModels() {\n var _role = null;\n vm.data.users = vm.allUsers.map(function (user) {\n if (user.role.toLowerCase() === assetService.userRoles.contractor) {\n _role = assetService.userRoleLabels.contractor;\n } else {\n _role = assetService.userRoleLabels.technician;\n }\n return {\n name: user.name,\n role: _role,\n // email: user.email,\n effectiveDate: user.effectiveDate,\n status: user.status\n };\n });\n vm.usersReady = true;\n broadcastService.triggerUsersReady();\n vm.loadingSpinner = false;\n }\n function getRefreshUsers() {\n setFlag(assetService.storageKeys.toggleFlags.users);\n return refreshCEPUsersService.sitecore.refreshUsers().then(function (result) {\n vm.allUsers = result.users;\n _.forEach(vm.allUsers, function (user) {\n user.toggleFlag = sessionStorageService.get(assetService.storageKeys.toggleFlags.users);\n });\n setModels();\n sessionStorageService.set(assetService.storageKeys.widgetsData.users, vm.allUsers);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function getUsers() {\n setFlag(assetService.storageKeys.toggleFlags.users);\n return getCEPUsersService.apigee.getCEPUsers().then(function (result) {\n vm.allUsers = result.users;\n _.forEach(vm.allUsers, function (user) {\n user.toggleFlag = sessionStorageService.get(assetService.storageKeys.toggleFlags.users);\n });\n setModels();\n sessionStorageService.set(assetService.storageKeys.widgetsData.users, vm.allUsers);\n }, function (error) {\n if (assetService.apiConfig.showAppErrors) $log.error(error);\n });\n }\n function setFlag(flag) {\n var toggleFlag = sessionStorageService.get(flag);\n toggleFlag = !toggleFlag ? '1' : toggleFlag === 1 ? '0' : '1';\n sessionStorageService.set(flag, toggleFlag);\n }\n function load() {\n vm.allUsers = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n setModels();\n }\n function getDateFromFullDate(date) {\n return FPDateHelperService.getDateFromFullDate(date);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {/*empty function*/};\n init();\n}\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\napp.controller('FPCustomerLogisticsController', FPCustomerLogisticsController);\nFPCustomerLogisticsController.$inject = ['$scope', 'FPAssetService', 'FPCurrentUserService', 'FPDateHelperService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'sessionStorageService', 'FPModalService'];\nfunction FPCustomerLogisticsController($scope, assetService, currentUserService, dateHelperService, genericHelperService, serviceOrdersFactory, sessionStorageService, FPModalService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _allTechnicians = [];\n var kwCdpId = assetService.strings.CDPID;\n var kwName = assetService.strings.NAME;\n var kwMeterId = assetService.strings.METERID;\n var kwValue = assetService.strings.VALUE;\n var roleTechnician = assetService.userTypes.TECHNICIAN;\n\n /**\r\n * Global Vars\r\n */\n\n vm.currentOrderStatus = {};\n vm.disabled = false;\n vm.disableAll = false;\n vm.dropdowns = {\n scheduledStartDateHour: null,\n scheduledEndDateHour: null,\n rescheduledStartDateHour: null,\n rescheduledEndDateHour: null,\n meterNumbers: null,\n firstAttemptDateHour: null,\n allTechnicians: null\n };\n vm.loadingSpinner = true;\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\n vm.serviceOrder = {};\n vm.serviceOrderLoaded = false;\n vm.statusCompleted = assetService.status.COMPLETED;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.validationPatterns = assetService.validationPatterns;\n vm.woorSR = assetService.woorSRType.SERVICE_REQUEST;\n\n /**\r\n * Function Declarations\r\n */\n vm.addDays = addDays;\n vm.cancelWorkOrder = cancelWorkOrder;\n vm.conversionToStandardTime = conversionToStandardTime;\n vm.onChange = onChange;\n vm.removeSelectedProp = removeSelectedProp;\n vm.saveChanges = saveChanges;\n vm.telFormat = telFormat;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.updateServiceOrder, function () {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /**\r\n * Function Definitions\r\n */\n function addDays(date, days) {\n return dateHelperService.addDays(date, days);\n }\n function cancelWorkOrder() {\n FPModalService.cancelModal();\n }\n function conversionToStandardTime(militaryTime) {\n return dateHelperService.conversionToStandardTime(militaryTime);\n }\n function onChange() {\n var serviceOrder = angular.copy(vm.form);\n if (vm.form.customerContactHistory.firstAttemptDateDukeCalendar) {\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = vm.form.customerContactHistory.firstAttemptDateDukeCalendar;\n } else if ($scope.customerLogisticsForm.hasOwnProperty('firstAttemptDateDukeCalendar')) {\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = $scope.customerLogisticsForm.firstAttemptDateDukeCalendar.$modelValue ? $scope.customerLogisticsForm.firstAttemptDateDukeCalendar.$modelValue : '';\n }\n if (vm.form.scheduledStartDateDukeCalendar) {\n serviceOrder.scheduledStartDateDukeCalendar = vm.form.scheduledStartDateDukeCalendar;\n } else if ($scope.customerLogisticsForm.hasOwnProperty('scheduledStartDateDukeCalendar')) {\n serviceOrder.scheduledStartDateDukeCalendar = $scope.customerLogisticsForm.scheduledStartDateDukeCalendar.$modelValue ? $scope.customerLogisticsForm.scheduledStartDateDukeCalendar.$modelValue : '';\n }\n if (vm.form.rescheduledStartDateDukeCalendar) {\n serviceOrder.rescheduledStartDateDukeCalendar = vm.form.rescheduledStartDateDukeCalendar;\n } else if ($scope.customerLogisticsForm.hasOwnProperty('rescheduledStartDateDukeCalendar')) {\n serviceOrder.rescheduledStartDateDukeCalendar = $scope.customerLogisticsForm.rescheduledStartDateDukeCalendar.$modelValue ? $scope.customerLogisticsForm.rescheduledStartDateDukeCalendar.$modelValue : '';\n }\n serviceOrdersFactory.updateServiceOrder(serviceOrder);\n }\n function setDropdowns() {\n vm.dropdowns = {\n allTechnicians: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(_allTechnicians, kwCdpId, kwName), kwValue, vm.serviceOrder.assignedTechnician.cdpId),\n scheduledStartDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.scheduledStartDateHour),\n scheduledEndDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.scheduledEndDateHour),\n rescheduledStartDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.rescheduledStartDateHour),\n rescheduledEndDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.rescheduledEndDateHour),\n firstAttemptDateHour: genericHelperService.setSelectedProp(assetService.hoursOptions, kwValue, vm.form.customerContactHistory.firstAttemptDateHour)\n };\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n var dropDownList = genericHelperService.createDropdownList(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId, kwMeterId);\n vm.dropdowns.meterNumbers = !vm.serviceOrder.serviceAddress.meterNumber ? dropDownList : genericHelperService.setSelectedProp(dropDownList, kwValue, vm.serviceOrder.serviceAddress.meterNumber[0].meterId);\n }\n }\n vm.loadingSpinner = false;\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n assignedTechnician: {\n name: vm.serviceOrder.assignedTechnician.name,\n badgeNumber: vm.serviceOrder.assignedTechnician.badgeId,\n badgeId: vm.serviceOrder.assignedTechnician.badgeId,\n cdpId: vm.serviceOrder.assignedTechnician.cdpId,\n effectiveDate: null,\n phone: null,\n role: null,\n status: null\n },\n customer: {\n name: vm.serviceOrder.customer.name,\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\n primaryEmailAddress: vm.serviceOrder.customer.primaryEmailAddress\n },\n serviceAddress: {\n line1: vm.serviceOrder.serviceAddress.line1,\n city: vm.serviceOrder.serviceAddress.city,\n state: vm.serviceOrder.serviceAddress.state,\n postalCode: vm.serviceOrder.serviceAddress.postalCode,\n county: vm.serviceOrder.serviceAddress.county,\n jurisdiction: vm.serviceOrder.serviceAddress.jurisdiction,\n meterNumber: [{\n meterId: null\n }],\n subDivision: vm.serviceOrder.serviceAddress.subDivision,\n directions: vm.serviceOrder.serviceAddress.directions\n },\n contactName: vm.serviceOrder.contactName,\n customerContactPreferences: {\n bestTimeToCall: vm.serviceOrder.customerContactPreferences.bestTimeToCall,\n notifyCustomerWhenInRoute: vm.serviceOrder.customerContactPreferences.notifyCustomerWhenInRoute,\n preferredEmailAddress: vm.serviceOrder.customerContactPreferences.preferredEmailAddress\n },\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateDukeCalendar,\n createdDateHour: !vm.serviceOrder.createdDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateHour,\n serviceComments: vm.serviceOrder.serviceComments,\n isRushOrder: vm.serviceOrder.isRushOrder,\n serviceOrderBalance: {\n value: 0\n },\n programEntitlementBalance: {\n value: 0\n },\n cdpIdAssignedTechnician: null,\n multipleTechnicianRequired: vm.serviceOrder.multipleTechnicianRequired,\n assignedOtherTechnician: vm.serviceOrder.assignedOtherTechnician,\n contractorInvoiceNumber: vm.serviceOrder.contractorInvoiceNumber,\n dukeInvoiceNumber: vm.serviceOrder.dukeInvoiceNumber,\n internalInvoiceNumber: vm.serviceOrder.contractorInternalRefNumber,\n scheduledStartDateDukeCalendar: !vm.serviceOrder.scheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateDukeCalendar,\n scheduledStartDateHour: !vm.serviceOrder.scheduledStartDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateHour,\n scheduledEndDateHour: !vm.serviceOrder.scheduledEndDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledEndDate) : vm.serviceOrder.scheduledEndDateHour,\n returnTripRequired: vm.serviceOrder.returnTripRequired,\n rescheduledStartDateDukeCalendar: !vm.serviceOrder.rescheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.rescheduledStartDate) : vm.serviceOrder.rescheduledStartDateDukeCalendar,\n rescheduledStartDateHour: !vm.serviceOrder.rescheduledStartDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.rescheduledStartDate) : vm.serviceOrder.rescheduledStartDateHour,\n rescheduledEndDateHour: !vm.serviceOrder.rescheduledEndDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.rescheduledEndDate) : vm.serviceOrder.rescheduledEndDateHour,\n customerContactHistory: {\n noOfContactAttempts: vm.serviceOrder.customerContactHistory.noOfContactAttempts,\n firstAttemptDateDukeCalendar: !vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar,\n firstAttemptDateHour: !vm.serviceOrder.customerContactHistory.firstAttemptDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateHour,\n contactComments: vm.serviceOrder.customerContactHistory.contactComments,\n contactForAppointment: vm.serviceOrder.customerContactHistory.contactForAppointment,\n contactForAppointmentComments: vm.serviceOrder.customerContactHistory.contactForAppointmentComments\n },\n woorSR: vm.serviceOrder.woorSR,\n soType: vm.serviceOrder.soType\n };\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId\n }];\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId);\n } else {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n }\n }\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\n var serviceOrderBalance = genericHelperService.formatCurrency(vm.serviceOrder.serviceOrderBalance.value);\n vm.form.serviceOrderBalance.value = serviceOrderBalance;\n var programEntitlementBalance = genericHelperService.formatCurrency(vm.serviceOrder.programEntitlementBalance.value);\n vm.form.programEntitlementBalance = programEntitlementBalance;\n }\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n setModels();\n var users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\n var allTechnicians = _.filter(users, function (user) {\n return user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE;\n });\n _allTechnicians = _.map(allTechnicians, function (item) {\n return {\n name: \"\".concat(item.name, \"-\").concat(item.badgeNumber),\n badgeNumber: item.badgeNumber,\n cdpId: item.cdpId,\n effectiveDate: item.effectiveDate,\n phone: item.phone,\n role: item.role,\n status: item.status\n };\n });\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.serviceOrder.soStatus === vm.statusSentToContractor.code) {\n vm.disableAll = true;\n }\n if (vm.currentOrderStatus.id >= assetService.status.READY_FOR_INVOICE.id) {\n vm.disableAll = true;\n }\n var currentUserRole = currentUserService.getUserRole();\n if (vm.disableAll || currentUserRole === roleTechnician) {\n vm.disabled = true;\n }\n setDropdowns();\n }\n function removeSelectedProp(list, propToDelete, currentPropValue) {\n var newList = angular.copy(list);\n var currentSelectedIndex = _.findIndex(newList, function (props) {\n return props[propToDelete] === currentPropValue;\n });\n if (currentSelectedIndex !== assetService.generalKeys.indexNotFound) {\n delete newList[currentSelectedIndex][propToDelete];\n return newList;\n }\n return newList;\n }\n function saveChanges() {/*empty function*/}\n function telFormat(telephoneNo) {\n return genericHelperService.telFormat(telephoneNo);\n }\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingController', FPTechnicalPricingController);\nFPTechnicalPricingController.$inject = ['FPAssetService', 'FPServiceOrdersFactory'];\nfunction FPTechnicalPricingController(assetService, serviceOrdersFactory) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.loadingSpinner = true;\n vm.serviceOrder = null;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\n vm.typeRemoval = assetService.soType.REMOVAL;\n vm.typeInspectionReplacement = assetService.soType.INSPECTION_REPLACEMENT;\n\n /* --------------Broadcast Watchers-----------------------*/\n\n /* --------------Function Definitions-----------------------*/\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPCompanyAlertsServiceRequestController', FPCompanyAlertsServiceRequestController);\nFPCompanyAlertsServiceRequestController.$inject = ['$scope', 'FPAssetService', 'FPAlertsService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'sessionStorageService'];\nfunction FPCompanyAlertsServiceRequestController($scope, assetService, alertsService, broadcastService, commonService, dtoService, indexedDbService, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _acceptedOrders = [];\n var _ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\n var _woorSRTypeWorkOrder = assetService.woorSRType.SERVICE_REQUEST;\n\n /**\r\n * Global Vars\r\n */\n vm.data = {\n newOrders: null,\n contactOrders: null,\n scheduleOrders: null,\n invoiceOrders: null,\n completeOrders: null\n };\n vm.serviceOrders = [];\n vm.companyServiceRequestAlertsReady = false;\n vm.ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\n\n /**\r\n * Function Declarations\r\n */\n vm.goToNewOrders = goToNewOrders;\n vm.goToContact = goToContact;\n vm.goToInvoice = goToInvoice;\n vm.goToSchedule = goToSchedule;\n vm.goToComplete = goToComplete;\n vm.goToViewAll = goToViewAll;\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.acceptedOrdersLoaded, function () {\n load();\n });\n\n /**\r\n * Function Definitions\r\n */\n function goToNewOrders() {\n var selectedFilters = setSLAFilter([{\n value: 'isNewServiceRequestOrder',\n text: 'New Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToContact() {\n var selectedFilters = setSLAFilter([{\n value: 'isContactServiceRequestOrder',\n text: 'Contact Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToInvoice() {\n var selectedFilters = setSLAFilter([{\n value: 'isInvoiceServiceRequestOrder',\n text: 'Invoice Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToSchedule() {\n var selectedFilters = setSLAFilter([{\n value: 'isScheduleServiceRequestOrder',\n text: 'Schedule Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToComplete() {\n var selectedFilters = setSLAFilter([{\n value: 'isCompleteServiceRequestOrder',\n text: 'Complete Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToViewAll() {\n var selectedFilters = setSLAFilter([{\n value: 'isNewServiceRequestOrder',\n text: 'New Service Request Order',\n selected: false\n }, {\n value: 'isContactServiceRequestOrder',\n text: 'Contact Service Request Order',\n selected: false\n }, {\n value: 'isInvoiceServiceRequestOrder',\n text: 'Invoice Service Request Order',\n selected: false\n }, {\n value: 'isScheduleServiceRequestOrder',\n text: 'Schedule Service Request Order',\n selected: false\n }, {\n value: 'isCompleteServiceRequestOrder',\n text: 'Complete Service Request Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function setSLAFilter(slaFilter) {\n return {\n selectedAssignedTechnicianFilter: [],\n selectedContactForAppointment: [],\n selectedCustomersFilter: [],\n selectedInvoiceNumbersFilter: [],\n selectedInvoiceStatusFilter: [],\n selectedJurisdictionFilter: [],\n selectedPostalCodesFilter: [],\n selectedProgramsFilter: [],\n selectedRushOrderFilter: [],\n selectedStatusesFilter: [],\n selectedSLAFilter: slaFilter,\n selectedTypesFilter: []\n };\n }\n function setModels() {\n vm.data.contactOrders = alertsService.calculateContactOrders(vm.serviceOrders);\n vm.data.scheduleOrders = alertsService.calculateScheduleOrders(vm.serviceOrders);\n vm.data.invoiceOrders = alertsService.calculateInvoiceOrders(vm.serviceOrders);\n vm.data.completeOrders = alertsService.calculateCompleteOrders(vm.serviceOrders);\n vm.data.newOrders = alertsService.calculateNewOrders(vm.serviceOrders);\n broadcastService.serviceRequestAlertsLoaded();\n vm.companyServiceRequestAlertsReady = true;\n }\n function load() {\n var promises = [getAcceptedOrders()];\n commonService.executePromises(promises).then(function () {\n vm.serviceOrders = _acceptedOrders;\n setModels();\n });\n function getAcceptedOrders() {\n return indexedDbService.getAcceptedOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _acceptedOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.acceptedOrders);\n }\n });\n }\n }\n var init = function init() {/* empty function*/};\n init();\n}\napp.controller('FPCompanyAlertsWorkOrderController', FPCompanyAlertsWorkOrderController);\nFPCompanyAlertsWorkOrderController.$inject = ['$scope', 'FPAssetService', 'FPAlertsService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService', 'sessionStorageService'];\nfunction FPCompanyAlertsWorkOrderController($scope, assetService, alertsService, broadcastService, commonService, dtoService, indexedDbService, sessionStorageService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _acceptedOrders = [];\n var _ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\n var _woorSRTypeWorkOrder = assetService.woorSRType.WORK_ORDER;\n\n /**\r\n * Global Vars\r\n */\n vm.data = {\n newOrders: null,\n contactOrders: null,\n scheduleOrders: null,\n invoiceOrders: null,\n completeOrders: null\n };\n vm.serviceOrders = [];\n vm.companyWorkOrderAlertsReady = false;\n vm.ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\n\n /**\r\n * Function Declarations\r\n */\n vm.goToNewOrders = goToNewOrders;\n vm.goToContact = goToContact;\n vm.goToInvoice = goToInvoice;\n vm.goToSchedule = goToSchedule;\n vm.goToComplete = goToComplete;\n vm.goToViewAll = goToViewAll;\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.acceptedOrdersLoaded, function () {\n load();\n });\n\n /**\r\n * Function Definitions\r\n */\n function goToNewOrders() {\n var selectedFilters = setSLAFilter([{\n value: 'isNewWorkOrder',\n text: 'New Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToContact() {\n var selectedFilters = setSLAFilter([{\n value: 'isContactWorkOrder',\n text: 'Contact Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToInvoice() {\n var selectedFilters = setSLAFilter([{\n value: 'isInvoiceWorkOrder',\n text: 'Invoice Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToSchedule() {\n var selectedFilters = setSLAFilter([{\n value: 'isScheduleWorkOrder',\n text: 'Schedule Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToComplete() {\n var selectedFilters = setSLAFilter([{\n value: 'isCompleteWorkOrder',\n text: 'Complete Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function goToViewAll() {\n var selectedFilters = setSLAFilter([{\n value: 'isNewWorkOrder',\n text: 'New Work Order',\n selected: false\n }, {\n value: 'isContactWorkOrder',\n text: 'Contact Work Order',\n selected: false\n }, {\n value: 'isInvoiceWorkOrder',\n text: 'Invoice Work Order',\n selected: false\n }, {\n value: 'isScheduleWorkOrder',\n text: 'Schedule Work Order',\n selected: false\n }, {\n value: 'isCompleteWorkOrder',\n text: 'Complete Work Order',\n selected: false\n }]);\n sessionStorageService.set(assetService.storageKeys.selectedFilters, selectedFilters);\n window.location.href = _ordersUrl;\n }\n function setSLAFilter(slaFilter) {\n return {\n selectedAssignedTechnicianFilter: [],\n selectedContactForAppointment: [],\n selectedCustomersFilter: [],\n selectedInvoiceNumbersFilter: [],\n selectedInvoiceStatusFilter: [],\n selectedJurisdictionFilter: [],\n selectedPostalCodesFilter: [],\n selectedProgramsFilter: [],\n selectedRushOrderFilter: [],\n selectedStatusesFilter: [],\n selectedSLAFilter: slaFilter,\n selectedTypesFilter: []\n };\n }\n function setModels() {\n vm.data.contactOrders = alertsService.calculateContactOrders(vm.serviceOrders);\n vm.data.scheduleOrders = alertsService.calculateScheduleOrders(vm.serviceOrders);\n vm.data.invoiceOrders = alertsService.calculateInvoiceOrders(vm.serviceOrders);\n vm.data.completeOrders = alertsService.calculateCompleteOrders(vm.serviceOrders);\n vm.data.newOrders = alertsService.calculateNewOrders(vm.serviceOrders);\n broadcastService.workOrderAlertsLoaded();\n vm.companyWorkOrderAlertsReady = true;\n }\n function load() {\n var promises = [getAcceptedOrders()];\n commonService.executePromises(promises).then(function () {\n vm.serviceOrders = _acceptedOrders;\n setModels();\n });\n function getAcceptedOrders() {\n return indexedDbService.getAcceptedOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _acceptedOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.acceptedOrders);\n }\n });\n }\n }\n var init = function init() {/* empty function*/};\n init();\n}\napp.controller('FPAnalyticsServiceRequestController', FPAnalyticsServiceRequestController);\nFPAnalyticsServiceRequestController.$inject = ['$scope', 'FPAssetService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService'];\nfunction FPAnalyticsServiceRequestController($scope, assetService, broadcastService, commonService, dtoService, indexedDbService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _acceptedOrders = [];\n var _invoiceOrders = [];\n var _woorSRTypeWorkOrder = assetService.woorSRType.SERVICE_REQUEST;\n\n /**\r\n * Global Vars\r\n */\n vm.chartOptions = {\n responsive: true,\n legend: {\n position: 'bottom'\n }\n };\n vm.data = [];\n vm.labels = ['ACCEPTED', 'SCHEDULED', 'DISPATCHED', 'COMPLETED', 'CONTRACTOR_REVIEWED', 'READY_FOR_INVOICE', 'INVOICE_READY_FOR_REVIEW', 'APPROVED_FOR_INVOICING', 'INVOICE_SUBMITTING_FOR_PAYMENT', 'INVOICE_APPROVED'];\n vm.invoiceOrdersLoaded = false;\n vm.acceptedOrdersLoaded = false;\n vm.serviceOrders = [];\n vm.analyticsServiceRequestReady = false;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.acceptedOrdersLoaded, function () {\n vm.acceptedOrdersLoaded = true;\n if (vm.invoiceOrdersLoaded) {\n load();\n }\n });\n $scope.$on(assetService.events.invoiceOrdersLoaded, function () {\n vm.invoiceOrdersLoaded = true;\n if (vm.acceptedOrdersLoaded) {\n load();\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n function setModels() {\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.ACCEPTED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.SCHEDULED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.DISPATCHED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.COMPLETED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.READY_FOR_INVOICE.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_READY_FOR_REVIEW.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.APPROVED_FOR_INVOICING.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_APPROVED.code;\n }));\n broadcastService.serviceRequestAnalyticsLoaded();\n vm.analyticsServiceRequestReady = true;\n }\n var sumBy = function sumBy(arr, iteratee) {\n var func = typeof iteratee === 'function' ? iteratee : function (item) {\n return item[iteratee];\n };\n return arr.reduce(function (acc, item) {\n return acc + func(item);\n }, 0);\n };\n function load() {\n var promises = [getAcceptedOrders(), getInvoiceOrders()];\n commonService.executePromises(promises).then(function () {\n var arrs = [_acceptedOrders, _invoiceOrders];\n vm.serviceOrders = _.spread(_.union)(arrs);\n setModels();\n });\n function getAcceptedOrders() {\n return indexedDbService.getAcceptedOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _acceptedOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.acceptedOrders);\n }\n });\n }\n function getInvoiceOrders() {\n return indexedDbService.getInvoiceOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _invoiceOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.invoiceOrders);\n }\n });\n }\n }\n var init = function init() {/* empty function */};\n init();\n}\napp.controller('FPAnalyticsWorkOrderController', FPAnalyticsWorkOrderController);\nFPAnalyticsWorkOrderController.$inject = ['$scope', 'FPAssetService', 'FPBroadcastService', 'commonService', 'FPDataModelsDTOService', 'FPIndexedDbDataService'];\nfunction FPAnalyticsWorkOrderController($scope, assetService, broadcastService, commonService, dtoService, indexedDbService) {\n /**\r\n * Scope Vars\r\n */\n var vm = this;\n var _acceptedOrders = [];\n var _invoiceOrders = [];\n var _woorSRTypeWorkOrder = assetService.woorSRType.WORK_ORDER;\n\n /**\r\n * Global Vars\r\n */\n vm.chartOptions = {\n responsive: true,\n legend: {\n position: 'bottom'\n }\n };\n vm.data = [];\n vm.labels = ['ACCEPTED', 'SCHEDULED', 'DISPATCHED', 'COMPLETED', 'CONTRACTOR_REVIEWED', 'READY_FOR_INVOICE', 'INVOICE_READY_FOR_REVIEW', 'APPROVED_FOR_INVOICING', 'INVOICE_SUBMITTING_FOR_PAYMENT', 'INVOICE_APPROVED'];\n vm.invoiceOrdersLoaded = false;\n vm.acceptedOrdersLoaded = false;\n vm.serviceOrders = [];\n vm.analyticsWorkOrdersReady = false;\n\n /**\r\n * Function Declarations\r\n */\n\n /**\r\n * Watchers\r\n */\n $scope.$on(assetService.events.acceptedOrdersLoaded, function () {\n vm.acceptedOrdersLoaded = true;\n if (vm.invoiceOrdersLoaded) {\n load();\n }\n });\n $scope.$on(assetService.events.invoiceOrdersLoaded, function () {\n vm.invoiceOrdersLoaded = true;\n if (vm.acceptedOrdersLoaded) {\n load();\n }\n });\n\n /**\r\n * Function Definitions\r\n */\n function setModels() {\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.ACCEPTED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.SCHEDULED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.DISPATCHED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.COMPLETED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.READY_FOR_INVOICE.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_READY_FOR_REVIEW.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.APPROVED_FOR_INVOICING.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code;\n }));\n vm.data.push(sumBy(vm.serviceOrders, function (serviceOrder) {\n return serviceOrder.soStatus === assetService.status.INVOICE_APPROVED.code;\n }));\n broadcastService.workOrderAnalyticsLoaded();\n vm.analyticsWorkOrdersReady = true;\n }\n var sumBy = function sumBy(arr, iteratee) {\n var func = typeof iteratee === 'function' ? iteratee : function (item) {\n return item[iteratee];\n };\n return arr.reduce(function (acc, item) {\n return acc + func(item);\n }, 0);\n };\n function load() {\n var promises = [getAcceptedOrders(), getInvoiceOrders()];\n commonService.executePromises(promises).then(function () {\n var arrs = [_acceptedOrders, _invoiceOrders];\n vm.serviceOrders = _.spread(_.union)(arrs);\n setModels();\n });\n function getAcceptedOrders() {\n return indexedDbService.getAcceptedOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _acceptedOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.acceptedOrders);\n }\n });\n }\n function getInvoiceOrders() {\n return indexedDbService.getInvoiceOrders().then(function (result) {\n if (result && result.length > 0) {\n var orders = result.filter(function (serviceOrder) {\n return serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder;\n });\n _invoiceOrders = dtoService.transformServiceOrders(orders, assetService.storageKeys.toggleFlags.invoiceOrders);\n }\n });\n }\n }\n var init = function init() {/* empty function */};\n init();\n}\napp.controller('FPTechnicalPricingInspectionReplacementProgram', FPTechnicalPricingInspectionReplacementProgram);\nFPTechnicalPricingInspectionReplacementProgram.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'FPModalService'];\nfunction FPTechnicalPricingInspectionReplacementProgram($scope, assetService, genericHelperService, serviceOrdersFactory, FPModalService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var kwDeviceName = assetService.strings.DEVICE_NAME;\n var kwMeterId = assetService.strings.METERID;\n var kwText = assetService.strings.TEXT;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.currentOrderStatus = {};\n vm.disableAll = false;\n vm.form = {\n serviceOrderId: null,\n customer: {\n name: null,\n primaryPhone: null,\n alternatePhone: null\n },\n equipmentDetails: {\n replacementNeeded: null,\n replacementDeviceName: null,\n replacementDeviceSerialNo: null,\n deviceName: null,\n deviceSerialNumber: null,\n deviceOperational: null\n },\n descriptionOfWorkQtyParts: null,\n orderCostTimeDetails: {\n materialCost: {\n value: 0\n },\n laborCost: {\n value: 0\n },\n tripFee: {\n value: 0\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n vm.serviceOrderLoaded = false;\n vm.serviceOrder = null;\n vm.statusCompleted = assetService.status.COMPLETED;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.validationPatterns = assetService.validationPatterns;\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelWorkOrder = cancelWorkOrder;\n vm.totalOrderCost = totalOrderCost;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function () {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function cancelWorkOrder() {\n // logic\n FPModalService.cancelModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 9) {\n vm.disableAll = true;\n }\n setModels();\n setDropdowns();\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setDropdowns() {\n vm.dropdowns = {\n equipmentOptions: {\n options: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(vm.serviceOrder.equipmentOptions.options, kwDeviceName, kwDeviceName), kwText, vm.serviceOrder.equipmentDetails.replacementDeviceName)\n }\n };\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n customer: {\n name: vm.serviceOrder.customer.name,\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\n alternatePhone: vm.serviceOrder.customer.alternatePhone\n },\n equipmentDetails: {\n replacementNeeded: vm.serviceOrder.equipmentDetails.replacementNeeded,\n replacementDeviceName: vm.serviceOrder.equipmentDetails.replacementDeviceName,\n replacementDeviceSerialNo: vm.serviceOrder.equipmentDetails.replacementDeviceSerialNo,\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational\n },\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\n orderCostTimeDetails: {\n materialCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.materialCost.value)\n },\n laborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCost.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId\n }];\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId);\n } else {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n }\n }\n }\n function totalOrderCost(tripFee, laborCost, materialCost) {\n return parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingInstallationProgram', FPTechnicalPricingInstallationProgram);\nFPTechnicalPricingInstallationProgram.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'FPModalService'];\nfunction FPTechnicalPricingInstallationProgram($scope, assetService, genericHelperService, serviceOrdersFactory, FPModalService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var kwDeviceCode = assetService.strings.DEVICE_CODE;\n var kwDeviceName = assetService.strings.DEVICE_NAME;\n var kwMeterId = assetService.strings.METERID;\n var kwText = assetService.strings.TEXT;\n var kwValue = assetService.strings.VALUE;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.currentOrderStatus = new Object();\n vm.disableAll = false;\n vm.form = {\n serviceOrderId: null,\n customer: {\n name: null,\n primaryPhone: null,\n alternatePhone: null\n },\n equipmentDetails: {\n deviceName: null,\n deviceSerialNumber: null\n },\n groundingDetails: {\n singlePointGrounding: null,\n groundingRepairsNeeded: null\n },\n descriptionOfWorkQtyParts: null,\n orderCostTimeDetails: {\n materialCost: {\n value: 0\n },\n laborCost: {\n value: 0\n },\n tripFee: {\n value: 0\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n vm.serviceOrderLoaded = false;\n vm.serviceOrder = null;\n vm.statusCompleted = assetService.status.COMPLETED;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.validationPatterns = assetService.validationPatterns;\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelWorkOrder = cancelWorkOrder;\n vm.totalOrderCost = totalOrderCost;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function cancelWorkOrder() {\n // logic\n FPModalService.cancelModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 9) {\n vm.disableAll = true;\n }\n setModels();\n setDropdowns();\n }\n function onChange() {\n if (vm.form.equipmentDetails.deviceSerialNumber == undefined) {\n vm.form.equipmentDetails.deviceSerialNumber = '';\n }\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setDropdowns() {\n vm.dropdowns = {\n equipmentOptions: {\n options: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(vm.serviceOrder.equipmentOptions.options, kwDeviceCode, kwDeviceName), kwValue, vm.serviceOrder.equipmentDetails.deviceCode)\n },\n singlePointGroundingOptions: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(assetService.boolOptions, kwValue, kwText), kwValue, vm.serviceOrder.groundingDetails.singlePointGrounding),\n groundingRepairsNeededOptions: genericHelperService.setSelectedProp(genericHelperService.createDropdownList(assetService.boolOptions, kwValue, kwText), kwValue, vm.serviceOrder.groundingDetails.groundingRepairsNeeded)\n };\n vm.serviceOrderLoaded = true;\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n customer: {\n name: vm.serviceOrder.customer.name,\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\n alternatePhone: vm.serviceOrder.customer.alternatePhone\n },\n equipmentDetails: {\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber\n },\n groundingDetails: {\n singlePointGrounding: vm.serviceOrder.groundingDetails.singlePointGrounding,\n groundingRepairsNeeded: vm.serviceOrder.groundingDetails.groundingRepairsNeeded\n },\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\n orderCostTimeDetails: {\n materialCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.materialCost.value)\n },\n laborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCost.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId\n }];\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId)\n }];\n } else {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n }\n }\n }\n function totalOrderCost(tripFee, laborCost, materialCost) {\n return parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingRemovalProgram', FPTechnicalPricingRemovalProgram);\nFPTechnicalPricingRemovalProgram.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'FPModalService'];\nfunction FPTechnicalPricingRemovalProgram($scope, assetService, genericHelperService, serviceOrdersFactory, FPModalService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var kwMeterId = assetService.strings.METERID;\n\n /* --------------Gloabl Vars-----------------------*/\n vm.currentOrderStatus = new Object();\n vm.disableAll = false;\n vm.form = {\n serviceOrderId: null,\n customer: {\n name: null,\n primaryPhone: null,\n alternatePhone: null\n },\n equipmentDetails: {\n deviceName: null,\n deviceSerialNumber: null,\n deviceOperational: null\n },\n descriptionOfWorkQtyParts: null,\n orderCostTimeDetails: {\n materialCost: {\n value: 0\n },\n laborCost: {\n value: 0\n },\n tripFee: {\n value: 0\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n vm.serviceOrderLoaded = false;\n vm.serviceOrder = null;\n vm.statusCompleted = assetService.status.COMPLETED;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.validationPatterns = assetService.validationPatterns;\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelWorkOrder = cancelWorkOrder;\n vm.totalOrderCost = totalOrderCost;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function cancelWorkOrder() {\n // logic\n FPModalService.cancelModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 9) {\n vm.disableAll = true;\n }\n setModels();\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n customer: {\n name: vm.serviceOrder.customer.name,\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\n alternatePhone: vm.serviceOrder.customer.alternatePhone\n },\n equipmentDetails: {\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational\n },\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\n orderCostTimeDetails: {\n materialCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.materialCost.value)\n },\n laborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCost.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n }\n };\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId\n }];\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId);\n } else {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n }\n }\n vm.serviceOrderLoaded = true;\n }\n function totalOrderCost(tripFee, laborCost, materialCost) {\n return parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingResolutionDetails', FPTechnicalPricingResolutionDetails);\nFPTechnicalPricingResolutionDetails.$inject = ['$scope', 'FPAssetService', 'commonService', 'FPDateHelperService', 'FPGenericHelperService', 'FPIndexedDbDataService', 'FPServiceOrdersFactory'];\nfunction FPTechnicalPricingResolutionDetails($scope, assetService, commonService, dateHelperService, genericHelperService, indexedDbDataService, serviceOrdersFactory) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var _kwCode = assetService.strings.CODE;\n var _kwName = assetService.strings.NAME;\n var _kwValue = assetService.strings.VALUE;\n var _repairTypeOptions = [];\n var _resolutionTypeOptions = [];\n\n /* --------------Gloabl Vars-----------------------*/\n vm.currentOrderStatus = new Object();\n vm.disableAll = false;\n vm.regexp_email = /^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/;\n vm.repairTypeOptions = [];\n vm.resolutionTypeOptions = [];\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\n vm.serviceOrder = null;\n vm.serviceOrderLoaded = false;\n vm.validationPatterns = assetService.validationPatterns;\n vm.currentTodayDate = undefined;\n vm.pastDate = undefined;\n\n /* --------------Function Declarations-----------------------*/\n vm.addDays = addDays;\n vm.subDays = subDays;\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function addDays(date, days) {\n return dateHelperService.addDays(date, days);\n }\n function subDays(date, days) {\n var newDate = new Date(date);\n newDate.setDate(newDate.getDate() - days);\n return new Date(newDate);\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n setModels();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id < 5 || vm.currentOrderStatus.id >= 9) {\n vm.disableAll = true;\n }\n setDropdowns();\n vm.currentTodayDate = moment(new Date()).format('MM/DD/YYYY');\n vm.pastDate = moment(subDays(vm.currentTodayDate, 90)).format('MM/DD/YYYY');\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setDropdowns() {\n var promises = [];\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\n promises.push(indexedDbDataService.getSRRepairTypesByProduct(vm.serviceOrder.program).then(function (data) {\n _repairTypeOptions = data;\n }));\n promises.push(indexedDbDataService.getSRResolutionTypesByProduct(vm.serviceOrder.program).then(function (data) {\n _resolutionTypeOptions = data;\n }));\n } else {\n promises.push(indexedDbDataService.getWOResolutionTypesByWOType(vm.serviceOrder.soType).then(function (data) {\n _resolutionTypeOptions = data;\n }));\n }\n commonService.executePromises(promises).then(function (data) {\n var resolutionTypeList = genericHelperService.createDropdownList(_resolutionTypeOptions, _kwCode, _kwName);\n vm.dropdowns = {\n resolutionTypeOptions: genericHelperService.setSelectedProp(resolutionTypeList, _kwValue, vm.form.resolutionDetails.resolutionType.code),\n surveyReceivedByCustomer: genericHelperService.setSelectedProp(assetService.boolOptions, _kwValue, vm.form.customerContactHistory.surveyReceivedByCustomer)\n };\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\n var repairTypeList = genericHelperService.createDropdownList(_repairTypeOptions, _kwCode, _kwName);\n vm.dropdowns.repairTypeOptions = genericHelperService.setSelectedProp(repairTypeList, _kwValue, vm.form.repairType.code);\n }\n vm.serviceOrderLoaded = true;\n });\n }\n function setModels() {\n vm.form = {\n customerContactPreferences: {\n preferredEmailAddress: vm.serviceOrder.customerContactPreferences.preferredEmailAddress\n },\n resolutionDetails: {\n resolutionType: {\n code: vm.serviceOrder.resolutionDetails.resolutionType.code\n },\n resolutionDate: vm.serviceOrder.resolutionDetails.resolutionDate,\n resolutionDateDukeCalendar: !vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.resolutionDetails.resolutionDate) : vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar\n },\n repairType: {\n code: vm.serviceOrder.repairType.code\n },\n customerContactHistory: {\n surveyReceivedByCustomer: vm.serviceOrder.customerContactHistory.surveyReceivedByCustomer\n },\n createdDateDukeCalendar: dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate),\n scheduledStartDateDukeCalendar: dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledStartDate),\n woorSR: vm.serviceOrder.woorSR,\n soType: vm.serviceOrder.soType\n };\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}\napp.controller('FPTechnicalPricingECNProgram', FPTechnicalPricingECNProgram);\nFPTechnicalPricingECNProgram.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory', 'FPModalService'];\nfunction FPTechnicalPricingECNProgram($scope, assetService, genericHelperService, serviceOrdersFactory, FPModalService) {\n /* --------------Scope Vars-----------------------*/\n var vm = this;\n var kwMeterId = assetService.strings.METERID;\n\n /* --------------Gloabl Vars-----------------------*/\n\n vm.coveredRepairsDescription = null;\n vm.currentOrderStatus = new Object();\n vm.disableAll = false;\n vm.form = {\n serviceOrderId: null,\n customer: {\n name: null,\n primaryPhone: null,\n alternatePhone: null\n },\n serviceOrderBalance: {\n value: 0\n },\n programEntitlementBalance: {\n value: 0\n },\n descriptionOfWorkQtyPartsCovered: null,\n descriptionOfWorkQtyPartsNonCovered: null,\n orderCostTimeDetails: {\n regularLaborHours: 0,\n regularLaborCost: {\n value: 0\n },\n entitlementLaborHours: 0,\n entitlementLaborCost: {\n value: 0\n },\n laborCostNotCovered: {\n value: 0\n },\n partsCost: {\n value: 0\n },\n partsCostNotCovered: {\n value: 0\n },\n tripFee: {\n value: 0\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n },\n soType: null\n };\n vm.serviceOrderLoaded = false;\n vm.serviceOrder = null;\n vm.statusCompleted = assetService.status.COMPLETED;\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\n vm.typeEntitlement = assetService.strings.ENTITLEMENT;\n vm.typeInstallation = assetService.soType.INSTALLATION;\n vm.validationPatterns = assetService.validationPatterns;\n\n /* --------------Function Declarations-----------------------*/\n vm.cancelWorkOrder = cancelWorkOrder;\n vm.totalLaborCost = totalLaborCost;\n vm.totalCost = totalCost;\n vm.totalUncoveredCost = totalUncoveredCost;\n\n /* --------------Broadcast Watchers-----------------------*/\n $scope.$on(assetService.events.updateServiceOrder, function (event, ars) {\n if (vm.serviceOrderLoaded) {\n var sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\n }\n });\n $scope.$watch('vm.form', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n onChange();\n }\n }, true);\n\n /* --------------Function Definitions-----------------------*/\n function cancelWorkOrder() {\n FPModalService.cancelModal();\n }\n function load() {\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\n if (vm.currentOrderStatus.id >= 9) {\n vm.disableAll = true;\n }\n setModels();\n vm.serviceOrderLoaded = true;\n }\n function onChange() {\n serviceOrdersFactory.updateServiceOrder(vm.form);\n }\n function setModels() {\n vm.form = {\n serviceOrderId: vm.serviceOrder.serviceOrderId,\n customer: {\n name: vm.serviceOrder.customer.name,\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\n alternatePhone: vm.serviceOrder.customer.alternatePhone\n },\n serviceOrderBalance: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.serviceOrderBalance.value)\n },\n programEntitlementBalance: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.programEntitlementBalance.value)\n },\n descriptionOfWorkQtyPartsCovered: vm.serviceOrder.descriptionOfWorkQtyPartsCovered,\n descriptionOfWorkQtyPartsNonCovered: vm.serviceOrder.descriptionOfWorkQtyPartsNonCovered,\n orderCostTimeDetails: {\n regularLaborHours: !vm.serviceOrder.orderCostTimeDetails.regularLaborHours ? 0 : vm.serviceOrder.orderCostTimeDetails.regularLaborHours,\n regularLaborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.regularLaborCost.value)\n },\n entitlementLaborHours: !vm.serviceOrder.orderCostTimeDetails.entitlementLaborHours ? 0 : vm.serviceOrder.orderCostTimeDetails.entitlementLaborHours,\n entitlementLaborCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.entitlementLaborCost.value)\n },\n laborCostNotCovered: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCostNotCovered.value)\n },\n partsCost: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCost.value)\n },\n partsCostNotCovered: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCostNotCovered.value)\n },\n tripFee: {\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value)\n }\n },\n serviceAddress: {\n meterNumber: [{\n meterId: null\n }]\n },\n soType: vm.serviceOrder.soType\n };\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\n vm.form.serviceAddress.meterNumber = [{\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId\n }];\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId);\n } else {\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\n }\n }\n }\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost);\n }\n function totalCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\n return parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) + parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost) + parseFloat(!partsCost ? '0.0' : partsCost) + parseFloat(!tripFee ? '0.0' : tripFee);\n }\n function totalUncoveredCost(laborCostNotCovered, partsCostNotCovered) {\n return parseFloat(!laborCostNotCovered ? '0.0' : laborCostNotCovered) + parseFloat(!partsCostNotCovered ? '0.0' : partsCostNotCovered);\n }\n\n /* ---------------Initialization-------------------*/\n var init = function init() {\n load();\n };\n init();\n}","app.controller('CCAccountSelector', CCAccountSelector);\r\nCCAccountSelector.$inject = [\r\n '$location',\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'genericHelperService',\r\n 'ccGetUserAccountsService',\r\n 'sessionStorageService',\r\n 'CCDecryptionService',\r\n 'commonService',\r\n 'jurisdictionService',\r\n 'getToggleResponseService',\r\n '$rootScope',\r\n 'errorHandlingService',\r\n 'commongaTaggingService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'getInvoiceListService',\r\n];\r\n\r\nfunction CCAccountSelector(\r\n $location,\r\n $scope,\r\n $window,\r\n assetService,\r\n broadcastService,\r\n genericHelperService,\r\n getUserAccountsService,\r\n sessionStorageService,\r\n CCDecryptionService,\r\n commonService,\r\n jurisdictionService,\r\n getToggleResponseService,\r\n $rootScope,\r\n errorHandlingService,\r\n commongaTaggingService,\r\n getAccountBalanceForRegularAccountService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n getInvoiceListService,\r\n) {\r\n /* -----------------------Scope Vars---------------------------*/\r\n const addString = assetService.accountSelectorStrings.add;\r\n const addAccString = assetService.accountSelectorStrings.addAccount;\r\n const valueString = assetService.accountSelectorStrings.value;\r\n const viewString = assetService.accountSelectorStrings.view;\r\n const viewAllString = assetService.accountSelectorStrings.viewAll;\r\n let accountSelected = {};\r\n let contractAccountSelectedFromLogin = null;\r\n let contractAccountSelectedIndex = null;\r\n const addressAndAccounts = {};\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n let data = {};\r\n let currentPageId = '';\r\n let toggleResponse;\r\n let contractaccountSelectedCheck = '';\r\n $rootScope.toggleComponents = [];\r\n $rootScope.toggleSections = [];\r\n $rootScope.toggleSectionDetails = [];\r\n let globalUserType = '';\r\n const timeoutFourThousand = 4000;\r\n const timeoutEightThousand = 8000;\r\n const valueZero = 0;\r\n const valueOne = 1;\r\n const valueFive = 5;\r\n const valueMinusOne = -1;\r\n const valueFour = 4;\r\n\r\n /* -----------------------Global Vars---------------------------*/\r\n const vm = this;\r\n let isPageLoaded = false;\r\n vm.currentAccount = {};\r\n vm.dropdowns = {\r\n accounts: [],\r\n };\r\n vm.experiences = [];\r\n vm.accountLoaded = '';\r\n vm.experienceSelected = null;\r\n vm.filteredAccounts = {};\r\n vm.filteredAccountStorage = {};\r\n vm.globalInfo = {};\r\n vm.historySelectedAccounts = [];\r\n vm.isLoaded = false;\r\n vm.moreThanOneAccount = false;\r\n vm.preFilterAccs = {};\r\n vm.selectedOptionText = null;\r\n vm.selectedOptionValue = null;\r\n\r\n vm.primaryEmail = null;\r\n vm.primaryBp = null;\r\n vm.prevListOfAccounts = null;\r\n vm.listOfAccounts = [];\r\n vm.validUserType = true;\r\n vm.numberOfAccount = '';\r\n\r\n /* --------------Watchers-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.toggleAccounts = toggleAccounts;\r\n vm.init = init;\r\n\r\n /* --------------Function Definitions------------------------*/\r\n function addLastOption() {\r\n const totalAccounts = 5;\r\n if (vm.filteredAccounts.length > totalAccounts) {\r\n vm.dropdowns.accounts.push({ value: viewString, text: viewAllString });\r\n } else {\r\n vm.dropdowns.accounts.push({ value: addString, text: addAccString });\r\n }\r\n }\r\n\r\n // get toggle response\r\n function getToggleResponse(request) {\r\n return getToggleResponseService.sitecore\r\n .getToggleResponse(request)\r\n .then(response => {\r\n toggleResponse = response;\r\n });\r\n }\r\n\r\n function setToggleResponseModel() {\r\n toggleResponse.forEach(result => {\r\n // populate components\r\n if (result.RenderingName !== '') {\r\n $rootScope.toggleComponents[result.Id] = result.Visible;\r\n }\r\n\r\n // populate sections\r\n if (result.SectionName !== '') {\r\n $rootScope.toggleSections[result.Id] = result.Visible;\r\n $rootScope.toggleSectionDetails[result.Id] = {\r\n icon: result.NotAvailableIcon,\r\n description: result.NotAvailableDescription,\r\n };\r\n }\r\n });\r\n\r\n // show all toggle component\r\n showNotAvailableComponent();\r\n\r\n setTimeout(() => {\r\n if (document.querySelectorAll('.toggle-grey-background').length > 0) {\r\n document\r\n .getElementById('page-components')\r\n .classList.add('toggleErrorScreen');\r\n } else {\r\n document\r\n .getElementById('page-components')\r\n .classList.remove('toggleErrorScreen');\r\n }\r\n }, 100);\r\n setTimeout(() => {\r\n showNotAvailableComponent();\r\n }, timeoutFourThousand);\r\n\r\n setTimeout(() => {\r\n showNotAvailableComponent();\r\n }, timeoutEightThousand);\r\n }\r\n\r\n function showNotAvailableComponent() {\r\n document.querySelectorAll('.not-available-comp').forEach(comp => {\r\n const component = comp;\r\n component.style.display = '';\r\n });\r\n }\r\n\r\n function listFormatter() {\r\n vm.filteredAccounts = _.map(vm.listOfAccounts, acct => {\r\n const temp = {};\r\n let nickname = '';\r\n temp.value = acct.accountNum;\r\n temp.accountData = acct;\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.isPrepaid,\r\n acct.prepaid,\r\n );\r\n\r\n if (acct.nickname) {\r\n nickname = `${acct.nickname} - `;\r\n }\r\n\r\n if (acct.prepaid && acct.accountNum == contractaccountSelectedCheck) {\r\n if (\r\n window.location.pathname ===\r\n '/my-account/billing-and-payment-programs' ||\r\n window.location.pathname ===\r\n '/my-account/billing-and-payment-programs/auto-pay'\r\n ) {\r\n window.location.href = 'my-account/Dashboard';\r\n }\r\n }\r\n\r\n if (acct.prepaid) {\r\n temp.text = `${nickname}(Account #${acct.accountNum}) ${acct.address} (Duke Energy Prepaid Advantage)`;\r\n } else if (\r\n acct.role === assetService.roles.admin ||\r\n acct.role === assetService.roles.viewer\r\n ) {\r\n temp.text = `${nickname}(Account #${\r\n acct.accountNum\r\n }) ${\r\n acct.address\r\n } - (${genericHelperService.capitalize(acct.role)})`;\r\n } else if (\r\n acct.AccountStatus === assetService.accountSelectorStrings.INACTIVE\r\n ) {\r\n temp.text = `${nickname}(Account #${acct.accountNum}) ${acct.address} - (${assetService.accountSelectorStrings.CLOSED})`;\r\n } else if (\r\n acct.role === assetService.roles.admin ||\r\n acct.role === assetService.roles.viewer\r\n ) {\r\n temp.text = `${nickname}(Account #${\r\n acct.accountNum\r\n }) ${\r\n acct.address\r\n } - (${genericHelperService.capitalize(acct.role)})`;\r\n } else {\r\n temp.text = `${nickname}(Account #${acct.accountNum}) ${acct.address}`;\r\n }\r\n temp.text = `${temp.text}`;\r\n vm.accountLoaded = temp.value;\r\n return temp;\r\n });\r\n\r\n vm.dropdowns.accounts = vm.filteredAccounts.slice(valueZero, valueFive);\r\n }\r\n\r\n function checkUserType() {\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n if (\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS ===\r\n dashboardUserType ||\r\n vm.validUserType === false\r\n ) {\r\n vm.validUserType = false;\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n function decryptionService() {\r\n return CCDecryptionService.sitecore\r\n .decryptHex({\r\n request: $location.search().accountNbr,\r\n })\r\n .then(result => {\r\n if (\r\n Object.prototype.hasOwnProperty.call(\r\n result,\r\n assetService.accountSelectorStrings.decryptedValue,\r\n )\r\n ) {\r\n contractAccountSelectedFromLogin = result.decryptedValue;\r\n }\r\n\r\n return contractAccountSelectedFromLogin;\r\n });\r\n }\r\n\r\n function getUserAccounts() {\r\n return getUserAccountsService.getUserAccounts(data).then(results => {\r\n vm.globalInfo = results.bpData;\r\n vm.globalInfo.primaryEmail = data.emailId;\r\n vm.primaryBp = results.bpData.primaryBp;\r\n vm.numberOfAccount = results.accounts.length;\r\n const residentialAccounts = _.filter(\r\n results.accounts,\r\n resultAcc => resultAcc.experience.toUpperCase() === 'SCRESIDENTIAL',\r\n );\r\n\r\n $rootScope.numberOfResiAccount = residentialAccounts.length\r\n ? residentialAccounts.length\r\n : valueZero;\r\n $rootScope.numberOfAccount = vm.numberOfAccount;\r\n\r\n if (results.nativeUser) {\r\n globalUserType = assetService.strings.NATIVE_USER;\r\n } else if (results.nonNativeUserWithOutAccount) {\r\n globalUserType = assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS;\r\n }\r\n\r\n vm.listOfAccounts = angular.copy(results.accounts);\r\n sessionStorageService.set(\r\n assetService.storageKeys.globalAccounts.info,\r\n results.bpData,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.globalAccounts.accounts,\r\n results.accounts,\r\n );\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.dashboard.userType,\r\n globalUserType,\r\n );\r\n\r\n return true;\r\n });\r\n }\r\n\r\n function getAccountBalanceForRegularAccount(dataParam) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(dataParam)\r\n .then(\r\n result => {\r\n $rootScope.accountBalanceResult = result;\r\n },\r\n error => {\r\n $.growl.error({ message: error.message });\r\n },\r\n );\r\n }\r\n\r\n function getAccountEnrollmentEligibilityStatus(dataParam) {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(dataParam)\r\n .then(\r\n result => {\r\n $rootScope.eligibilityStatusResult = result;\r\n },\r\n error => {\r\n $.growl.error({ message: error.message });\r\n },\r\n );\r\n }\r\n\r\n function getInvoiceList(dataParam) {\r\n return getInvoiceListService.sitecore.getInvoiceList(dataParam).then(\r\n result => {\r\n $rootScope.invoiceListResult = result;\r\n },\r\n error => {\r\n $.growl.error({ message: error.message });\r\n },\r\n );\r\n }\r\n\r\n function isDashboardPage() {\r\n const urlObject = new URL(window.location.href);\r\n const isDashboard =\r\n urlObject.pathname.toLowerCase() === '/my-account/dashboard';\r\n $rootScope.isDashboardPage = isDashboard;\r\n\r\n return isDashboard;\r\n }\r\n\r\n function load() {\r\n const toggleReq = {\r\n accountNo: '',\r\n pageId: currentPageId,\r\n };\r\n\r\n broadcastService.loadingSpinner(true);\r\n const promises = [];\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n businessPartnerId: $location.search().businessPartnerId, // Get Primary Bp\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n } else {\r\n data = {\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n };\r\n }\r\n\r\n if ($location.search().accountNbr) {\r\n promises.push(decryptionService());\r\n }\r\n\r\n promises.push(getUserAccounts());\r\n promises.push(getToggleResponse(toggleReq));\r\n\r\n commonService.executePromises(promises).then(() => {\r\n if (checkUserType()) {\r\n setModels();\r\n\r\n // set toggle response model\r\n setToggleResponseModel();\r\n\r\n saveData().then(\r\n () => {\r\n vm.isLoaded = true;\r\n if (!isDashboardPage()) {\r\n broadcastService.loadingSpinner(false);\r\n broadcastService.globalSwitcherAccount();\r\n return;\r\n }\r\n\r\n $rootScope.firstTimeDashboard = true;\r\n // make high cost service operations\r\n const queue = [\r\n getAccountBalanceForRegularAccount({\r\n executeService: true,\r\n accountList: [\r\n {\r\n contractAccountNumber: vm.selectedOptionValue,\r\n zipCode: addressAndAccounts.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: vm.selectedOptionValue,\r\n businessPartner: vm.primaryBp,\r\n }),\r\n getInvoiceList({\r\n action: assetService.strings.INVLIST_REQ_DASH,\r\n top: assetService.strings.ONE,\r\n businessPartner: vm.primaryBp,\r\n contractAccountId: vm.selectedOptionValue,\r\n isDashboard: true,\r\n invoiceCount:\r\n assetService.serviceActions.getInvoiceList.INVOICE_COUNT,\r\n }),\r\n ];\r\n commonService.executePromises(queue).then(() => {\r\n broadcastService.loadingSpinner(false);\r\n broadcastService.globalSwitcherAccount();\r\n });\r\n },\r\n () => {\r\n // do nothing\r\n },\r\n );\r\n } else {\r\n setSelectedAddressData();\r\n\r\n broadcastService.loadingSpinner(false);\r\n vm.isLoaded = true;\r\n broadcastService.globalSwitcherAccount();\r\n }\r\n });\r\n }\r\n\r\n function setSelectedAddressData(accountFormatted) {\r\n addressAndAccounts.userEmail = vm.globalInfo.primaryEmail;\r\n addressAndAccounts.primaryBp = vm.globalInfo.primaryBp;\r\n if (accountFormatted) {\r\n addressAndAccounts.accountSelected = {\r\n ...accountSelected.accountData,\r\n ...accountFormatted,\r\n };\r\n\r\n sessionStorageService.set(\r\n // Values for the entire site\r\n assetService.storageKeys.selectedAddressData,\r\n addressAndAccounts,\r\n );\r\n }\r\n }\r\n\r\n function setRoleBaseData() {\r\n const role = {};\r\n const roleKey = `${addressAndAccounts.accountSelected.role}Role`;\r\n role[roleKey] = true;\r\n sessionStorageService.set(assetService.storageKeys.roleBase, role);\r\n }\r\n\r\n function saveData() {\r\n sessionStorageService.set(\r\n // Accounts for Modal\r\n assetService.storageKeys.accountSelector,\r\n vm.filteredAccountStorage,\r\n );\r\n\r\n const paramData = {\r\n businessPartnerId: vm.primaryBp,\r\n contractAccountId: vm.selectedOptionValue,\r\n requestedBy: data.cdpId,\r\n };\r\n sessionStorageService.set(assetService.storageKeys.cdpId, data.cdpId);\r\n return getUserAccountsService.accountSearch(paramData).then(\r\n result => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.globalAccounts.emails,\r\n result.emails,\r\n );\r\n\r\n setSelectedAddressData(result.accountFormatted);\r\n setRoleBaseData();\r\n\r\n if (addressAndAccounts.accountSelected) {\r\n const {\r\n stateAbbreviation,\r\n serviceKey,\r\n } = assetService.jurisdictionMapping[\r\n addressAndAccounts.accountSelected.jurisdiction\r\n ];\r\n // set jurisdiction cookie\r\n jurisdictionService.setJurisdiction(stateAbbreviation, serviceKey);\r\n }\r\n },\r\n error => {\r\n errorHandlingService.getException(error);\r\n },\r\n );\r\n }\r\n\r\n function validateAccountPositionAndSet(contractAccountToValidate) {\r\n contractAccountSelectedIndex = _.findIndex(\r\n vm.listOfAccounts,\r\n account => account.accountNum === contractAccountToValidate,\r\n );\r\n if (contractAccountSelectedIndex > valueFour) {\r\n vm.listOfAccounts = genericHelperService.arrayMove(\r\n vm.listOfAccounts,\r\n contractAccountSelectedIndex,\r\n valueZero,\r\n );\r\n contractAccountSelectedIndex = valueZero;\r\n }\r\n }\r\n\r\n function setModels() {\r\n const contractAccountSelectedFromLastSave = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (contractAccountSelectedFromLogin) {\r\n contractaccountSelectedCheck = contractAccountSelectedFromLogin;\r\n validateAccountPositionAndSet(contractAccountSelectedFromLogin);\r\n } else if (contractAccountSelectedFromLastSave) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(\r\n contractAccountSelectedFromLastSave,\r\n assetService.strings.ACCOUNT_SELECTED,\r\n )\r\n ) {\r\n contractaccountSelectedCheck =\r\n contractAccountSelectedFromLastSave[\r\n assetService.strings.ACCOUNT_SELECTED\r\n ].accountNum;\r\n validateAccountPositionAndSet(\r\n contractAccountSelectedFromLastSave[\r\n assetService.strings.ACCOUNT_SELECTED\r\n ].accountNum,\r\n );\r\n }\r\n }\r\n\r\n listFormatter();\r\n\r\n if (contractAccountSelectedIndex === valueMinusOne) {\r\n contractAccountSelectedIndex = valueZero;\r\n }\r\n\r\n vm.selectedOptionValue = contractAccountSelectedIndex\r\n ? vm.dropdowns.accounts[contractAccountSelectedIndex].value\r\n : vm.dropdowns.accounts[0].value;\r\n vm.selectedOptionText = contractAccountSelectedIndex\r\n ? vm.dropdowns.accounts[contractAccountSelectedIndex].text\r\n : vm.dropdowns.accounts[0].text;\r\n accountSelected = _.find(\r\n vm.filteredAccounts,\r\n account => account.accountData.accountNum === vm.selectedOptionValue,\r\n );\r\n vm.lastSelectedAccount = vm.selectedOptionValue;\r\n vm.filteredAccountStorage.accounts = vm.filteredAccounts;\r\n\r\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.accounts,\r\n valueString,\r\n vm.selectedOptionValue,\r\n );\r\n if (accountSelected.accountData) {\r\n if (\r\n accountSelected.accountData.experience ===\r\n assetService.strings.MASS_MARKET\r\n ) {\r\n window.location.href = vm.urlDashboard.legacy;\r\n }\r\n }\r\n if (vm.dropdowns.accounts.length > valueOne) {\r\n vm.moreThanOneAccount = true;\r\n addLastOption();\r\n }\r\n }\r\n\r\n function toggleAccounts(item, newRouteParam) {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n vm.altId = $rootScope.altId;\r\n\r\n vm.alternateId = vm.altId.filter(\r\n itemAcc => itemAcc.AccountNum === globalSelectedAccount.accountNum,\r\n );\r\n if (item && item.accountData) {\r\n $rootScope.relationshipRole = item.accountData.role;\r\n }\r\n setTimeout(() => {\r\n if (globalSelectedAccount) {\r\n $rootScope.serviceType = 'Not Eligible';\r\n if (\r\n globalSelectedAccount.isElectricMeter &&\r\n globalSelectedAccount.isGasAccount\r\n ) {\r\n $rootScope.serviceType = 'ELECTRIC, GAS';\r\n } else if (globalSelectedAccount.isElectricMeter) {\r\n $rootScope.serviceType = 'ELECTRIC';\r\n } else if (globalSelectedAccount.isGasAccount) {\r\n $rootScope.serviceType = 'GAS';\r\n }\r\n vm.webObject = {\r\n event: 'cc-web-service',\r\n NumberOfAccounts: $rootScope.numberOfAccount,\r\n AccountStatus: vm.alternateId[0].AccountStat,\r\n AlternateID: vm.alternateId[0].AlternateAccountID\r\n ? vm.alternateId[0].AlternateAccountID\r\n : 'Not Eligible',\r\n ServiceType: $rootScope.serviceType,\r\n EBillDirect: $rootScope.EBillDirect\r\n ? $rootScope.EBillDirect\r\n : 'Not Eligible',\r\n Segment: 'Res',\r\n Jurisdiction: $rootScope.jurisdiction\r\n ? $rootScope.jurisdiction\r\n : 'Not Eligible',\r\n BudgetBilling: $rootScope.budgetBilling\r\n ? $rootScope.budgetBilling\r\n : 'Not Enrolled',\r\n BankDraft_AutoPay: $rootScope.bankDraft\r\n ? $rootScope.bankDraft\r\n : 'Not Eligible',\r\n EqualPaymentPlan_FixedBill: $rootScope.equalPaymentplan\r\n ? $rootScope.equalPaymentplan\r\n : 'Not Eligible',\r\n EBillDistributed: $rootScope.eBillDistributed\r\n ? $rootScope.eBillDistributed\r\n : 'Not Eligible',\r\n DPA_InstallmentPlans: $rootScope.dpa,\r\n DueDateExtension: $rootScope.dueDateExtension\r\n ? 'Eligible'\r\n : 'Not Eligible',\r\n DisconnectExtension: $rootScope.disconnectExtension\r\n ? $rootScope.disconnectExtension\r\n : 'Not Eligible',\r\n CurrentDueDate: $rootScope.currentDuedate\r\n ? $rootScope.currentDuedate\r\n : 'Not Eligible',\r\n PickYourDueDate: $rootScope.pickyourDueDate,\r\n Impersonation: impDetails == null ? 'False' : 'True',\r\n PrepaidAdvantage: $rootScope.prepaidAdvantage,\r\n RateComparison: $rootScope.rateComparison,\r\n };\r\n $rootScope.webservicePush(vm.webObject);\r\n }\r\n }, timeoutEightThousand);\r\n const {\r\n viewAllAccounts,\r\n differentAccountSelected,\r\n addAccount,\r\n } = vm.analyticsTags;\r\n broadcastService.loadingSpinner(true);\r\n vm.isLoaded = false;\r\n const newRoute = newRouteParam.split(',');\r\n if (vm.selectedOptionValue === viewString) {\r\n vm.selectedOptionValue = vm.lastSelectedAccount;\r\n vm.selectedOptionText = _.find(\r\n vm.dropdowns.accounts,\r\n account => account.accountData.accountNum === vm.selectedOptionValue,\r\n ).text;\r\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.accounts,\r\n valueString,\r\n vm.selectedOptionValue,\r\n );\r\n commongaTaggingService.attributePush(viewAllAccounts);\r\n $window.location.assign(newRoute[1]); // Changes URL\r\n } else if (vm.selectedOptionValue === addString) {\r\n vm.selectedOptionValue = vm.lastSelectedAccount;\r\n vm.dropdowns.accounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.accounts,\r\n valueString,\r\n vm.selectedOptionValue,\r\n );\r\n commongaTaggingService.attributePush(addAccount);\r\n $window.location.assign(newRoute[0]); // Changes URL\r\n } else if (\r\n vm.selectedOptionValue !== viewString &&\r\n vm.selectedOptionValue !== addString\r\n ) {\r\n vm.lastSelectedAccount = vm.selectedOptionValue;\r\n vm.selectedOptionText = _.find(\r\n vm.dropdowns.accounts,\r\n account => account.accountData.accountNum === vm.selectedOptionValue,\r\n ).text;\r\n accountSelected = _.find(\r\n vm.filteredAccounts,\r\n account => account.accountData.accountNum === vm.selectedOptionValue,\r\n );\r\n commongaTaggingService.attributePush(differentAccountSelected);\r\n\r\n if (item.accountData.experience === assetService.strings.MASS_MARKET) {\r\n window.location.href = `${vm.legacyDashboardUrl}?accountNbr=${item.accountData.accountNum}`;\r\n return;\r\n }\r\n if (isDashboardPage()) {\r\n saveData().then(\r\n () => {\r\n vm.isLoaded = true;\r\n broadcastService.loadingSpinner(false);\r\n $rootScope.firstTimeDashboard = true;\r\n // make high cost service operations\r\n const queue = [\r\n getAccountBalanceForRegularAccount({\r\n executeService: true,\r\n accountList: [\r\n {\r\n contractAccountNumber: vm.selectedOptionValue,\r\n zipCode: addressAndAccounts.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: vm.selectedOptionValue,\r\n businessPartner: vm.primaryBp,\r\n }),\r\n getInvoiceList({\r\n action: assetService.strings.INVLIST_REQ_DASH,\r\n top: assetService.strings.ONE,\r\n businessPartner: vm.primaryBp,\r\n contractAccountId: vm.selectedOptionValue,\r\n isDashboard: true,\r\n invoiceCount:\r\n assetService.serviceActions.getInvoiceList.INVOICE_COUNT,\r\n }),\r\n ];\r\n commonService.executePromises(queue).then(() => {\r\n // get toggle response\r\n const toggleReq = {\r\n accountNo: vm.lastSelectedAccount,\r\n pageId: currentPageId,\r\n };\r\n getToggleResponse(toggleReq).then(() => {\r\n setToggleResponseModel();\r\n setTimeout(() => {\r\n broadcastService.globalSwitcherAccount();\r\n }, 100);\r\n });\r\n });\r\n },\r\n () => {\r\n // do nothing\r\n },\r\n );\r\n } else {\r\n saveData().then(\r\n () => {\r\n broadcastService.loadingSpinner(false);\r\n vm.isLoaded = true;\r\n\r\n // Redirect to Dashboard if Closed account\r\n if (item.accountData.status) {\r\n const itemStatus = item.accountData.status.toLowerCase();\r\n if (\r\n (itemStatus === assetService.accountSelectorStrings.closed ||\r\n window.location.pathname.indexOf('inviteuser') !== -1) &&\r\n window.location.pathname !==\r\n assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD\r\n ) {\r\n window.location.href =\r\n assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD;\r\n return;\r\n }\r\n }\r\n $rootScope.firstTimeDashboard = false;\r\n const toggleReq = {\r\n accountNo: vm.lastSelectedAccount,\r\n pageId: currentPageId,\r\n };\r\n\r\n // get toggle response\r\n getToggleResponse(toggleReq).then(() => {\r\n setToggleResponseModel();\r\n setTimeout(() => {\r\n broadcastService.globalSwitcherAccount();\r\n }, 100);\r\n });\r\n },\r\n () => {\r\n // do nothing\r\n },\r\n );\r\n }\r\n // converted/residential account redirect\r\n }\r\n\r\n vm.filteredAccountStorage.selectedAccount = vm.lastSelectedAccount;\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n function init(\r\n legacyDashboardUrl,\r\n email,\r\n inetrnalId,\r\n pageId,\r\n selectedAccountNumber,\r\n ) {\r\n $rootScope.IsAccountSelectorPresent = true;\r\n vm.legacyDashboardUrl = legacyDashboardUrl;\r\n\r\n if (!assetService.apiConfig.useLocalHost) {\r\n vm.currentUser = {\r\n emailId: email,\r\n cdpId: inetrnalId,\r\n };\r\n\r\n currentPageId = pageId;\r\n\r\n contractAccountSelectedFromLogin = selectedAccountNumber;\r\n\r\n // store the details in session storage\r\n sessionStorageService.set(\r\n assetService.storageKeys.currentUser,\r\n vm.currentUser,\r\n );\r\n\r\n $rootScope.currentUserEmailId = vm.currentUser.emailId;\r\n $rootScope.currentUserCdpId = vm.currentUser.cdpId;\r\n load();\r\n } else {\r\n load();\r\n }\r\n }\r\n\r\n $scope.$on('nicknameForAccountSelector', (event, returnObj) => {\r\n contractAccountSelectedFromLogin = returnObj.accNumber;\r\n load();\r\n });\r\n}\r\n","app.controller('ModalAddAccountMissingApt', ModalAddAccountMissingApt);\r\nModalAddAccountMissingApt.$inject = [\r\n '$log',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'createUserProfile',\r\n 'addAccountUpdateBpService',\r\n '$rootScope',\r\n '$modalInstance',\r\n 'getLoggedInUserDetailsService',\r\n 'accountSearchService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ModalAddAccountMissingApt(\r\n $log,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n createUserProfile,\r\n addAccountUpdateBpService,\r\n $rootScope,\r\n $modalInstance,\r\n getLoggedInUserDetailsService,\r\n accountSearchService,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n /* --------------Global Declarations-----------------------*/\r\n const vm = this;\r\n vm.isDisable = true;\r\n vm.newExperience = true;\r\n const _individual = 'INDIVIDUAL';\r\n const _organization = 'ORGANIZATION';\r\n const _addAccount = 'Add Account';\r\n const _missingHeadLine ='please double check address';\r\n vm.currentAddress = {};\r\n vm.address = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.currentAddress,\r\n );\r\n vm.apartment;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.continueWithAddress = continueWithAddress;\r\n vm.closeModal = closeModal;\r\n vm.goToEditAddress = goToEditAddress;\r\n vm.enableUpdate = enableUpdate;\r\n vm.updateAddress = updateAddress;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n const fedTaxId = sessionStorageService.get(\r\n assetService.storageKeys.addAccountFedTaxId,\r\n );\r\n const orgName = sessionStorageService.get(\r\n assetService.storageKeys.addAccountOrgName,\r\n );\r\n let experience = sessionStorageService.get(assetService.storageKeys.transfertypeAccount);\r\n const chekLandLordFlowFromOptions = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function init() {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.emailId = results.Value;\r\n load();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n load();\r\n }\r\n\r\n function enableUpdate() {\r\n vm.isDisable = false;\r\n }\r\n\r\n function closeModal() {\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n $modalInstance.close();\r\n }\r\n\r\n function goToEditAddress() {\r\n closeModal();\r\n }\r\n\r\n function continueWithAddress(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n updateAddress();\r\n closeModal();\r\n $state.go('addAccount-track.termsOfUse');\r\n }\r\n function next() {\r\n if ($rootScope.OrgNewExp) {\r\n $state.go('addAccount-track.termsOfUse');\r\n } else {\r\n $state.go('addAccount-succes-multipleAccounts');\r\n }\r\n }\r\n\r\n function updateAddress(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n let accountData = {};\r\n if (chekLandLordFlow === _individual) {\r\n accountData = {\r\n dataSource: 'ISU',\r\n requestingFunction:\r\n assetService.serviceActions.accountSearch.ACCT_REG,\r\n tidNo: '',\r\n orgName: '',\r\n fullSSN: $rootScope.fullSSN,\r\n dob: $rootScope.dob,\r\n };\r\n } else if (chekLandLordFlow === _organization) {\r\n accountData = {\r\n dataSource: 'ISU',\r\n requestingFunction:\r\n assetService.serviceActions.accountSearch.ACCT_REG,\r\n tidNo: fedTaxId,\r\n orgName: orgName,\r\n };\r\n }\r\n attributePush(\r\n `workFlow:${_addAccount}`,\r\n `headline:${$('.title-modal')\r\n .first()\r\n .text()}`,\r\n `addedSpec:${$('.FP-Button__button-submit')\r\n .first()\r\n .text()}`,\r\n `buttonText:${chekLandLordFlowFromOptions}`,\r\n );\r\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'error', $(\".FP-Button__button-submit\").text());\r\n getAccountData(accountData).then((result) => {\r\n if (!vm.primaryBP) {\r\n bpCheck();\r\n } else {\r\n closeModal();\r\n $state.go('addAccount-track.termsOfUse');\r\n }\r\n });\r\n }\r\n\r\n function getAccountData(data) {\r\n return accountSearchService.sitecore.accountSearchPublic(data).then((result) => {\r\n if (result.d.ReqToHResNav && result.d.ReqToHResNav.results.length > 0) {\r\n const accountData = result.d.ReqToHResNav.results[0].HResToBp.results[0];\r\n\r\n if (accountData.BpNumber) {\r\n vm.primaryBP = accountData.BpNumber;\r\n sessionStorageService.set(\r\n assetService.storageKeys.primaryBP,\r\n vm.primaryBP,\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n function bpCheck() {\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n if (chekLandLordFlow === _organization) {\r\n let createProfileValues = {\r\n bpFlag: 'X',\r\n organizationname1: orgName,\r\n federaltaxid: fedTaxId,\r\n businessPartnerType: '2',\r\n firstName: vm.firstName,\r\n lastName: vm.lastName,\r\n housenumber: vm.currentAddress.Apartment,\r\n street: vm.currentAddress.StreetAddress,\r\n city: vm.currentAddress.City,\r\n country: 'US',\r\n State: vm.currentAddress.State,\r\n zipcode: vm.currentAddress.ZipCode,\r\n bpRole: 'MKK',\r\n };\r\n createProfile(createProfileValues).then((result) => {\r\n closeModal();\r\n next();\r\n });\r\n } else if (chekLandLordFlow === _individual) {\r\n let updateBpValues = {\r\n fullSSN: $rootScope.fullSSN,\r\n dob: $rootScope.dob,\r\n bpId: vm.primaryBP ? vm.primaryBP : vm.relatedBP,\r\n houseNo: vm.currentAddress.Apartment,\r\n address: vm.currentAddress.StreetAddress,\r\n state: vm.currentAddress.State,\r\n city: vm.currentAddress.City,\r\n zipCode: vm.currentAddress.ZipCode,\r\n };\r\n updateBp(updateBpValues).then((result) => {\r\n closeModal();\r\n $state.go('addAccount-track.termsOfUse');\r\n });\r\n }\r\n }\r\n function updateBp(data) {\r\n return addAccountUpdateBpService.sitecore.updatebps(data).then(\r\n () => { },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function createProfile(data) {\r\n return createUserProfile.sitecore.createUserProfile(data).then((result) => {\r\n if (\r\n result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp !== ''\r\n ) {\r\n vm.primaryBP = result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp;\r\n sessionStorageService.set(\r\n assetService.storageKeys.primaryBP,\r\n vm.primaryBP,\r\n );\r\n }\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n };\r\n });\r\n }\r\n function load() {\r\n vm.currentAddress = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.currentAddress,\r\n );\r\n vm.firstName = sessionStorageService.get(assetService.storageKeys.firstName);\r\n vm.lastName = sessionStorageService.get(assetService.storageKeys.lastName);\r\n vm.relatedBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\r\n }\r\n attributePush('workFlow:error add account ' + experience, 'headline:' + _addAccount, 'subheadline:' + chekLandLordFlowFromOptions, 'addedSpec:' + assetService.sitecoreEndpoints.addresValidation, 'buttonText: not-set' , 'addedEvent:' + _missingHeadLine);\r\n virtualPagePush(_addAccount, _addAccount, experience, chekLandLordFlowFromOptions, 'continue', 'error', 'not set'); \r\n init();\r\n}\r\n","app.controller(\r\n 'ModalAddAccountMultipleAddressSuggestion',\r\n ModalAddAccountMultipleAddressSuggestion,\r\n);\r\nModalAddAccountMultipleAddressSuggestion.$inject = [\r\n '$log',\r\n '$state',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'createUserProfile',\r\n 'addAccountUpdateBpService',\r\n '$rootScope',\r\n '$modalInstance',\r\n 'accountSearchService',\r\n 'getLoggedInUserDetailsService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ModalAddAccountMultipleAddressSuggestion(\r\n $log,\r\n $state,\r\n sessionStorageService,\r\n assetService,\r\n createUserProfile,\r\n addAccountUpdateBpService,\r\n $rootScope,\r\n $modalInstance,\r\n accountSearchService,\r\n getLoggedInUserDetailsService,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n const vm = this;\r\n const _individual = 'INDIVIDUAL';\r\n const _organization = 'ORGANIZATION';\r\n const _addAccount = 'Add Account';\r\n const _multipleMessage = 'multiple address found';\r\n vm.currentAddress = {};\r\n vm.addressRange = [];\r\n vm.dataToPost = {};\r\n vm.isDisable = true;\r\n vm.newExperience = true;\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.updateAddress = updateAddress;\r\n vm.closeModal = closeModal;\r\n vm.goToEditAddress = goToEditAddress;\r\n vm.getAddress = getAddress;\r\n\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n const fedTaxId = sessionStorageService.get(\r\n assetService.storageKeys.addAccountFedTaxId,\r\n );\r\n const orgName = sessionStorageService.get(\r\n assetService.storageKeys.addAccountOrgName,\r\n );\r\n let experience = sessionStorageService.get(\r\n assetService.storageKeys.transfertypeAccount,\r\n );\r\n const chekLandLordFlowFromOptions = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function closeModal() {\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n $modalInstance.close();\r\n }\r\n function next() {\r\n if ($rootScope.OrgNewExp) {\r\n $state.go('addAccount-track.termsOfUse');\r\n } else {\r\n $state.go('addAccount-succes-multipleAccounts');\r\n }\r\n }\r\n\r\n function load() {\r\n vm.addressRange = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.addressRange,\r\n );\r\n vm.currentAddress = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.currentAddress,\r\n );\r\n vm.firstName = sessionStorageService.get(\r\n assetService.storageKeys.firstName,\r\n );\r\n vm.lastName = sessionStorageService.get(assetService.storageKeys.lastName);\r\n vm.relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBP,\r\n );\r\n\r\n attributePush(\r\n 'workFlow:error add account ' + experience,\r\n 'headline:' + _addAccount,\r\n 'subheadline:' + chekLandLordFlowFromOptions,\r\n 'addedSpec:' + assetService.sitecoreEndpoints.addresValidation,\r\n 'buttonText: not-set',\r\n 'addedEvent:' + _multipleMessage,\r\n );\r\n virtualPagePush(\r\n _addAccount,\r\n _addAccount,\r\n experience,\r\n chekLandLordFlowFromOptions,\r\n 'continue',\r\n 'error',\r\n 'not set',\r\n );\r\n }\r\n\r\n function getAddress(selectedAddress, radioBtn) {\r\n vm.dataToPost = {\r\n action:\r\n assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(\r\n assetService.storageKeys.businessPartnerId,\r\n ),\r\n contractAccountId: sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n ),\r\n city: vm.currentAddress.City,\r\n state: vm.currentAddress.State,\r\n zipCd: vm.currentAddress.ZipCode,\r\n houseNo: vm.currentAddress.HouseNumber,\r\n };\r\n\r\n if (radioBtn === 0) {\r\n vm.dataToPost.street = selectedAddress.streetaddress;\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedNewAddress,\r\n vm.dataToPost.street,\r\n );\r\n }\r\n if (radioBtn === 1) {\r\n vm.dataToPost.street = selectedAddress;\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedNewAddress,\r\n vm.dataToPost.street,\r\n );\r\n }\r\n vm.isDisable = false;\r\n }\r\n\r\n function updateAddress() {\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n let accountData = {};\r\n if (chekLandLordFlow === _individual) {\r\n accountData = {\r\n dataSource: assetService.urlTokens.ISU,\r\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\r\n tidNo: '',\r\n orgName: '',\r\n fullSSN: $rootScope.fullSSN,\r\n dob: $rootScope.dob,\r\n };\r\n } else if (chekLandLordFlow === _organization) {\r\n accountData = {\r\n dataSource: assetService.urlTokens.ISU,\r\n requestingFunction: assetService.serviceActions.accountSearch.ACCT_REG,\r\n tidNo: fedTaxId,\r\n orgName: orgName,\r\n };\r\n }\r\n attributePush(\r\n 'workFlow:' + _addAccount,\r\n 'headline:' +\r\n $('.multipleSuggestionAddressModal h3')\r\n .text()\r\n .trim(),\r\n 'addedSpec:' + $('.FP-Button__button-submit').text(),\r\n 'buttonText:' + chekLandLordFlowFromOptions,\r\n );\r\n virtualPagePush(\r\n _addAccount,\r\n _addAccount,\r\n experience,\r\n chekLandLordFlowFromOptions,\r\n 'error',\r\n $('.FP-Button__button-submit').text(),\r\n );\r\n getAccountData(accountData).then(result => {\r\n if (!vm.primaryBP) {\r\n bpCheck();\r\n } else {\r\n closeModal();\r\n $state.go('addAccount-track.termsOfUse');\r\n }\r\n });\r\n }\r\n\r\n function goToEditAddress() {\r\n closeModal();\r\n }\r\n\r\n function getAccountData(data) {\r\n return accountSearchService.sitecore\r\n .accountSearchPublic(data)\r\n .then(result => {\r\n if (result.d.ReqToHResNav && result.d.ReqToHResNav.results.length > 0) {\r\n const accountData =\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0];\r\n if (accountData.BpNumber) {\r\n vm.primaryBP = accountData.BpNumber;\r\n sessionStorageService.set(\r\n assetService.storageKeys.primaryBP,\r\n vm.primaryBP,\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n function bpCheck() {\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n let selectedNewAddress = sessionStorageService.get(\r\n assetService.storageKeys.selectedNewAddress,\r\n );\r\n if (typeof selectedNewAddress === 'string') {\r\n let updatedAddress = selectedNewAddress.split(',');\r\n if (chekLandLordFlow === _organization) {\r\n let createProfileValues = {\r\n bpFlag: 'X',\r\n organizationname1: orgName,\r\n federaltaxid: fedTaxId,\r\n businessPartnerType: '2',\r\n firstName: vm.firstName,\r\n lastName: vm.lastName,\r\n housenumber: vm.currentAddress.HouseNumber,\r\n unit: vm.currentAddress.floor,\r\n street: updatedAddress.length\r\n ? updatedAddress.length > 4\r\n ? `${updatedAddress[0].trim()},${updatedAddress[1].trim()}`\r\n : updatedAddress[0].trim()\r\n : '',\r\n city: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 3].trim()\r\n : '',\r\n country: 'US',\r\n State: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 2].trim()\r\n : '',\r\n zipcode: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 1].trim()\r\n : '',\r\n bpRole: 'MKK',\r\n };\r\n createProfile(createProfileValues).then(result => {\r\n closeModal();\r\n next();\r\n });\r\n } else if (chekLandLordFlow === _individual) {\r\n let updateBpValues = {\r\n fullSSN: $rootScope.fullSSN,\r\n dob: $rootScope.dob,\r\n bpId: vm.primaryBP ? vm.primaryBP : vm.relatedBP,\r\n houseNo: vm.currentAddress.HouseNumber,\r\n unit: vm.currentAddress.floor,\r\n address: updatedAddress.length\r\n ? updatedAddress.length > 4\r\n ? `${updatedAddress[0].trim()},${updatedAddress[1].trim()}`\r\n : updatedAddress[0].trim()\r\n : '',\r\n state: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 2].trim()\r\n : '',\r\n city: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 3].trim()\r\n : '',\r\n zipCode: updatedAddress.length\r\n ? updatedAddress[updatedAddress.length - 1].trim()\r\n : '',\r\n };\r\n updateBp(updateBpValues).then(result => {\r\n closeModal();\r\n $state.go('addAccount-track.termsOfUse');\r\n });\r\n }\r\n }\r\n }\r\n function updateBp(data) {\r\n return addAccountUpdateBpService.sitecore.updatebps(data).then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function createProfile(data) {\r\n return createUserProfile.sitecore.createUserProfile(data).then(result => {\r\n if (result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp !== '') {\r\n vm.primaryBP =\r\n result.d.ZDIG_Request_to_Response_Valid.results[0].RelatedBp;\r\n sessionStorageService.set(\r\n assetService.storageKeys.primaryBP,\r\n vm.primaryBP,\r\n );\r\n }\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n };\r\n });\r\n }\r\n function init() {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.emailId = results.Value;\r\n //load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n load();\r\n }\r\n init();\r\n}\r\n","app.controller('addAccountContainerSuccess', addAccountContainerSuccess);\r\n\r\naddAccountContainerSuccess.$inject = [\r\n '$log',\r\n '$scope',\r\n '$location',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'ccAddAccountAssetService',\r\n 'getLoggedInUserDetailsService',\r\n 'getLoggedinBPDetailsAndAssociatedAccountsService',\r\n 'broadcastService',\r\n 'sewDashboardService',\r\n '$filter',\r\n 'ccGetUserBPDetailsService',\r\n 'addAccountServices',\r\n 'commongaTaggingService',\r\n '$rootScope',\r\n];\r\n\r\nfunction addAccountContainerSuccess(\r\n $log,\r\n $scope,\r\n $location,\r\n sessionStorageService,\r\n assetService,\r\n ccAddAccountAssetService,\r\n getLoggedInUserDetailsService,\r\n getLoggedinBPDetailsAndAssociatedAccountsService,\r\n broadcastService,\r\n sewDashboardService,\r\n $filter,\r\n ccGetUserBPDetailsService,\r\n addAccountServices,\r\n commongaTaggingService,\r\n $rootScope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.tableSuccess = false;\r\n vm.showBtn = true;\r\n vm.accountsInfo = [];\r\n vm.accountsToShow = [];\r\n vm.errorRelationship = false;\r\n vm.loadingSpinner = true;\r\n vm.experienceValue = '';\r\n let globalAccountInfo = {};\r\n let _cdpId = null;\r\n let _emailId = null;\r\n let _accountSelector = {};\r\n let globalSelectedAccount = {};\r\n const _account = {};\r\n vm.newExperiences = {};\r\n vm.contractAccount = null;\r\n const _individual = 'INDIVIDUAL';\r\n const _organization = 'ORGANIZATION';\r\n const _landlordExp = 'SSA_LANDLORD';\r\n const _commExp = 'SSA_BUSINESS';\r\n const _resiExp = 'SC_RESIDENTIAL';\r\n vm.IndividualOrg = false;\r\n vm.grouped = false;\r\n const _residential = assetService.strings.RESIDENTIAL;\r\n /* --------------Global Vars-----------------------*/\r\n vm.minusTableHeaders = [\r\n {\r\n column: ccAddAccountAssetService.strings.ACCOUNT_NUM_COL,\r\n sortAsc: false,\r\n },\r\n ];\r\n vm.oneDigit = 1;\r\n const zero = 0;\r\n vm.currentAccount = {};\r\n vm.relatedBp = '';\r\n const TEN = 10;\r\n vm.limitRows = 10;\r\n vm.sortAsc = false;\r\n vm.showSSADisclaimer = sessionStorageService.get(\r\n ccAddAccountAssetService.storageKeys.showSSADisclaimer,\r\n );\r\n vm.accountsCount = 0;\r\n vm.masking = '';\r\n /* --------------Function Declarations-----------------------*/\r\n vm.showAllAccounts = showAllAccounts;\r\n vm.goToPage = goToPage;\r\n vm.sortByColumn = sortByColumn;\r\n vm.redirectToSew = redirectToSew;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n vm.selectedAccountsData = [];\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function sortByColumn(value) {\r\n vm.orderBy = vm.minusTableHeaders[value].column;\r\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\r\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\r\n vm.accountsToShow = $filter('orderBy')(\r\n vm.accountsToShow,\r\n ccAddAccountAssetService.strings.ACCOUNT_NUM,\r\n vm.sortAsc,\r\n );\r\n }\r\n\r\n function virtualPagePushForSymbol() {\r\n // common ga Tagging file doesn't allow # symbol, so adding this vpp function here\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n\r\n if (arrayElements && arrayElements.length > 0) {\r\n const fireEvent = 'fire-vpv';\r\n let vpvName = arrayElements[0]\r\n ? arrayElements[0].toLowerCase() == 'public' ||\r\n arrayElements[0].toLowerCase() == 'form' ||\r\n arrayElements[0].toLowerCase() == 'friendly form' ||\r\n arrayElements[0].toLowerCase() == 'light-auth'\r\n ? '/vpv'\r\n : '/vpv/authenticated'\r\n : '/vpv/authenticated';\r\n if (\r\n arrayElements[0] &&\r\n arrayElements[0].toLowerCase() == 'form' &&\r\n !(arrayElements[1].toLowerCase() == 'public')\r\n ) {\r\n arrayElements.splice(1, 0, 'authenticated');\r\n }\r\n _.forEach(arrayElements, data => {\r\n if (data) {\r\n data = data\r\n .replace(/(<([^>]+)>)/gi, '')\r\n .replace(/[^#a-zA-Z0-9- ]/g, '')\r\n .replace(/[0-9]{10,}/g, 'xxxxxxxxxx')\r\n .trim()\r\n .toLowerCase()\r\n .replace(/ +/g, ' ')\r\n .split(' ')\r\n .join('-');\r\n const appendValue = `/${data}`;\r\n vpvName = vpvName.concat(appendValue);\r\n }\r\n });\r\n $rootScope.virtualPagePush(fireEvent, vpvName);\r\n }\r\n }\r\n\r\n function attributePushForSymbol() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n if (arrayElements && arrayElements.length > 0) {\r\n const objectElements = {};\r\n _.forEach(arrayElements, item => {\r\n if (item.split(':')[1]) {\r\n objectElements[item.split(':')[0]] = item\r\n .split(':')[1]\r\n .replace(/(<([^>]+)>)/gi, '')\r\n .replace(/[^#a-zA-Z0-9- /]/g, '')\r\n .replace(/[0-9]{10,}/g, 'xxxxxxxxxx')\r\n .trim()\r\n .toLowerCase()\r\n .replace(/ +/g, ' ')\r\n .split(' ')\r\n .join('-');\r\n }\r\n });\r\n const attributeObject = {\r\n 'event-category': objectElements.workFlow\r\n ? objectElements.workFlow.split('-').join('_')\r\n : '',\r\n 'event-action':\r\n (objectElements.buttonText ? objectElements.buttonText : '') +\r\n (objectElements.buttonText && objectElements.addedSpec ? '-|-' : '') +\r\n (objectElements.addedSpec ? objectElements.addedSpec : '') +\r\n ((objectElements.buttonText || objectElements.addedSpec) &&\r\n objectElements.addedEvent\r\n ? '-|-'\r\n : '') +\r\n (objectElements.addedEvent ? objectElements.addedEvent : '') +\r\n (objectElements.returnCode ? objectElements.returnCode : '') +\r\n (objectElements.returnCode && objectElements.endpoint ? '-|-' : '') +\r\n (objectElements.endpoint ? objectElements.endpoint : '') +\r\n ((objectElements.returnCode || objectElements.endpoint) &&\r\n objectElements.msgHeader\r\n ? '-|-'\r\n : '') +\r\n (objectElements.msgHeader ? objectElements.msgHeader : ''),\r\n 'event-label':\r\n (objectElements.headline ? objectElements.headline : '') +\r\n (objectElements.headline && objectElements.subheadline ? '-|-' : '') +\r\n (objectElements.subheadline ? objectElements.subheadline : '') +\r\n ((objectElements.headline || objectElements.subheadline) &&\r\n objectElements.addedHeadline\r\n ? '-|-'\r\n : '') +\r\n (objectElements.addedHeadline ? objectElements.addedHeadline : ''),\r\n event: 'fire-event',\r\n };\r\n\r\n $rootScope.attributePush(\r\n attributeObject['event-category'],\r\n attributeObject['event-action'],\r\n attributeObject['event-label'],\r\n attributeObject.event,\r\n );\r\n }\r\n }\r\n\r\n function goToPage(dashboard, disambiguation, listOfAccounts, sewDashboard) {\r\n const userType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n const selectedAccounts = vm.selectedAccountsData;\r\n const experienceType = sessionStorageService.get(\r\n assetService.storageKeys.experienceAccount,\r\n );\r\n vm.experienceValue = experienceType || '';\r\n if (vm.experienceValue === _residential) {\r\n vm.experienceValue = assetService.storageKeys.home;\r\n }\r\n if (vm.accountsCount == 1) {\r\n attributePush(\r\n `workFlow:${$('#hdn-toast').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast').attr('businessFunction')}`,\r\n `buttonText:${$('#hdn-toast').attr('successTitleSingleAccount')}`,\r\n `addedSpec:${$('#hdn-toast').attr('manageMyAccnt')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('businessFunction'),\r\n vm.experienceValue,\r\n $('#hdn-toast').attr('successTitleSingleAccount'),\r\n $('#hdn-toast').attr('manageMyAccnt'),\r\n );\r\n } else {\r\n attributePushForSymbol(\r\n `workFlow:${$('#hdn-toast').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast').attr('businessFunction')}`,\r\n `buttonText:${$('#hdn-toast').attr(\r\n 'successTitleMultipleAccnt',\r\n )} # accounts!'`,\r\n `addedSpec:${$('#hdn-toast').attr('manageMyAccnt')}`,\r\n );\r\n virtualPagePushForSymbol(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('businessFunction'),\r\n vm.experienceValue,\r\n `${$('#hdn-toast').attr('successTitleMultipleAccnt')} # accounts!`,\r\n $('#hdn-toast').attr('manageMyAccnt'),\r\n );\r\n }\r\n\r\n let amountOfAccounts = 0;\r\n if (selectedAccounts) {\r\n amountOfAccounts = selectedAccounts.length;\r\n }\r\n let multiAccountExperience = false;\r\n let sameExperience = false;\r\n let exp = 'RESI';\r\n if (selectedAccounts[0].Experience === _landlordExp) {\r\n exp = 'LANL';\r\n } else if (selectedAccounts[0].Experience === _commExp) {\r\n exp = 'COMM';\r\n }\r\n\r\n const profileExperience = sessionStorageService.get(\r\n ccAddAccountAssetService.storageKeys.profileExperiences,\r\n );\r\n if (\r\n amountOfAccounts === 1 &&\r\n profileExperience.length === 1 &&\r\n selectedAccounts[0].Experience !== _resiExp &&\r\n selectedAccounts[0].Experience !== _landlordExp &&\r\n selectedAccounts[0].Experience !== _commExp\r\n ) {\r\n window.location.href =\r\n disambiguation +\r\n '?selectedExperience=' +\r\n selectedAccounts[0].Experience;\r\n }\r\n\r\n if (userType == 'NATIVE_USER') {\r\n if (amountOfAccounts == 1) {\r\n multiAccountExperience = multiAccountExp();\r\n if (\r\n selectedAccounts[0].Experience === 'SC_RESIDENTIAL' &&\r\n !multiAccountExperience\r\n ) {\r\n window.location.href = dashboard;\r\n } else {\r\n sameExperience = sameExp();\r\n switch (sameExperience) {\r\n case false: {\r\n window.location.href = disambiguation;\r\n break;\r\n }\r\n case true: {\r\n window.location.href =\r\n disambiguation +\r\n '?selectedExperience=' +\r\n selectedAccounts[0].Experience;\r\n break;\r\n }\r\n }\r\n }\r\n } else if (amountOfAccounts > 1) {\r\n multiAccountExperience = multiAccountExp();\r\n switch (multiAccountExperience) {\r\n case true: {\r\n window.location.href = disambiguation;\r\n break;\r\n }\r\n case false: {\r\n window.location.href = listOfAccounts;\r\n break;\r\n }\r\n }\r\n }\r\n } else if (amountOfAccounts == 1) {\r\n multiAccountExperience = multiAccountExp();\r\n if (multiAccountExperience) {\r\n window.location.href = disambiguation;\r\n } else if (selectedAccounts[0].Experience == 'SC_RESIDENTIAL') {\r\n window.location.href = dashboard;\r\n } else {\r\n if (selectedAccounts[0].Experience == 'SC_RESIDENTIAL') {\r\n window.location.href = dashboard;\r\n } else {\r\n window.location.href =\r\n disambiguation +\r\n '?selectedExperience=' +\r\n selectedAccounts[0].Experience;\r\n }\r\n }\r\n } else if (amountOfAccounts > 1) {\r\n multiAccountExperience = multiAccountExp();\r\n switch (multiAccountExperience) {\r\n case true: {\r\n window.location.href = disambiguation;\r\n break;\r\n }\r\n case false: {\r\n window.location.href = listOfAccounts;\r\n break;\r\n }\r\n }\r\n }\r\n function multiAccountExp() {\r\n for (let i = 0; i < selectedAccounts.length; i++) {\r\n if (selectedAccounts[0].Experience != selectedAccounts[i].Experience) {\r\n return true;\r\n }\r\n }\r\n const multiExperience = sessionStorageService.get(\r\n ccAddAccountAssetService.storageKeys.profileExperiences,\r\n );\r\n if (multiExperience.length > zero) {\r\n if (multiExperience.length === 1) {\r\n for (let i = 0; i < selectedAccounts.length; i++) {\r\n if (\r\n multiExperience[0] != 'NONN' &&\r\n multiExperience[0] != selectedAccounts[i].Experience\r\n ) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n if (\r\n multiExperience.length == 2 &&\r\n multiExperience[1] === 'NONN' &&\r\n multiExperience[0] === selectedAccounts[0].Experience\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function sameExp() {\r\n const userExperiences = sessionStorageService.get(\r\n ccAddAccountAssetService.storageKeys.profileExperiences,\r\n );\r\n if (userExperiences.length > zero) {\r\n if (userExperiences.length === 1) {\r\n for (let i = 0; i < selectedAccounts.length; i++) {\r\n if (userExperiences[0] === selectedAccounts[i].Experience) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n function redirectToSew(sewDashboard) {\r\n vm.indOrOrg = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n attributePush(\r\n `workFlow:${$('#hdn-toast').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast').attr('headLine')}`,\r\n 'subheadline:' + $('#hdn-toast').attr('addPropertiesHeading'),\r\n `buttonText:${$('#hdn-toast').attr('addProperties')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('headLine'),\r\n vm.experienceValue,\r\n vm.indOrOrg,\r\n $('#hdn-toast').attr('addPropertiesHeading'),\r\n $('#hdn-toast').attr('addProperties'),\r\n );\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(results => {\r\n let bpType = '';\r\n let orgName = '';\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n if (chekLandLordFlow === _individual) {\r\n bpType = '1';\r\n orgName = '';\r\n } else {\r\n bpType = '2';\r\n orgName = sessionStorageService.get(\r\n assetService.storageKeys.addAccountOrgName,\r\n )\r\n ? sessionStorageService.get(\r\n assetService.storageKeys.addAccountOrgName,\r\n )\r\n : '';\r\n }\r\n const accountData = sessionStorageService.get(\r\n assetService.storageKeys.customerBpData,\r\n );\r\n const customerBpFirstName =\r\n accountData && accountData.firstName ? accountData.firstName : '';\r\n const customerBpLastName =\r\n accountData && accountData.lastName ? accountData.lastName : '';\r\n const customerBp = sessionStorageService.get(\r\n assetService.storageKeys.primaryBP,\r\n )\r\n ? sessionStorageService.get(assetService.storageKeys.primaryBP)\r\n : '';\r\n const expToSend = {\r\n url: sewDashboard,\r\n experience: assetService.strings.ADD_PROPERTIES,\r\n cdp: `${results.Key}`,\r\n userBp: `${vm.currentUser.primaryBp}`,\r\n firstname: `${vm.currentUser.bpFirstName}`,\r\n lastname: `${vm.currentUser.bpLastName}`,\r\n userEmail: `${vm.currentUser.emailId}`,\r\n customerBp: `${customerBp}`,\r\n customerBPType: `${bpType}`,\r\n customerBPOrgName: `${orgName}`,\r\n customerBPEmail: `${vm.currentUser.emailId}`,\r\n customerBPFirstName: `${\r\n customerBpFirstName ? customerBpFirstName : vm.currentUser.bpFirstName\r\n }`,\r\n customerBPLastName: `${\r\n customerBpLastName ? customerBpLastName : vm.currentUser.bpLastName\r\n }`,\r\n };\r\n sewDashboardService.sitecore.sewDashboard(expToSend).then(\r\n results => {\r\n window.location.href = results;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n });\r\n }\r\n\r\n function showAllAccounts() {\r\n for (let i = TEN; i < vm.accountsInfo.length; i++) {\r\n vm.accountsToShow.push(vm.accountsInfo[i]);\r\n }\r\n sortByColumn(0);\r\n vm.showBtn = false;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n load();\r\n });\r\n\r\n function load() {\r\n vm.show24HrMessage = $rootScope.show24Hour;\r\n const chekLandLordFlow = sessionStorageService.get(\r\n assetService.storageKeys.lanlordIndOrOrg,\r\n );\r\n\r\n if (\r\n chekLandLordFlow &&\r\n (chekLandLordFlow === _individual || chekLandLordFlow === _organization)\r\n ) {\r\n vm.experienceType = 'Landlord';\r\n } else {\r\n vm.experienceType = sessionStorageService.get(\r\n assetService.storageKeys.experienceAccount,\r\n );\r\n }\r\n vm.experienceType = vm.experienceType ? vm.experienceType : '';\r\n if (vm.experienceType === _residential) {\r\n vm.experienceType = assetService.storageKeys.home;\r\n }\r\n vm.experienceValue = vm.experienceType;\r\n\r\n if (\r\n chekLandLordFlow &&\r\n (chekLandLordFlow === _individual || chekLandLordFlow === _organization)\r\n ) {\r\n vm.IndividualOrg = true;\r\n vm.loadingSpinner = false;\r\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\r\n } else {\r\n vm.accountsToShow = [];\r\n vm.selectedAccounts = [];\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS\r\n ) {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.NONN);\r\n } else {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n }\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (assetService.apiConfig.useLocalHost) {\r\n _cdpId = $location.search().cdpId;\r\n _emailId = $location.search().emailId;\r\n } else {\r\n _cdpId = vm.currentUser.cdpId;\r\n _emailId = vm.currentUser.emailId;\r\n }\r\n vm.accountsInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAccounts,\r\n );\r\n\r\n let countOfAccts = 0;\r\n let expName = '';\r\n let ownerBP = '';\r\n _.forEach(vm.accountsInfo, acctGrp => {\r\n if (acctGrp.GroupedAcc.length > 0) {\r\n _.forEach(acctGrp.GroupedAcc, grpAcct => {\r\n if (\r\n expName !== grpAcct.Experience ||\r\n (grpAcct.OwnerBp && grpAcct.OwnerBp !== ownerBP)\r\n ) {\r\n expName = grpAcct.Experience;\r\n ownerBP = grpAcct.OwnerBp ? grpAcct.OwnerBp : '';\r\n countOfAccts = countOfAccts + parseInt(grpAcct.Count);\r\n }\r\n });\r\n } else {\r\n countOfAccts += 1;\r\n }\r\n });\r\n vm.accountsCount = countOfAccts || vm.selectedAccounts.length;\r\n\r\n vm.selectedAccounts = sessionStorageService.get(\r\n assetService.storageKeys.selectedAccounts,\r\n );\r\n _accountSelector = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n vm.newExperiences = sessionStorageService.get(\r\n ccAddAccountAssetService.storageKeys.newExperiences,\r\n );\r\n vm.relatedBp = sessionStorageService.get(\r\n assetService.storageKeys.primaryPartner,\r\n );\r\n\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedinBPDetailsAndAssociatedAccountsService.sitecore\r\n .getBPDetailsRefreshCache({ emailId: _emailId, cdpId: _cdpId })\r\n .then(\r\n result => {\r\n vm.grouped = true;\r\n vm.accountsInfo = addAccountServices.groupByJurisdiction(\r\n vm.accountsInfo,\r\n );\r\n vm.groupedSelectedAccounts = vm.accountsInfo.length;\r\n vm.accountsToShow = vm.selectedAccounts.slice(0, 10);\r\n vm.tableSuccess = true;\r\n vm.loadingSpinner = false;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n vm.grouped = true;\r\n vm.accountsInfo = addAccountServices.groupByJurisdiction(\r\n vm.accountsInfo,\r\n );\r\n vm.groupedSelectedAccounts = vm.accountsInfo.length;\r\n vm.accountsToShow = vm.selectedAccounts.slice(0, 10);\r\n vm.tableSuccess = true;\r\n vm.loadingSpinner = false;\r\n }\r\n }\r\n let countLength = vm.accountsCount.toString().length;\r\n vm.masking = Array(countLength + 1).join('X');\r\n vm.selectedAccountsData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAccounts,\r\n );\r\n sessionStorageService.delete(assetService.storageKeys.selectedAccounts);\r\n if (vm.IndividualOrg) {\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('headLine'),\r\n vm.experienceValue,\r\n chekLandLordFlow,\r\n $('#hdn-toast').attr('addPropertiesHeading'),\r\n $('#hdn-toast').attr('confirmation'),\r\n );\r\n } else {\r\n if (vm.accountsCount == 1) {\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('headLine'),\r\n vm.experienceValue,\r\n $('#hdn-toast').attr('successTitleSingleAccount'),\r\n $('#hdn-toast').attr('confirmation'),\r\n );\r\n } else {\r\n virtualPagePushForSymbol(\r\n $('#hdn-toast').attr('businessFunction'),\r\n $('#hdn-toast').attr('headLine'),\r\n vm.experienceValue,\r\n `${$('#hdn-toast').attr('successTitleMultipleAccnt')} # accounts!`,\r\n $('#hdn-toast').attr('confirmation'),\r\n );\r\n }\r\n }\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n /* ---------------Initialization-------------------*/\r\n function ccGetUserBPDetails() {\r\n return ccGetUserBPDetailsService.getUserBPDetails().then(\r\n result => {\r\n vm.currentUser = {\r\n emailId: result.bpData.currentUserLoginEmail\r\n ? result.bpData.currentUserLoginEmail\r\n : '',\r\n cdpId: result.bpData.currentUserCdpId\r\n ? result.bpData.currentUserCdpId\r\n : '',\r\n primaryBp: result.bpData.primaryBp ? result.bpData.primaryBp : '',\r\n bpFirstName: result.bpData.firstName ? result.bpData.firstName : '',\r\n bpLastName: result.bpData.lastName ? result.bpData.lastName : '',\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const init = function() {\r\n vm.loadingSpinner = true;\r\n if (!assetService.apiConfig.useLocalHost) {\r\n ccGetUserBPDetails().then(\r\n result => {\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n vm.currentUser = {\r\n emailId: $location.search().emailId,\r\n cdpId: $location.search().cdpId,\r\n primaryBp: $location.search().bpId,\r\n bpFirstName: $location.search().firsName,\r\n bpLastName: $location.search().lastName,\r\n };\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('addAccountExperienceSelector', addAccountExperienceSelector);\r\n\r\naddAccountExperienceSelector.$inject = [\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'broadcastService',\r\n 'ccAddAccountAssetService',\r\n 'commongaTaggingService',\r\n 'getLoggedInUserDetailsService',\r\n];\r\n\r\nfunction addAccountExperienceSelector(\r\n $state,\r\n $scope,\r\n $rootScope,\r\n sessionStorageService,\r\n assetService,\r\n broadcastService,\r\n ccAddAccountAssetService,\r\n commongaTaggingService,\r\n getLoggedInUserDetailsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this; \r\n const _residential = ccAddAccountAssetService.strings.RESIDENTIAL;\r\n vm.experienceData = '';\r\n \r\n /* --------------Global Vars-----------------------*/\r\n /* --------------Function Declarations-----------------------*/\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n \r\n function load() {\r\n sessionStorageService.delete(assetService.storageKeys.lanlordIndOrOrg);\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS\r\n ) {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.NONN);\r\n } else {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n }\r\n\r\n vm.webObject = sessionStorageService.get(assetService.strings.WEBOBJECT) ? sessionStorageService.get(assetService.strings.WEBOBJECT) : null;\r\n if (vm.webObject) {\r\n $rootScope.webservicePush(vm.webObject);\r\n }\r\n vm.experienceData = sessionStorageService.get(\r\n assetService.storageKeys.landlordSwitch,\r\n );\r\n if ((dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS) && vm.experienceData === 'LandlordPage') {\r\n vm.experienceData = '';\r\n sessionStorageService.delete(assetService.storageKeys.landlordSwitch);\r\n sessionStorageService.set(\r\n assetService.storageKeys.addAccountTrack,\r\n assetService.storageKeys.addAccountTrack,\r\n );\r\n $state.go(ccAddAccountAssetService.addAccountRouteStates.LANDLORD_TRK);\r\n }\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n vm.findAccount = function(experience) {\r\n sessionStorageService.delete(assetService.storageKeys.lanlordIndOrOrg);\r\n sessionStorageService.set(\r\n assetService.storageKeys.experienceAccount,\r\n experience,\r\n );\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.transfertypeAccount, experience === _residential ? \"HOME\" : experience\r\n );\r\n\r\n if (experience === assetService.strings.LANDLORD) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.addAccountTrack,\r\n assetService.storageKeys.addAccountTrack,\r\n );\r\n $state.go(ccAddAccountAssetService.addAccountRouteStates.LANDLORD_TRK);\r\n } else {\r\n sessionStorageService.delete(\r\n ccAddAccountAssetService.strings.LANDLORD_RTO,\r\n );\r\n $state.go(ccAddAccountAssetService.addAccountRouteStates.ADD_ACCOUNT_TRK);\r\n }\r\n };\r\n\r\n vm.goTo = url => (window.location.href = url);\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n if(!$rootScope.currentUserEmailId) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n $rootScope.currentUserEmailId = results.Value;\r\n },\r\n (error) => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('addAccountSuccessMultiple', addAccountSuccessMultiple);\r\n\r\naddAccountSuccessMultiple.$inject = [\r\n '$log',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'maintainRelationshipService',\r\n 'getLoggedInUserDetailsService',\r\n];\r\n\r\nfunction addAccountSuccessMultiple(\r\n $log,\r\n sessionStorageService,\r\n assetService,\r\n maintainRelationshipService,\r\n getLoggedInUserDetailsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.data = {\r\n action: assetService.serviceActions.maintainRelationship.CRE_REL,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.primaryBP),\r\n relatedBusinessPartnerId: sessionStorageService.get(assetService.storageKeys.relatedBP),\r\n cdpid : vm.currentUser.cdpId ? vm.currentUser.cdpId : '',\r\n email: vm.currentUser.emailId ? vm.currentUser.emailId : '',\r\n }\r\n /* --------------Global Vars-----------------------*/\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function load() {\r\n maintainRelationship(data)\r\n }\r\n\r\n function maintainRelationship(data) {\r\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(\r\n () => { },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n (error) => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('addAccountSuccessSingle', addAccountSuccessSingle);\r\n\r\naddAccountSuccessSingle.$inject = [\r\n '$state',\r\n];\r\n\r\nfunction addAccountSuccessSingle(\r\n $state,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Global Vars-----------------------*/\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function load() {\r\n $state.go('');\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('addTrack', addTrack);\r\n\r\naddTrack.$inject = [\r\n '$log',\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n '$location',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'profileExperiencesService',\r\n 'ccAddAccountAssetService',\r\n 'getLoggedInUserDetailsService',\r\n 'cookieService',\r\n];\r\n\r\nfunction addTrack(\r\n $log,\r\n $state,\r\n $scope,\r\n $rootScope,\r\n $location,\r\n assetService,\r\n sessionStorageService,\r\n profileExperiencesService,\r\n ccAddAccountAssetService,\r\n getLoggedInUserDetailsService,\r\n cookieService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const _url = null;\r\n const vm = this;\r\n let globalAccountInfo = {};\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.moveStorage = {};\r\n vm.addAccount = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n vm.mainPathStep = '';\r\n $rootScope.mainBtnActivate = false;\r\n $rootScope.btnType = true;\r\n $rootScope.apiValidation = false;\r\n $rootScope.success = '';\r\n $rootScope.addShellButtons = true;\r\n vm.steps = assetService.addAccountSteps;\r\n vm.overideShell = false;\r\n\r\n vm.setModels = function () { };\r\n\r\n function getProfileExperiences() {\r\n let paramObj = {};\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n const email = vm.currentUser.emailId;\r\n const cdpId = vm.currentUser.cdpId ? vm.currentUser.cdpId : '';\r\n paramObj = {\r\n emailId: email,\r\n internalIdentifier: cdpId,\r\n };\r\n\r\n return profileExperiencesService.sitecore.profileExperiences(paramObj).then(\r\n (result) => {\r\n if (result) {\r\n if (result.MessageText === assetService.replyCodes.SUCCESS || result.MessageText === assetService.replyCodes.Success) {\r\n const experiences = [];\r\n for (const experienceEl of result.profileExperiences) {\r\n experiences.push(ccAddAccountAssetService.profileTypes[experienceEl.experienceName].CODE);\r\n }\r\n let saveExperience = result.profileExperiences;\r\n sessionStorageService.set(\r\n ccAddAccountAssetService.storageKeys.getProfileExp, \r\n saveExperience);\r\n sessionStorageService.set(\r\n ccAddAccountAssetService.storageKeys.profileExperiences,\r\n experiences,\r\n );\r\n }\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n let landlordRtoNo = false;\r\n sessionStorageService.delete(\r\n ccAddAccountAssetService.storageKeys.newExperiences,\r\n );\r\n const expType = sessionStorageService.get(\r\n assetService.storageKeys.experienceAccount,\r\n );\r\n const expSubType = sessionStorageService.get(\r\n ccAddAccountAssetService.strings.LANDLORD_RTO,\r\n );\r\n if (expSubType && (expSubType === ccAddAccountAssetService.strings.LANDLORD_RTO_NO)) {\r\n landlordRtoNo = true;\r\n }\r\n if (cookieService.getCookie(assetService.storageKeys.addAccCookieVal)) {\r\n vm.cancelBtnPath = vm.cancelBtnPath + assetService.urlTokens.selectExperience + cookieService.getCookie(assetService.storageKeys.addAccCookieVal);\r\n }\r\n\r\n if (expType && expType === 'LANDLORD') {\r\n vm.overideShell = true;\r\n }\r\n getProfileExperiences().then(\r\n () => {\r\n if (!landlordRtoNo) {\r\n $state.go(assetService.addAccountStates.findAccount);\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n ) \r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n sessionStorageService.set(\r\n assetService.storageKeys.addAccountTrack,\r\n assetService.storageKeys.addAccountTrack,\r\n );\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n \r\n load();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n vm.currentUser = {\r\n emailId: $location.search().emailId,\r\n cdpId: $location.search().cdpId,\r\n };\r\n load();\r\n }\r\n };\r\n\r\n $scope.$on(assetService.events.startStopMove, (data) => {\r\n vm.pathStep = data.path;\r\n vm.btnActivate = data.btn;\r\n });\r\n\r\n $scope.$on(assetService.events.classTrack, (event, data) => {\r\n if (data === 'startTrack.review') {\r\n vm.mainPathStep = 'review';\r\n } else if (data === 2 || (data !== assetService.addAccountStates.accountsTable && vm.track === 2)) {\r\n $rootScope.$broadcast(assetService.events.shellButton, {\r\n direction: 'cancel',\r\n });\r\n vm.mainPathStep = vm.cyclePath[0].path;\r\n vm.stepTrack = 0;\r\n vm.track = 0;\r\n $rootScope.mainBtnActivate = false;\r\n $rootScope.apiValidation = false;\r\n $rootScope.addShellButtons = true;\r\n $state.go(vm.cyclePath[0].path);\r\n } else {\r\n if (vm.stepTrack === 0) {\r\n $rootScope.mainBtnActivate = false;\r\n if (vm.track === 0) {\r\n $state.go(ccAddAccountAssetService.experienceSelector);\r\n }\r\n } else if (vm.stepTrack === 2) {\r\n vm.track = 0;\r\n vm.stepTrack = 0;\r\n $rootScope.mainBtnActivate = false;\r\n $rootScope.apiValidation = false;\r\n $rootScope.addShellButtons = true;\r\n $state.go(data);\r\n }\r\n if (data === assetService.addAccountStates.findAccount && vm.track !== 1) {\r\n $rootScope.mainBtnActivate = false;\r\n $rootScope.$broadcast(assetService.events.shellButton, {\r\n direction: 'previous',\r\n });\r\n }\r\n vm.mainPathStep = data;\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.changeTrackSelected, (event, data) => {\r\n const goTo = vm.cyclePath[data.track];\r\n vm.track = data.track;\r\n vm.stepTrack = data.step;\r\n $state.go(goTo.path);\r\n });\r\n\r\n $scope.$on('verify', (event, data) => {\r\n vm.cyclePath = data;\r\n });\r\n\r\n init();\r\n}\r\n","app.controller('CCaddAccount', CCaddAccount);\r\n\r\nCCaddAccount.$inject = [\r\n '$state',\r\n '$location',\r\n];\r\n\r\nfunction CCaddAccount(\r\n $state,\r\n $location,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Global Vars-----------------------*/\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function load() {\r\n let stateName = $location.search().state;\r\n if (stateName) {\r\n $state.go(stateName);\r\n } else {\r\n $state.go(\"addAccount-experienceSelector\");\r\n }\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('CCAccountSelectorPage', CCAccountSelectorPage);\r\nCCAccountSelectorPage.$inject = [\r\n '$scope',\r\n '$window',\r\n '$timeout',\r\n '$http',\r\n '$filter',\r\n 'assetService',\r\n 'myAccountFactory',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCAccountSelectorPage(\r\n $scope,\r\n $window,\r\n $timeout,\r\n $http,\r\n $filter,\r\n assetService,\r\n myAccountFactory,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n const orderBy = $filter('orderBy');\r\n const negOne = -1;\r\n const thirtyTwo = 32;\r\n vm.accounts = [];\r\n vm.filteredaccounts = [];\r\n vm.isuAccount = false;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n const searchMatch = (haystack, needle) => {\r\n if (!needle) {\r\n return true;\r\n }\r\n return (\r\n haystack\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(needle.toString().toLowerCase()) !== negOne\r\n );\r\n };\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function emptyAccountGatPush() {\r\n let heading = $('#GatError').attr('businessFunction');\r\n let subHead = document.getElementsByClassName('component-header__title')[0];\r\n if (subHead) {\r\n subHead = subHead.innerText;\r\n }\r\n let rc = 'not-set';\r\n let errorMessage = \"empty account selector\";\r\n let cta = \"sign in\"; \r\n attributePush( `workFlow:${'error ' + heading}`,\r\n `headline:${heading}`,\r\n `subheadline:${subHead}`,\r\n `returnCode:${rc}`,\r\n `msgHeader:${errorMessage}`,\r\n `endpoint:${assetService.sitecoreEndpoints.GetLoggedinBPDetailsAndAssociatedAccounts}`,\r\n );\r\n virtualPagePush(heading,heading,subHead,cta,'error',rc);\r\n }\r\n \r\n vm.setAccounts = (accounts) => {\r\n if (accounts && accounts.length == 0) {\r\n emptyAccountGatPush();\r\n }\r\n vm.accounts = accounts;\r\n vm.preSort = accounts;\r\n if (this.accounts && this.accounts[0]) {\r\n vm.accounts[0].PrimaryAccount = true;\r\n }\r\n\r\n vm.sortBy('ServiceAddress');\r\n if (accounts === undefined) {\r\n vm.errorText = 'AN ERROR HAS OCCURED';\r\n } else {\r\n vm.errorText = 'There are no accounts matching your search. We recommend searching by typing an account number, nickname or address.';\r\n }\r\n };\r\n\r\n vm.isuAccount = (isuAccount) => {\r\n vm.isuAccount = isuAccount;\r\n vm.search();\r\n if (isuAccount) {\r\n vm.displayNumber = vm.filteredaccounts.length;\r\n vm.currentShowMsg = vm.showLessMsg;\r\n }\r\n };\r\n\r\n vm.setRequestVerificationToken = (vt) => {\r\n vm.verificationToken = vt;\r\n };\r\n\r\n vm.toggleMoreInfo = (toggleButton) => {\r\n toggleButton.preventDefault();\r\n const currentToggleButton = angular.element(toggleButton.currentTarget);\r\n currentToggleButton.attr('aria-pressed', 'true');\r\n\r\n if (vm.currentShowMsg === vm.showLessMsg) {\r\n vm.showIcon = 'caret-arrow-down';\r\n vm.currentShowMsg = vm.showAllMsg;\r\n currentToggleButton.attr('aria-expanded', 'false');\r\n currentToggleButton.attr('aria-pressed', 'false');\r\n vm.displayNumber = 5;\r\n } else {\r\n vm.showIcon = 'caret-arrow-up';\r\n vm.currentShowMsg = vm.showLessMsg;\r\n currentToggleButton.attr('aria-expanded', 'true');\r\n vm.displayNumber = vm.filteredaccounts.length;\r\n }\r\n };\r\n\r\n vm.setShowLabels = function (more, less) {\r\n vm.showAllMsg = more;\r\n vm.showLessMsg = less;\r\n\r\n if (vm.isuAccount) {\r\n vm.currentShowMsg = vm.showLessMsg;\r\n } else {\r\n vm.currentShowMsg = vm.showAllMsg;\r\n }\r\n\r\n vm.showIcon = 'caret-arrow-down';\r\n };\r\n\r\n vm.toggleMoreInfoOnKeyUp = (toggleButton) => {\r\n toggleButton.preventDefault();\r\n if (toggleButton.keyCode === thirtyTwo) {\r\n vm.toggleMoreInfo(toggleButton);\r\n }\r\n };\r\n\r\n // init the filtered accounts\r\n vm.search = () => {\r\n vm.filteredaccounts = $filter('filter')(vm.accounts, (account) => {\r\n let myvar = false;\r\n Object.keys(account).forEach((attr) => {\r\n if (account[attr]) {\r\n if (searchMatch(account[attr], vm.query)) myvar = true;\r\n }\r\n });\r\n return myvar;\r\n });\r\n vm.displayNumber = vm.filteredaccounts.length > 10 ? 5 : vm.filteredaccounts.length;\r\n if (vm.displayNumber >= 5) {\r\n vm.currentShowMsg = vm.showAllMsg;\r\n } else {\r\n vm.currentShowMsg = vm.showLessMsg;\r\n }\r\n };\r\n\r\n // init the filtered accounts\r\n vm.goToPrevious = () => {\r\n window.history.back();\r\n };\r\n\r\n vm.viewAccount = function (account) {\r\n $window.location.href = '/my-account/dashboard';\r\n };\r\n\r\n vm.sortBy = (propertyName) => {\r\n vm.propertyName = propertyName;\r\n\r\n if (propertyName === 'DueDate') {\r\n vm.accounts = orderBy(vm.accounts, vm.propertyName, vm.reverse);\r\n }\r\n\r\n if (propertyName === 'Amount') {\r\n function compare(a, b) {\r\n // Use toUpperCase() to ignore character casing\r\n const amountA = Number(a.Amount);\r\n const amountB = Number(b.Amount);\r\n\r\n let comparison = 0;\r\n if (amountA > amountB) {\r\n comparison = 1;\r\n } else if (amountA < amountB) {\r\n comparison = -1;\r\n }\r\n if (!vm.reverse) {\r\n return comparison;\r\n }\r\n return comparison * -1;\r\n }\r\n vm.accounts.sort(compare);\r\n }\r\n\r\n if (propertyName === 'ServiceAddress') {\r\n vm.accounts = vm.preSort;\r\n }\r\n\r\n vm.search();\r\n vm.reverse = !vm.reverse;\r\n };\r\n\r\n /* --------------Event handlers-----------------------*/\r\n\r\n const searchAccount = document.getElementById('searchAccount');\r\n const closeSearch = document.getElementsByClassName('de-form-text__close');\r\n\r\n searchAccount.addEventListener('focus', (event) => {\r\n event.target.classList.add('de-active');\r\n });\r\n\r\n closeSearch[0].addEventListener('click', (event) => {\r\n searchAccount.value = '';\r\n vm.query = '';\r\n searchAccount.focus();\r\n searchAccount.blur();\r\n vm.search();\r\n vm.currentShowMsg = vm.showAllMsg;\r\n vm.showIcon = 'caret-arrow-down';\r\n });\r\n\r\n searchAccount.addEventListener('blur', (event) => {\r\n event.target.classList.remove('de-active');\r\n });\r\n\r\n document.addEventListener('focus', handleInputEvent, true);\r\n document.addEventListener('blur', handleInputEvent, true);\r\n\r\n function handleInputEvent(event) {\r\n const parent = event.target.parentElement;\r\n const input = parent ? parent.querySelector('.de-form-text__input') : '';\r\n\r\n if (input) {\r\n parent.classList.remove('de-form-text--has-error');\r\n\r\n event.type === 'focus' || input.value\r\n ? parent.classList.add('de-form-text--label-above')\r\n : parent.classList.remove('de-form-text--label-above');\r\n\r\n if (event.type === 'blur' && input.value === '' && input.hasAttribute('required')) {\r\n parent.classList.add('de-form-text--has-error');\r\n }\r\n }\r\n }\r\n}\r\n","app.controller('Balance', Balance);\r\n\r\nBalance.$inject = [\r\n '$location',\r\n '$rootScope',\r\n '$sce',\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'commonService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'sessionStorageService',\r\n 'getLoggedInUserDetailsService',\r\n 'ccGetUserAccountsService',\r\n 'modalService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n '$filter',\r\n 'responseNotificationsService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction Balance(\r\n $location,\r\n $rootScope,\r\n $sce,\r\n $scope,\r\n $state,\r\n assetService,\r\n commonService,\r\n getAccountBalanceForRegularAccountService,\r\n sessionStorageService,\r\n getLoggedInUserDetailsService,\r\n ccGetUserAccountsService,\r\n modalService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n $filter,\r\n responseNotificationsService,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n $scope.formatTotalAmount = formatTotalAmount;\r\n $scope.accountsAmount = 0;\r\n $scope.selectedAccountsAmount = 0;\r\n let _globalSelectedAcc;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.accountStatusByCA = [];\r\n vm.balanceData = {\r\n bills: [],\r\n cashBills: [],\r\n };\r\n vm.balanceForRegularAccount = '';\r\n vm.balanceSpinner = true;\r\n vm.balanceStorage = {};\r\n vm.billOptions = [];\r\n vm.billsQuantity = 0;\r\n vm.buttonContinue = false;\r\n vm.checkedBills = [];\r\n vm.checkUp = false;\r\n vm.eBillEnrollmentByCA = {};\r\n vm.autoPayEligibleByCA = {};\r\n vm.invoiceListByCA = {};\r\n vm.pastDue = [];\r\n vm.paymentDue = [];\r\n vm.reviewPay = false;\r\n vm.selectedAccounts = [];\r\n vm.selectedDueDates = [];\r\n vm.scheduled = [];\r\n vm.totalAmount = '0.00';\r\n vm.msgPriority = false;\r\n vm.msgCount = 0;\r\n vm.isCorrectSelection = true;\r\n vm.selectAllStatus = true;\r\n vm.atLeastOneSelected = false;\r\n vm.autoPayExtendedDate = undefined;\r\n vm.message = '';\r\n vm.roleBase = {};\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n $rootScope.fromBillsPage = false;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.balanceLoading = balanceLoading;\r\n vm.beautifyStatus = beautifyStatus;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.init = init;\r\n vm.nextStep = nextStep;\r\n vm.onCancel = onCancel;\r\n vm.previous = previous;\r\n vm.sumAll = sumAll;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function card(\r\n eBillEnrolled,\r\n autoPayEligible,\r\n accountNickname,\r\n accountNumber,\r\n address,\r\n dueDate,\r\n message,\r\n messagePriority,\r\n cashOnly,\r\n payNowStatus,\r\n amount,\r\n ) {\r\n this.eBillEnrolled = eBillEnrolled;\r\n this.autoPayEligible = autoPayEligible;\r\n this.accountNickname = accountNickname;\r\n this.accountNumber = accountNumber;\r\n this.address = address;\r\n this.dueDate = dueDate;\r\n this.message = message;\r\n this.messagePriority = messagePriority;\r\n this.cashOnly = cashOnly;\r\n this.payNowStatus = payNowStatus;\r\n this.amount = amount;\r\n }\r\n\r\n $scope.$on(assetService.events.loadBills, () => {\r\n vm.listOfAccounts = sessionStorageService.get(\r\n assetService.storageKeys.accountLength,\r\n );\r\n vm.bpData = sessionStorageService.set(\r\n assetService.storageKeys.bpDataPayBill,\r\n );\r\n setModels();\r\n });\r\n\r\n function balanceLoading(value) {\r\n vm.balanceSpinner = value;\r\n }\r\n\r\n function beautifyStatus(index, value) {\r\n vm.pastDue[index] =\r\n value.toLowerCase() === assetService.balanceStatuses.PAST_DUE;\r\n vm.paymentDue[index] =\r\n value.toLowerCase() === assetService.balanceStatuses.PAYMENT_DUE;\r\n vm.scheduled[index] =\r\n value.toLowerCase() === assetService.balanceStatuses.SCHEDULED;\r\n\r\n return value;\r\n }\r\n\r\n function sumAll(value) {\r\n vm.totalAmount = 0;\r\n vm.billsQuantity = 0;\r\n vm.selectedAccounts = [];\r\n vm.balanceData.bills.forEach((bill, index) => {\r\n if (value === assetService.strings.ALL) {\r\n if (vm.checkedBills.All === true) {\r\n vm.checkedBills[index] = true;\r\n vm.selectedAccounts.push(bill); // For SessionStorage\r\n } else if (vm.checkedBills.All === false) {\r\n vm.checkedBills[index] = false;\r\n }\r\n } else if (vm.checkedBills[index] === true) {\r\n vm.selectedAccounts.push(bill);\r\n if (\r\n vm.billsQuantity + 1 === vm.balanceData.bills.length &&\r\n vm.selectAllStatus === true\r\n ) {\r\n vm.checkedBills.All = true;\r\n } else {\r\n vm.checkedBills.All = false;\r\n }\r\n }\r\n\r\n if (vm.checkedBills[index] === true) {\r\n vm.billsQuantity += 1;\r\n if (bill.amount > 0) {\r\n vm.totalAmount += Number(bill.amount);\r\n }\r\n }\r\n });\r\n\r\n checkBoxStatusChange();\r\n /*_.forEach(vm.balanceData.bills, (bill) => {\r\n if (value === assetService.strings.ALL && bill.messagePriority === 2000) {\r\n vm.msgPriority = true;\r\n }\r\n });*/\r\n\r\n if (vm.billsQuantity !== 0 && vm.isCorrectSelection === true) {\r\n vm.buttonContinue = true;\r\n } else {\r\n vm.buttonContinue = false;\r\n }\r\n $scope.selectedAccountsAmount = vm.billsQuantity;\r\n vm.totalAmount = vm.totalAmount.toFixed(2);\r\n }\r\n\r\n function checkBoxStatusChange() {\r\n vm.atLeastOneSelected = !!_.find(vm.checkedBills, check => check === true);\r\n const atLeastOneValid = !!_.find(\r\n vm.balanceData.bills,\r\n (bill, index) =>\r\n vm.checkedBills[index] && bill.payNowStatus !== 'IfCashOnly',\r\n );\r\n vm.isCorrectSelection = vm.checkedBills.All || atLeastOneValid;\r\n vm.msgCount = 0;\r\n _.forEach(vm.balanceData.bills, (bill, index) => {\r\n if (\r\n vm.checkedBills[index] &&\r\n vm.balanceData.bills[index].messagePriority === 1000\r\n ) {\r\n vm.msgCount += 1;\r\n }\r\n });\r\n }\r\n\r\n function storeAndGo(state) {\r\n // emit Variable, emit value and state\r\n // Add data to Storage before $emit\r\n vm.balanceStorage.totalAmount = vm.totalAmount;\r\n vm.balanceStorage.billsQuantity = vm.billsQuantity;\r\n vm.balanceStorage.selectedAccounts = vm.selectedAccounts;\r\n vm.balanceStorage.accountStatusByCA = vm.accountStatusByCA;\r\n vm.balanceStorage.currentUser = vm.currentUser;\r\n // vm.balanceStorage.newTotalAmount = undefined;\r\n vm.balanceStorage.newTotalAmount = parseFloat(vm.totalAmount);\r\n if (vm.listOfAccounts) {\r\n vm.balanceStorage.globalSelectedAccount = {\r\n accountNumber: vm.listOfAccounts[0].accountNum,\r\n businessPartner: vm.listOfAccounts[0].primaryBp,\r\n payerFirstName: vm.listOfAccounts[0].firstName,\r\n payerLastName: vm.listOfAccounts[0].lastName,\r\n };\r\n }\r\n\r\n if (vm.reviewPay === true) {\r\n // Run just if came back and edit the selected bills\r\n vm.balanceStorage.reviewPay = true;\r\n vm.balanceStorage.totalNoWarmth = vm.totalAmount;\r\n // vm.balanceStorage.newAmounts = undefined;\r\n vm.balanceStorage.newTotalAmount = parseFloat(vm.totalAmount);\r\n if (vm.balanceStorage.shareWarmth !== undefined) {\r\n vm.balanceStorage.newTotalAmount =\r\n parseFloat(vm.totalAmount) + vm.balanceStorage.shareWarmth;\r\n }\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n\r\n $state.go(state);\r\n }\r\n\r\n function nextStep() {\r\n if (vm.reviewPay) {\r\n storeAndGo(assetService.balanceRouteStates.FORM_TO_PAY);\r\n } else {\r\n storeAndGo(assetService.balanceRouteStates.REVIEW_PAY);\r\n }\r\n }\r\n\r\n function onCancel(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const redirectionLink = event.currentTarget.attributes.href.value;\r\n window.location.href = redirectionLink;\r\n }\r\n\r\n function previous() {\r\n $rootScope.fromBillsPage = true;\r\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\r\n }\r\n\r\n function deleteAllSelected() {\r\n vm.buttonContinue = false;\r\n vm.checkedBills = [];\r\n vm.totalAmount = '0.00';\r\n vm.billsQuantity = 0;\r\n vm.reviewPay = false;\r\n vm.balanceStorage = {};\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n sessionStorageService.set('filterAmountLength', []);\r\n sessionStorageService.set('savedOtherAmount', false);\r\n sessionStorageService.delete('lengthError');\r\n amount = Number.parseFloat(amount) || 0;\r\n const formattedAmount = String(amount).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n let lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '';\r\n } else if (formattedAmount[0].indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n }\r\n return $sce.trustAsHtml(\r\n `$${lessThanZero}${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function setModels() {\r\n const promises = [];\r\n if (vm.listOfAccounts.length <= vm.accountsCount) {\r\n _globalSelectedAcc = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n const eligibilityStatusData = sessionStorageService.get(\r\n assetService.storageKeys.eligibilityStatusData,\r\n );\r\n const skipEligibilityStatusApiCall =\r\n vm.listOfAccounts.length === 1 && eligibilityStatusData;\r\n promises.push(\r\n getAccountBalanceForRegularAccount({\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n _globalSelectedAcc.accountSelected.accountNum,\r\n zipCode: _globalSelectedAcc.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n );\r\n if (!skipEligibilityStatusApiCall) {\r\n if (eligibilityStatusData)\r\n sessionStorageService.delete(\r\n assetService.storageKeys.eligibilityStatusData,\r\n );\r\n _.forEach(vm.listOfAccounts, contractAccount => {\r\n promises.push(\r\n getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: contractAccount.accountNum,\r\n }),\r\n );\r\n });\r\n }\r\n } else {\r\n _globalSelectedAcc = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n promises.push(\r\n getAccountBalanceForRegularAccount({\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n _globalSelectedAcc.accountSelected.accountNum,\r\n zipCode: _globalSelectedAcc.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n );\r\n promises.push(\r\n getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: _globalSelectedAcc.accountSelected.accountNum,\r\n }),\r\n );\r\n }\r\n\r\n commonService.executePromises(promises).then(() => {\r\n // merge the data from GetInvoiceList & getAccountBalance by contractAccountNumber\r\n // should have all the data you need for the display\r\n if (vm.listOfAccounts.length <= vm.accountsCount) {\r\n _.forEach(vm.listOfAccounts, account => {\r\n const accountStatus = _.filter(\r\n vm.accountStatusByCA,\r\n accountStatus =>\r\n accountStatus.contractAccountNumber == account.accountNum,\r\n );\r\n const eBillEnrolled =\r\n vm.eBillEnrollmentByCA[account.accountNum] || {};\r\n const autoPayEligible = vm.autoPayEligibleByCA[account.accountNum];\r\n vm.payNowStatus = 'Normal';\r\n\r\n if (accountStatus[0].noCardsInd === 'T') {\r\n vm.payNowStatus = 'IfNoCard';\r\n }\r\n if (accountStatus[0].noCheckDraftInd === 'T') {\r\n vm.payNowStatus = 'IfNoChecks';\r\n }\r\n if (\r\n accountStatus[0].accountStatus === 'A' ||\r\n (accountStatus[0].accountStatus === 'I' &&\r\n accountStatus[0].totalDueDlrs > 0)\r\n ) {\r\n let invoiceDate;\r\n if (accountStatus[0].currentDueDate) {\r\n invoiceDate = String(accountStatus[0].currentDueDate);\r\n } else if (accountStatus[0].priorDueDate) {\r\n invoiceDate = String(accountStatus[0].priorDueDate);\r\n }\r\n const dataRow = new card(\r\n eBillEnrolled,\r\n autoPayEligible,\r\n account.nickname,\r\n account.accountNum,\r\n account.address,\r\n moment(invoiceDate).format('MM/DD/YYYY'),\r\n accountStatus[0].messageList[0].message,\r\n accountStatus[0].messageList[0].messagePriority,\r\n accountStatus[0].cashOnly === 'T',\r\n vm.payNowStatus,\r\n accountStatus[0].totalDueDlrs || 0,\r\n );\r\n if (!dataRow.cashOnly && vm.payNowStatus !== 'IfNoChecks') {\r\n vm.balanceData.bills.push(dataRow);\r\n } else {\r\n vm.balanceData.cashBills.push(dataRow);\r\n }\r\n }\r\n });\r\n vm.balanceData.bills.sort(\r\n (a, b) => a.messagePriority - b.messagePriority,\r\n );\r\n vm.balanceData.cashBills.sort(\r\n (a, b) => a.messagePriority - b.messagePriority,\r\n );\r\n } else {\r\n _globalSelectedAcc = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const accountStatus = _.filter(\r\n vm.accountStatusByCA,\r\n accountStatus =>\r\n accountStatus.contractAccountNumber ==\r\n _globalSelectedAcc.accountSelected.accountNum,\r\n );\r\n const eBillEnrolled =\r\n vm.eBillEnrollmentByCA[\r\n _globalSelectedAcc.accountSelected.accountNum\r\n ] || {};\r\n const autoPayEligible =\r\n vm.autoPayEligibleByCA[_globalSelectedAcc.accountSelected.accountNum];\r\n vm.payNowStatus = 'Normal';\r\n if (accountStatus[0].cashOnly === 'T') {\r\n vm.payNowStatus = 'IfCashOnly';\r\n vm.selectAllStatus = false;\r\n } else {\r\n if (accountStatus[0].noCardsInd === 'T') {\r\n vm.payNowStatus = 'IfNoCard';\r\n }\r\n if (accountStatus[0].noCheckDraftInd === 'T') {\r\n vm.payNowStatus = 'IfNoChecks';\r\n }\r\n }\r\n if (\r\n accountStatus[0].accountStatus === 'A' ||\r\n (accountStatus[0].accountStatus === 'I' &&\r\n accountStatus[0].totalDueDlrs > 0)\r\n ) {\r\n let invoiceDate;\r\n if (accountStatus[0].currentDueDate) {\r\n invoiceDate = String(accountStatus[0].currentDueDate);\r\n } else if (accountStatus[0].priorDueDate) {\r\n invoiceDate = String(accountStatus[0].priorDueDate);\r\n }\r\n const dataRow = new card(\r\n eBillEnrolled,\r\n autoPayEligible,\r\n _globalSelectedAcc.accountSelected.nickname,\r\n _globalSelectedAcc.accountSelected.accountNum,\r\n _globalSelectedAcc.accountSelected.address,\r\n moment(invoiceDate).format('MM/DD/YYYY'),\r\n accountStatus[0].messageList[0].message,\r\n accountStatus[0].messageList[0].messagePriority,\r\n accountStatus[0].cashOnly === 'T',\r\n vm.payNowStatus,\r\n accountStatus[0].totalDueDlrs || 0,\r\n );\r\n\r\n vm.balanceData.bills.push(dataRow);\r\n }\r\n }\r\n\r\n balanceLoading(false);\r\n\r\n $scope.accountsAmount = vm.listOfAccounts.length;\r\n if (\r\n vm.listOfAccounts.length > 1 &&\r\n vm.listOfAccounts.length <= vm.accountsCount\r\n ) {\r\n _globalSelectedAcc = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.balanceData.bills.forEach((element, index) => {\r\n if (\r\n element.accountNumber ===\r\n _globalSelectedAcc.accountSelected.accountNum\r\n ) {\r\n vm.checkedBills[index] = true;\r\n }\r\n });\r\n sumAll(_globalSelectedAcc.accountSelected.id);\r\n broadcastService.stopFormToPaySpinner(false);\r\n $state.go(assetService.balanceRouteStates.BILLS);\r\n } else {\r\n vm.checkedBills.All = true;\r\n sumAll(assetService.strings.ALL);\r\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\r\n }\r\n });\r\n\r\n function getAccountBalanceForRegularAccount(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n if (result.getAccountAndBillingInfoResList.length > 0) {\r\n const contractAccount = data.accountList[0].contractAccountNumber;\r\n vm.accountStatusByCA = result.getAccountAndBillingInfoResList;\r\n if (skipEligibilityStatusApiCall) {\r\n parseEnrollmentEligibilityStatusResult(eligibilityStatusData, {\r\n contractAccountId: contractAccount.accountNum,\r\n });\r\n }\r\n }\r\n },\r\n // error => {\r\n // responseNotificationsService.errorResponse({\r\n // vehicle: assetService.strings.TOAST,\r\n // message: error && error.message ? error.message : '',\r\n // pageTitle: assetService.strings.PAY_MY_BILL,\r\n // });\r\n // },\r\n );\r\n }\r\n\r\n function getAccountEnrollmentEligibilityStatus(data) {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(data)\r\n .then(\r\n result => {\r\n parseEnrollmentEligibilityStatusResult(\r\n result.d.Inp_Prog.results[0],\r\n data,\r\n );\r\n },\r\n error => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n }\r\n\r\n function parseEnrollmentEligibilityStatusResult(\r\n eligibilityStatusData,\r\n data,\r\n ) {\r\n vm.programs = [];\r\n vm.programs = _.filter(\r\n _.map(eligibilityStatusData.Prog_Res.results, item => ({\r\n name: assetService.billingAndPaymentPrograms[item.ProgName],\r\n status: item.EligibilityStatus.toUpperCase(),\r\n code: item.ProgName.toUpperCase(),\r\n })),\r\n item => item.status !== vm.ineligible && item.code == 'ELBILL',\r\n );\r\n if (data.contractAccountId === eligibilityStatusData.Account) {\r\n vm.autoPayEligibleByCA[data.contractAccountId] = false;\r\n _.forEach(eligibilityStatusData.Prog_Res.results, item => {\r\n if (\r\n item.EligibilityStatus === 'Enrolled' &&\r\n item.ProgName === 'DIRDEB'\r\n ) {\r\n vm.autoPayEligibleByCA[data.contractAccountId] = true;\r\n vm.autoPayExtendedDate = moment(item.EnrolledDateStr).format(\r\n 'MM/DD/YYYY',\r\n );\r\n }\r\n });\r\n }\r\n vm.eBillEnrollmentByCA[data.contractAccountId] = vm.programs.length > 0;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.orderBy = 'messagePriority';\r\n vm.sortAsc = true;\r\n if ($location.search().paynow) {\r\n // if the user clicked on Pay Now button from dashboard\r\n const accountDataSelected = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.payNowData,\r\n );\r\n\r\n vm.totalAmount = accountDataSelected.totalAmount;\r\n vm.billsQuantity = accountDataSelected.billsQuantity;\r\n vm.selectedAccounts = accountDataSelected.selectedAccounts;\r\n\r\n storeAndGo(assetService.balanceRouteStates.HOW_TO_PAY);\r\n } else {\r\n let data = {};\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n businessPartnerId: $location.search().businessPartnerId, // Get Primary Bp\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n } else {\r\n data = {\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n };\r\n }\r\n ccGetUserAccountsService.getUserAccounts(data).then(results => {\r\n if (results.accounts.length > 0) {\r\n const unqAccounts = _.uniq(\r\n results.accounts,\r\n account => account.accountNum,\r\n );\r\n const accounts = _.filter(\r\n unqAccounts,\r\n account =>\r\n account.experience !== assetService.strings.MASS_MARKET &&\r\n !account.prepaid &&\r\n account.status !== 'Closed',\r\n );\r\n vm.listOfAccounts = accounts;\r\n vm.bpData = results.bpData;\r\n\r\n if (vm.listOfAccounts.length > 1 && vm.listOfAccounts.length <= 20) {\r\n if (\r\n sessionStorageService.get(\r\n assetService.storageKeys.eligibilityStatusData,\r\n )\r\n )\r\n sessionStorageService.delete(\r\n assetService.storageKeys.eligibilityStatusData,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountLength,\r\n vm.listOfAccounts,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.bpDataPayBill,\r\n vm.bpData,\r\n );\r\n balanceLoading(false);\r\n $state.go(assetService.balanceRouteStates.HOW_TO_PAY);\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountLength,\r\n vm.listOfAccounts,\r\n );\r\n setModels();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n $scope.$on(assetService.balanceEvents.EDIT_BILLS, () => {\r\n vm.reviewPay = true;\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n });\r\n\r\n $scope.$on(assetService.strings.CANCELLING, () => {\r\n deleteAllSelected();\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n if (\r\n window.location.pathname === '/my-account/pay-my-bill' &&\r\n vm.roleBase.viewerRole\r\n ) {\r\n window.location.href = '/my-account/dashboard';\r\n }\r\n vm.accountsCount = 20;\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('SpeedPayIframeModal', SpeedPayIframeModal);\r\nSpeedPayIframeModal.$inject = [\r\n '$modalInstance',\r\n 'speedpayUrl',\r\n];\r\n\r\nfunction SpeedPayIframeModal(\r\n $modalInstance,\r\n speedpayUrl,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n \r\n /* --------------Global Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n vm.url = speedpayUrl;\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'BillingAndPaymentProgramsController',\r\n BillingAndPaymentProgramsController,\r\n);\r\nBillingAndPaymentProgramsController.$inject = [\r\n 'assetService',\r\n 'commonService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getFixedBillDetailsService',\r\n 'checkEligibilityForPrepaidService',\r\n 'getBudgetBillingHistoryService',\r\n 'sessionStorageService',\r\n 'prepaidService',\r\n 'getInvoiceListService',\r\n 'getLoggedInUserDetailsService',\r\n '$rootScope',\r\n '$scope',\r\n 'cookieService',\r\n '$window',\r\n 'commongaTaggingService',\r\n '$location',\r\n 'componentStateHandler',\r\n 'getPaymentHistoryService',\r\n 'accountSearchService',\r\n];\r\n\r\nfunction BillingAndPaymentProgramsController(\r\n assetService,\r\n commonService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n getAccountBalanceForRegularAccountService,\r\n getFixedBillDetailsService,\r\n checkEligibilityForPrepaidService,\r\n getBudgetBillingHistoryService,\r\n sessionStorageService,\r\n prepaidService,\r\n getInvoiceListService,\r\n getLoggedInUserDetailsService,\r\n $rootScope,\r\n $scope,\r\n cookieService,\r\n $window,\r\n commongaTaggingService,\r\n $location,\r\n componentStateHandler,\r\n getPaymentHistoryService,\r\n accountSearchService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _globalAccountInfo = null;\r\n let data = {};\r\n let _disable = false;\r\n let _status = null;\r\n let _newProgram = {};\r\n let _prepaidData = {};\r\n const _prepaid = {\r\n name: prepaidService.strings.NAME,\r\n code: prepaidService.strings.CODE,\r\n };\r\n let _startedFromWatcher = false;\r\n let _startedFromScope = false;\r\n const _elbill = assetService.strings.ELBILL;\r\n const _fixbil = assetService.strings.FIXEDBILL;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n vm.fixedBillAmount = 0;\r\n vm.renewalDate = null;\r\n vm.isBillGenerated = false;\r\n vm.PB_BigPadding = true;\r\n vm.PB_Description = assetService.strings.PAPERLESS_BILLING.DESCRIPTION;\r\n vm.PB_LinkText = undefined;\r\n vm.PB_ClickEnroll = undefined;\r\n vm.PB_ToggleComponent = false;\r\n vm.PB_ManageButton = assetService.strings.MANAGE;\r\n vm.loadingSpinner = true;\r\n vm.dataTable = [];\r\n vm.programs = [];\r\n vm.enrolled = 'ENROLLED';\r\n vm.eligible = 'ELIGIBLE';\r\n vm.ineligible = 'INELIGIBLE';\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.numberOfMonths = '12';\r\n vm.recalculationDate = '';\r\n vm.billingAmount = '';\r\n vm.currentUser = {}; // Get RequestedBy Value\r\n vm.AUTPAY = assetService.billingAndPaymentProgramsCodes.AUTPAY;\r\n vm.DIRDEB = assetService.billingAndPaymentProgramsCodes.DIRDEB;\r\n vm.ineligiblePaperless = false;\r\n vm.enrolledPYODD = false;\r\n vm.enrolledPYDDDateChange = false;\r\n vm.orgBP = '';\r\n vm.orgName = '';\r\n vm.ShowBudBil = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.storageDeEnrollProgram =\r\n assetService.storageKeys.Billing_And_Paiment_Programs.deEnrollProgram;\r\n vm.isEnrolledInBudgetBilling = isEnrolledInBudgetBilling;\r\n vm.goToPage = goToPage;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.accountSearch = accountSearch;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // if (_startedFromScope && !vm.showFailedState) {\r\n // _startedFromWatcher = true;\r\n // vm.loadingSpinner = true;\r\n // load();\r\n // }\r\n vm.loadingSpinner = true;\r\n sessionStorageService.delete(assetService.storageKeys.organizationBP);\r\n init();\r\n });\r\n\r\n $scope.$on(\r\n assetService.events.executeAnalyticsOnParent,\r\n (event, defaults) => {\r\n const { analytics } = $scope;\r\n if (defaults && analytics && analytics.paperlessBilling) {\r\n const arrayElements = analytics.paperlessBilling.concat(defaults);\r\n attributePush.apply(this, arrayElements);\r\n }\r\n },\r\n );\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function setModels() {\r\n vm.programs = _.filter(\r\n vm.programs,\r\n program => program.status !== vm.ineligible,\r\n );\r\n vm.programs.forEach(program => {\r\n // eslint-disable-next-line no-param-reassign\r\n program.display = true;\r\n if (program.code === 'FIXBIL' && vm.viewerRole) {\r\n // eslint-disable-next-line no-param-reassign\r\n program.display = false;\r\n }\r\n if (program.code === 'PREPAID' && vm.viewerRole) {\r\n // eslint-disable-next-line no-param-reassign\r\n program.display = false;\r\n }\r\n if (\r\n (program.status === vm.eligible || program.status === vm.enrolled) &&\r\n program.code === 'ELBILL'\r\n ) {\r\n // eslint-disable-next-line no-param-reassign\r\n program.display = false;\r\n }\r\n });\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n $rootScope.$on(vm.storageDeEnrollProgram, () => {});\r\n\r\n function getRole() {\r\n switch (_globalAccountInfo.accountSelected.role) {\r\n case assetService.roles.owner:\r\n vm.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n\r\n function accountSearch() {\r\n return accountSearchService.sitecore\r\n .accountSearch({\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n dataSource: assetService.strings.ISU,\r\n })\r\n .then(\r\n results => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\r\n vm.orgName =\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\r\n if (vm.orgName) {\r\n vm.orgBP =\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\r\n sessionStorageService.set(\r\n assetService.storageKeys.organizationBP,\r\n vm.orgBP,\r\n );\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function accountFixedBillDetails(param) {\r\n return getFixedBillDetailsService.sitecore\r\n .getFixedBillDetails({ contractAccountId: param.contractAccountId })\r\n .then(\r\n result => {\r\n const fixedBillDetails = result.d.ReqCA.results[0];\r\n if (fixedBillDetails.FixedBillAmount) {\r\n vm.fixedBillAmount = parseFloat(fixedBillDetails.FixedBillAmount);\r\n } else {\r\n vm.data.fixedBill = 0.0;\r\n }\r\n vm.renewalDate = fixedBillDetails.RenewalDate\r\n ? moment(fixedBillDetails.RenewalDate).format('MMMM YYYY')\r\n : null;\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n contractAccountId: $location.search().contractAccountId,\r\n };\r\n } else {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n let moveInDate = new Date(\r\n _globalAccountInfo.accountSelected.ActiveDate,\r\n ).getTime();\r\n let currentDate = new Date().getTime();\r\n vm.ShowBudBil = moveInDate <= currentDate;\r\n const requestedBy = $rootScope.currentUserEmailId; // Get RequesteBy value\r\n if (_globalAccountInfo.accountSelected.accountNum) {\r\n const contractAccountId = _globalAccountInfo.accountSelected.accountNum;\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId,\r\n contractAccountId,\r\n );\r\n\r\n const businessPartnerId = _globalAccountInfo.accountSelected.bpNumber;\r\n sessionStorageService.set(\r\n assetService.storageKeys.businessPartnerId,\r\n businessPartnerId,\r\n );\r\n data = {\r\n contractAccountId,\r\n requestedBy,\r\n };\r\n }\r\n getRole();\r\n }\r\n\r\n accountSearch();\r\n\r\n const zipCode = assetService.apiConfig.useLocalHost\r\n ? $location.search().zipCode\r\n : _globalAccountInfo.accountSelected.zipCode;\r\n\r\n const promises = [];\r\n const dataObj = {\r\n contractAccountId: data.contractAccountId,\r\n businessPartner: vm.businessPartnerId,\r\n invoiceId: null,\r\n EmailID: $rootScope.currentUserEmailId,\r\n userId: $rootScope.currentUserCdpId,\r\n requestedBy: $rootScope.currentUserEmailId, //Get RequestedBy Value\r\n };\r\n promises.push(\r\n getAccountBalance({\r\n accountList: [\r\n { contractAccountNumber: data.contractAccountId, zipCode },\r\n ],\r\n }),\r\n );\r\n promises.push(getAccountEnrollmentEligibilityStatus(data));\r\n promises.push(getPayments(dataObj));\r\n commonService.executePromises(promises).then(() => {\r\n const qPromises = [];\r\n if (vm.enrolledInFixedBill) {\r\n qPromises.push(accountFixedBillDetails(data));\r\n }\r\n\r\n const premiseId = assetService.apiConfig.useLocalHost\r\n ? $location.search().premiseId\r\n : _globalAccountInfo.accountSelected.premiseID;\r\n const businessPartnerId = assetService.apiConfig.useLocalHost\r\n ? $location.search().businessPartnerId\r\n : _globalAccountInfo.accountSelected.bpNumber;\r\n if (premiseId) {\r\n qPromises.push(\r\n checkEligibilityForPrepaid({\r\n premiseNumber: premiseId,\r\n businessPartner: businessPartnerId,\r\n }),\r\n );\r\n commonService.executePromises(promises).then(\r\n () => {\r\n setModels();\r\n },\r\n () => {},\r\n );\r\n } else {\r\n commonService.executePromises(promises).then(\r\n () => {\r\n _newProgram = {\r\n name: _prepaid.name,\r\n code: _prepaid.code,\r\n status: vm.ineligible,\r\n disable: true,\r\n };\r\n _prepaidData = {\r\n status: vm.ineligible,\r\n };\r\n vm.programs.push(_newProgram);\r\n setModels();\r\n },\r\n () => {},\r\n );\r\n }\r\n });\r\n\r\n function getAccountBalance(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n console.log(result.getAccountAndBillingInfoResList[0].cashOnly);\r\n vm.paynowStatus = !(\r\n result.getAccountAndBillingInfoResList[0].cashOnly === 'T' ||\r\n result.getAccountAndBillingInfoResList[0].noCheckDraftInd === 'T'\r\n );\r\n },\r\n error => componentStateHandler.failedState(vm),\r\n );\r\n }\r\n\r\n function getPayments(dataObj) {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(\r\n result => {\r\n let paymentsData = result.d.Req_Inp.results[0].Inp_Res.results;\r\n const scheduledPayItem = _.filter(paymentsData, item => {\r\n if (\r\n item.Payment_Status == 'SCHEDULED' &&\r\n item.Payment_Method == 'ACH'\r\n ) {\r\n const scheduledDate = moment(item.Payment_Due_Date)\r\n .utc()\r\n .format('MM/DD/YYYY');\r\n vm.isBillGenerated =\r\n new Date(scheduledDate).getTime() > new Date().getTime();\r\n vm.nextDueDate = scheduledDate;\r\n return item;\r\n }\r\n });\r\n sessionStorageService.set(assetService.storageKeys.nextBillingInfo, [\r\n vm.isBillGenerated,\r\n vm.nextDueDate,\r\n ]);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getInvoiceList(data) {\r\n const params = {\r\n contractAccountId: data,\r\n };\r\n return getInvoiceListService.sitecore\r\n .getInvoiceList(params)\r\n .then(result => {\r\n if (result) {\r\n const data = result.d.Inp_Req.results[0].Account_Invoice.results;\r\n if (data && data.length > 0) {\r\n const invoiceListArray = _.map(data, o => ({\r\n invoiceId: o.InvId,\r\n billDate: o.InvDate,\r\n billingDays: moment(o.BillEndDate).diff(\r\n moment(o.BillStartDate),\r\n 'days',\r\n ),\r\n billStartDate: o.BillStartDate,\r\n billEndDate: o.BillEndDate,\r\n dueDate: o.DueDate,\r\n }));\r\n const invoiceArray = _.orderBy(\r\n invoiceListArray,\r\n ['billDate'],\r\n ['desc', 'asc'],\r\n );\r\n vm.isBillGenerated =\r\n new Date(invoiceArray[0].dueDate).getTime() >\r\n new Date().getTime();\r\n vm.nextDueDate = moment(invoiceArray[0].dueDate)\r\n .utc()\r\n .format('MM/DD/YYYY');\r\n sessionStorageService.set(\r\n assetService.storageKeys.nextBillingInfo,\r\n [vm.isBillGenerated, vm.nextDueDate],\r\n );\r\n }\r\n } else {\r\n console.log(error);\r\n componentStateHandler.failedState(vm);\r\n reject(errorHandlingService.getException(error));\r\n }\r\n });\r\n }\r\n function getAccountEnrollmentEligibilityStatus(data) {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(data)\r\n .then(\r\n result => {\r\n vm.programs = [];\r\n vm.programs = _.filter(\r\n _.map(result.d.Inp_Prog.results[0].Prog_Res.results, item => ({\r\n name: assetService.billingAndPaymentPrograms[item.ProgName],\r\n status: item.EligibilityStatus.toUpperCase(),\r\n code: item.ProgName.toUpperCase(),\r\n planType: setProgramId(item),\r\n enrolledDate: item.EnrolledDate\r\n ? moment(item.EnrolledDate)\r\n .utc()\r\n .format('MM/DD/YYYY')\r\n : 'XX/XX/XXXX',\r\n enrolledDateStr: item.EnrolledDateStr,\r\n pyddaDate: item.PyddaDate,\r\n })),\r\n item => item.status !== vm.ineligible,\r\n );\r\n\r\n const eBill = _.find(\r\n vm.programs,\r\n element => element.code === _elbill,\r\n );\r\n\r\n if (!eBill) {\r\n vm.ineligiblePaperless = true;\r\n }\r\n\r\n const fixedBill = _.find(\r\n vm.programs,\r\n element => element.code === _fixbil,\r\n );\r\n\r\n if (fixedBill && fixedBill.status.toUpperCase() === vm.enrolled) {\r\n vm.enrolledInFixedBill = true;\r\n }\r\n\r\n updatePYODDADates();\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n function setProgramId(data) {\r\n let programId = '';\r\n if (data.ProgName.toUpperCase() === 'BUDBIL') {\r\n programId =\r\n data.ProgramId === 'BBPQ'\r\n ? 'Quarterly'\r\n : data.ProgramId === 'BBPA'\r\n ? 'Annual'\r\n : '';\r\n budgetBillingHistory();\r\n }\r\n return programId;\r\n }\r\n\r\n function budgetBillingHistory() {\r\n return getBudgetBillingHistoryService.sitecore\r\n .budgetBillingHistory({\r\n contractAccountId: data.contractAccountId,\r\n numberOfMonths: vm.numberOfMonths,\r\n requestedBy: $rootScope.currentUserEmailId, // Get RequestedBy Value\r\n })\r\n .then(\r\n result => {\r\n if (\r\n result.d.ReqCA.results[0].Messages.ReplyCode.toUpperCase() ===\r\n assetService.replyCodes.Success.toUpperCase()\r\n ) {\r\n const budgetBillingResponse =\r\n result.d.ReqCA.results[0].BudgetBillingDetails;\r\n const budgetBillingAmount = _.last(\r\n budgetBillingResponse.BudgetBillingAmount.results,\r\n );\r\n if (budgetBillingResponse.PlanType == 'BBPQ') {\r\n vm.recalculationDate = budgetBillingResponse.RecalculationDate\r\n ? moment(budgetBillingResponse.RecalculationDate)\r\n .utc()\r\n .format('MMMM YYYY')\r\n : '';\r\n } else if (budgetBillingResponse.PlanType == 'BBPA') {\r\n vm.recalculationDate = `${moment()\r\n .month(Number(budgetBillingAmount.Month) - 1)\r\n .format('MMMM')} ${budgetBillingAmount.Year}`;\r\n }\r\n vm.billingAmount = budgetBillingAmount.BudgetBillAmount;\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function checkEligibilityForPrepaid(data) {\r\n return checkEligibilityForPrepaidService.sitecore\r\n .checkEligibilityForPrepaid(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.HeaderToMessageNav.results[0].ReplyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n _status =\r\n result.d.HeaderToResponseNav.results[0].EligibilityStatus ===\r\n true\r\n ? vm.eligible\r\n : vm.enrolled;\r\n } else if (\r\n result.d.HeaderToMessageNav.results[0].MessageNum === '628'\r\n ) {\r\n _status = vm.enrolled;\r\n } else if (\r\n result.d.HeaderToMessageNav.results[0].ReplyCode ===\r\n assetService.replyCodes.ERROR &&\r\n result.d.HeaderToResponseNav.results[0].EligibilityStatus ===\r\n false\r\n ) {\r\n _status = vm.ineligible;\r\n _disable = true;\r\n }\r\n\r\n _newProgram = {\r\n name: _prepaid.name,\r\n status: _status,\r\n code: _prepaid.code,\r\n disable: _disable,\r\n };\r\n // if (result.d.HeaderToMessageNav)\r\n _prepaidData = {\r\n status: _status,\r\n };\r\n vm.programs.push(_newProgram);\r\n setModels();\r\n sessionStorageService.set(\r\n prepaidService.storageKeys.enroll_unenroll,\r\n _prepaidData,\r\n );\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function updatePYODDADates() {\r\n const programsList = vm.programs || [];\r\n const pyoddaProgram = _.find(\r\n programsList,\r\n program =>\r\n program.code === assetService.billingAndPaymentProgramsCodes.PYODDA,\r\n );\r\n if (pyoddaProgram) {\r\n setDatesToProgram(\r\n {\r\n ContractAccount: _globalAccountInfo.accountSelected.accountNum,\r\n businessPartner: _globalAccountInfo.accountSelected.bpNumber,\r\n },\r\n pyoddaProgram,\r\n );\r\n if (pyoddaProgram.status == 'ENROLLED') {\r\n vm.enrolledPYODD = true;\r\n }\r\n }\r\n }\r\n\r\n function setDatesToProgram(data, program) {\r\n const onError = () => {\r\n program.currentDueDate = 'XX';\r\n program.eligibleChangeDate = 'XX/XX/XXXX';\r\n };\r\n\r\n if (program) {\r\n if (\r\n Date.parse(\r\n moment\r\n .utc(program.enrolledDateStr)\r\n .add(1, 'year')\r\n .format('MM/DD/YYYY'),\r\n ) > Date.parse(moment.utc(new Date()).format('MM/DD/YYYY'))\r\n ) {\r\n vm.enrolledPYDDDateChange = true;\r\n } else {\r\n vm.enrolledPYDDDateChange = false;\r\n }\r\n if (program.pyddaDate.length < 2) {\r\n program.pyddaDate = `0${program.pyddaDate}`;\r\n }\r\n program.currentDueDate = moment\r\n .utc(new Date('2020-03-' + program.pyddaDate))\r\n .format('Do');\r\n program.eligibleChangeDate = moment\r\n .utc(program.enrolledDateStr)\r\n .add(1, 'year')\r\n .format('MM/DD/YYYY');\r\n }\r\n }\r\n }\r\n\r\n function isEnrolledInBudgetBilling() {\r\n return vm.programs\r\n ? vm.programs.some(\r\n program =>\r\n program.code ===\r\n assetService.billingAndPaymentProgramsCodes.BUDBIL &&\r\n program.status === vm.enrolled,\r\n )\r\n : false;\r\n }\r\n\r\n function goToPage(event, program, operation) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n const isButtonEnabled = !event.target.attributes.disabled;\r\n if (isButtonEnabled) {\r\n switch (program) {\r\n case 'Paperless Billing':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .ebill.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .ebill.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n break;\r\n case 'Budget Billing':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .budgetBilling.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n sessionStorageService.set(\r\n assetService.strings.BUTTONTEXT,\r\n 'Enroll',\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .budgetBilling.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n sessionStorageService.set(\r\n assetService.strings.BUTTONTEXT,\r\n 'Manage',\r\n );\r\n }\r\n break;\r\n case 'Fixed Bill':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .fixedBill.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .fixedBill.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n break;\r\n case 'Auto-Pay':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .autoPay.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .autoPay.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n break;\r\n case 'Prepaid':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .prepaid.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .prepaid.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n break;\r\n case 'PYODD':\r\n if (operation === 'ENROLLMENT') {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .pyodd.enrollment,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n } else {\r\n cookieService.setCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms\r\n .pyodd.manage,\r\n true,\r\n null,\r\n 1,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n $window.scrollTo(0, 0);\r\n window.location.href = event.target.href;\r\n }\r\n }\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n if (assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n }\r\n }\r\n\r\n //init();\r\n}\r\n","app.controller('BudgetBillingController', BudgetBillingController);\r\nBudgetBillingController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'getProposedBudgetAmountForBBPService',\r\n 'sessionStorageService',\r\n 'accountSearchService',\r\n 'commonService',\r\n '$window',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'commongaTaggingService',\r\n 'getLoggedInUserDetailsService',\r\n 'getProductRecommendationsCAREService',\r\n 'CareDeleteProductService',\r\n 'careFeedbackService',\r\n];\r\n\r\nfunction BudgetBillingController(\r\n $log,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n getProposedBudgetAmountForBBPService,\r\n sessionStorageService,\r\n accountSearchService,\r\n commonService,\r\n $window,\r\n enrollInBillingAndPaymentProgramsService,\r\n commongaTaggingService,\r\n getLoggedInUserDetailsService,\r\n getProductRecommendationsCAREService,\r\n CareDeleteProductService,\r\n careFeedbackService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.buttonClicked = false;\r\n vm.showMessage = 0;\r\n vm.selectPlan = selectPlan;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.contractAccountId = null;\r\n vm.plans = null;\r\n vm.planTypes = {\r\n ...assetService.planTypes,\r\n };\r\n vm.selectedPlanAmount = '';\r\n vm.currentUser = {}; //Get RequestedBy Value\r\n vm.selectMessage = function(message) {\r\n vm.showMessage = vm.showMessage === message ? 0 : message;\r\n };\r\n $rootScope.isCareComp = false;\r\n vm.BBpageError = false;\r\n $rootScope.BnPpageError = false;\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function selectPlan(type, event) {\r\n vm.buttonClicked = true;\r\n // if (event) {\r\n // $('.active-button').removeClass('active-button');\r\n // $(event.currentTarget).addClass('active-button');\r\n // }\r\n let goToPage = '';\r\n const selectedPlanDetails = _.find(\r\n vm.plans,\r\n plan => plan.BdgAmtCyc === type,\r\n );\r\n (vm.selectedPlanAmount = _.get(selectedPlanDetails, 'BdgAmt')),\r\n sessionStorageService.set(\r\n assetService.storageKeys.budgetBilling.selectedPlan,\r\n {\r\n planType: _.get(selectedPlanDetails, 'BdgAmtCyc'),\r\n amount: _.get(selectedPlanDetails, 'BdgAmt'),\r\n },\r\n );\r\n const programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\r\n vm.dataToEnroll = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n progName: programName,\r\n planType: type,\r\n budgetAmnt: `${vm.selectedPlanAmount}`,\r\n requestedBy: vm.currentUser.emailId, // Get RequestedBy Value\r\n };\r\n\r\n enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms(vm.dataToEnroll)\r\n .then(result => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type ===\r\n assetService.replyCodes.S\r\n ) {\r\n const requestCare = {\r\n accountNumber: globalSelectedAccount.accountNum,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName: programName,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n $scope.$emit('nextStep', 'enrollmentSuccess');\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.BBpageError = true;\r\n $rootScope.BnPpageError = vm.BBpageError;\r\n },\r\n );\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId && \r\n item.commerceProductId !== 'NA', \r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function setModels() {\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n const accountData = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n requestedBy: vm.currentUser.emailId, //Get RequestedBy Value\r\n };\r\n\r\n function accountSearch(data) {\r\n const paramData = {\r\n contractAccountId: data.contractAccountId,\r\n };\r\n\r\n return accountSearchService.sitecore.accountSearch(paramData).then(\r\n result => {\r\n const contractAccounts = _.map(\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results,\r\n item => ({\r\n contractAccountNo: item.AccountNumber,\r\n accountNickName: item.AccountNickname,\r\n mailingAddress: {\r\n address: item.AccountMailingAddress,\r\n addressNo: item.AddressNumber,\r\n city: item.City,\r\n state: item.State,\r\n zipCode: item.Zipcode,\r\n streetAddress: item.StreetName,\r\n houseNo: item.HouseNum,\r\n poBox: item.PoBox,\r\n unit: item.Unit,\r\n },\r\n }),\r\n );\r\n\r\n vm.accountData = _.find(\r\n contractAccounts,\r\n account =>\r\n account.contractAccountNo === globalSelectedAccount.accountNum,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.budgetBilling.accountDetails,\r\n vm.accountData,\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getProposedBudgetAmountForBBP(data) {\r\n return getProposedBudgetAmountForBBPService.sitecore\r\n .getProposedBudgetAmountForBBP({\r\n contractAccountId: data.contractAccountId,\r\n requestedBy: data.requestedBy,\r\n })\r\n .then(\r\n result => {\r\n if (\r\n result.d.results[0].BdgAmtToMessage_Nav.results[0].Type === 'S'\r\n ) {\r\n vm.plans = result.d.results[0].GetBudgetAmtNav.results;\r\n vm.plans.forEach(item => {\r\n item.BdgAmtDecimal = (\r\n '0' + Number((item.BdgAmt + '').split('.')[1])\r\n ).slice(-2);\r\n });\r\n vm.plans = vm.plans.reverse();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const promises = [\r\n accountSearch(accountData),\r\n getProposedBudgetAmountForBBP(accountData),\r\n ];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n });\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n });\r\n\r\n const init = function() {\r\n $window.scrollTo(0, 0);\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n // Get RequestedBy Value\r\n // load();\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}","app.controller(\r\n 'BudgetBillingEnrollmentSuccessController',\r\n BudgetBillingEnrollmentSuccessController,\r\n);\r\nBudgetBillingEnrollmentSuccessController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n '$window',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction BudgetBillingEnrollmentSuccessController(\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n broadcastService,\r\n $window,\r\n commongaTaggingService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n //initialice CARE\r\n const vm = this;\r\n vm.planDetails = {};\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.goToPage = goToPage;\r\n vm.init = init;\r\n\r\n $window.scrollTo(0, 0);\r\n $scope.$on(assetService.events.careLoad, (event, data) => {\r\n broadcastService.care(sessionStorageService.get(assetService.events.care));\r\n });\r\n const selectedPlan = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.selectedPlan,\r\n );\r\n vm.planDetails = {\r\n amount: selectedPlan.amount,\r\n planType: selectedPlan.planType == 'ANNUALLY' ? 'Yearly' : 'Quarterly',\r\n };\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function init(){\r\n broadcastService.headerSwitch('Full'); \r\n }\r\n $scope.$emit('loadingSpinner', false);\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function goToPage(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n window.location.href = event.target.href;\r\n }\r\n}\r\n","app.controller(\r\n 'BudgetBillingManageCreditController',\r\n BudgetBillingManageCreditController,\r\n);\r\nBudgetBillingManageCreditController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'getBudgetBillingHistoryService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'accountSearchService',\r\n 'commonService',\r\n 'getUsageComparisionService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'commongaTaggingService',\r\n '$timeout',\r\n '$window',\r\n 'getLoggedInUserDetailsService',\r\n 'getInvoiceListService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction BudgetBillingManageCreditController(\r\n $log,\r\n $scope,\r\n assetService,\r\n getBudgetBillingHistoryService,\r\n genericHelperService,\r\n sessionStorageService,\r\n accountSearchService,\r\n commonService,\r\n getUsageComparisionService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n commongaTaggingService,\r\n $timeout,\r\n $window,\r\n getLoggedInUserDetailsService,\r\n getInvoiceListService,\r\n broadcastService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n vm.accountSearch = {};\r\n vm.charts = [\r\n 'mixed-chart-responsive-1',\r\n 'mixed-chart-responsive-2',\r\n 'mixed-chart-responsive-3',\r\n 'mixed-chart-responsive-4',\r\n ];\r\n vm.data = {\r\n recalculationDate: null,\r\n accruedBalance: null,\r\n accuredAmountType: null,\r\n billingAmount: '0',\r\n planType: null,\r\n chart: [],\r\n budgetBillingAmount: [],\r\n enrollmentEligibilityStatus: {},\r\n recalculated: '',\r\n description: '',\r\n settleUp: '',\r\n invoiceListData: [],\r\n };\r\n vm.datasetsChart = [\r\n {\r\n label: 'Budget Billing Amount',\r\n type: 'line',\r\n backgroundColor: '#005984',\r\n borderColor: '#005984',\r\n borderWidth: 6,\r\n pointStyle: 'line',\r\n pointBackgroundColor: '#005984',\r\n lineTension: 0,\r\n fill: false,\r\n data: [],\r\n },\r\n {\r\n label: 'Actual Billed Amount',\r\n width: 10,\r\n type: 'bar',\r\n backgroundColor: '#54b948',\r\n data: [],\r\n },\r\n ];\r\n vm.dataTable = [];\r\n vm.dataToGet = {\r\n propertyName: null,\r\n propertyValue: null,\r\n serviceType: null,\r\n dataType: null,\r\n accountId: null,\r\n fromDate: null,\r\n toDate: null,\r\n };\r\n vm.labelsChart = [];\r\n vm.monthNames = [];\r\n vm.yearNames = [];\r\n vm.numberOfMonths = '12';\r\n vm.optionsChart = {\r\n title: {\r\n display: false,\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: function(tooltipItem, data) {\r\n return (\r\n data['datasets'][tooltipItem.datasetIndex].label +\r\n ': ' +\r\n '$' +\r\n Number(tooltipItem.value).toFixed(2)\r\n );\r\n },\r\n },\r\n },\r\n scales: {\r\n yAxes: [\r\n {\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Cost of Units Consumed',\r\n },\r\n ticks: {\r\n suggestedMax: 1000,\r\n suggestedMin: 0,\r\n callback(value) {\r\n return `$${value}`;\r\n },\r\n },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n barPercentage: 0.4,\r\n gridLines: {\r\n color: 'rgba(0, 0, 0, 0)',\r\n },\r\n ticks: {\r\n autoSkip: false,\r\n maxRotation: 45,\r\n minRotation: 45,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n display: true,\r\n position: 'bottom',\r\n reverse: true,\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 5,\r\n fontColor: 'black',\r\n },\r\n onClick: e => e.stopPropagation(),\r\n },\r\n };\r\n vm.currentUser = {}; //Get RequestedBy value\r\n vm.reviewPlan = {};\r\n vm.sessionData = {};\r\n vm.showMessage = 0;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.unenrollPage = unenrollPage;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.goToPage = goToPage;\r\n vm.attributePush = attributePush;\r\n vm.selectMessage = function(message) {\r\n vm.showMessage = vm.showMessage === message ? 0 : message;\r\n };\r\n vm.invoiceListData = [];\r\n\r\n $scope.$watch('$viewContentLoaded', () => {\r\n $scope.$emit('loadingSpinner', true);\r\n $timeout(() => {\r\n getChartQuarterly();\r\n\r\n $scope.$emit('loadingSpinner', false);\r\n }, 0);\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function unenrollPage() {\r\n $window.scrollTo(0, 0);\r\n $scope.$emit('nextStep', 'unenroll');\r\n }\r\n\r\n function setDataChart(labelsChart, datasetsCart, optionsChart, id) {\r\n const setchart = {\r\n type: 'bar',\r\n data: {\r\n labels: labelsChart,\r\n datasets: datasetsCart,\r\n },\r\n options: optionsChart,\r\n };\r\n\r\n if (document.getElementById(id)) {\r\n new Chart(document.getElementById(id), setchart);\r\n }\r\n }\r\n\r\n let getChartQuarterly = function() {\r\n let chart = [];\r\n let label = [];\r\n let typeEnd = 0;\r\n for (let i = 0; i < 4; i++) {\r\n let type = i * 3;\r\n typeEnd = type + 3;\r\n\r\n chart = genericHelperService.notReferencesArrayObjects(vm.datasetsChart);\r\n\r\n chart[0].data = chart[0].data.slice(type, typeEnd);\r\n chart[1].data = chart[1].data.slice(type, typeEnd);\r\n label = vm.labelsChart.slice(type, typeEnd);\r\n\r\n setDataChart(\r\n label,\r\n chart,\r\n vm.optionsChart,\r\n `mixed-chart-responsive-${i + 1}`,\r\n );\r\n }\r\n };\r\n\r\n function getChartData() {\r\n let maxValue = 0;\r\n //This is for most recent billed months\r\n let lastIndex = vm.data.chart.length - 1;\r\n let month = vm.data.chart[lastIndex].Month;\r\n let year = vm.data.chart[lastIndex].Year;\r\n for (let i = 11; i >= 0; i--) {\r\n let itemArray = {\r\n month: moment(`${year}/${month}`, 'YYYY/MM')\r\n .subtract(i, 'months')\r\n .format('MMM'),\r\n year: moment(`${year}/${month}`, 'YYYY/MM')\r\n .subtract(i, 'months')\r\n .format('YYYY'),\r\n };\r\n vm.monthNames.push(itemArray);\r\n }\r\n\r\n _.forEach(vm.data.chart, item => {\r\n maxValue = maxValue >= item.Bill_Amt ? maxValue : item.Bill_Amt;\r\n // maxValue = maxValue >= item.Usage ? maxValue : item.Usage;\r\n });\r\n /* This is for past 12month incuding curent month\r\n let i = 11;\r\n for(i ; i >= 0; i--){\r\n var itemArray = {\r\n month : moment().subtract(i, 'months').format('MMM'),\r\n year : moment().subtract(i, 'months').format('YYYY')\r\n }\r\n vm.monthNames.push(itemArray)\r\n }\r\n */\r\n\r\n _.forEach(vm.monthNames, (item, index) => {\r\n vm.labelsChart.push(`${item.month} ${item.year}`);\r\n if (vm.data.chart[index]) {\r\n const monthABA = moment()\r\n .month(Number(vm.data.chart[index].Month) - 1)\r\n .format('MMM');\r\n const yeaABA = parseInt(vm.data.chart[index].Year);\r\n const position = findWithAttr(vm.monthNames, 'month', monthABA);\r\n vm.datasetsChart[1].data[position] = parseFloat(\r\n vm.data.chart[index].Bill_Amt,\r\n ).toFixed(2);\r\n }\r\n\r\n if (vm.data.invoiceListData[index]) {\r\n const monthBBA = moment()\r\n .month(Number(vm.data.invoiceListData[index].Month) - 1)\r\n .format('MMM');\r\n const yearBBA = moment()\r\n .year(Number(vm.data.invoiceListData[index].Year))\r\n .format('YYYY');\r\n const position = findWithAttr(\r\n vm.monthNames,\r\n 'month',\r\n monthBBA,\r\n 'year',\r\n yearBBA,\r\n );\r\n vm.datasetsChart[0].data[position] = parseFloat(\r\n vm.data.invoiceListData[index].BBAmount,\r\n ).toFixed(2);\r\n }\r\n });\r\n /*\r\n //Usage Comparision\r\n if(vm.datasetsChart[1].data.length!=12)\r\n {\r\n vm.datasetsChart[1].data.length=12; \r\n } \r\n \r\n //Budgetbillinghistory\r\n if(vm.datasetsChart[0].data.length!=12)\r\n { \r\n vm.datasetsChart[0].data.length=12;\r\n }*/\r\n\r\n function findWithAttr(array, attr, value, attr1, value1) {\r\n for (let i = 0; i < array.length; i += 1) {\r\n if (array[i][attr] === value && array[i][attr1] == value1) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n vm.datasetsChart[0].data = vm.datasetsChart[1].data[11]\r\n ? vm.datasetsChart[0].data\r\n : leftoverArray();\r\n\r\n _.forEach(vm.datasetsChart[0].data, (item, index) => {\r\n if (item == '0.00') {\r\n vm.datasetsChart[0].data[index] = undefined;\r\n }\r\n });\r\n\r\n function leftoverArray() {\r\n let datasetsChart = [];\r\n vm.datasetsChart[0].data.splice(-1);\r\n datasetsChart = vm.datasetsChart[0].data;\r\n return datasetsChart;\r\n }\r\n\r\n maxValue *= 2;\r\n\r\n vm.optionsChart.scales.yAxes[0].ticks.suggestedMax = maxValue;\r\n setDataChart(\r\n vm.labelsChart,\r\n vm.datasetsChart,\r\n vm.optionsChart,\r\n 'mixed-chart',\r\n );\r\n }\r\n\r\n function setModels() {\r\n vm.data.planType = vm.data.enrollmentEligibilityStatus.ProgramId;\r\n vm.data.accruedBalance = vm.data.enrollmentEligibilityStatus.AccruedBalance;\r\n if (vm.data.accruedBalance > 1) {\r\n vm.data.accuredAmountType = assetService.strings.DEBIT_BBH;\r\n } else if (vm.data.accruedBalance < 0) {\r\n vm.data.accuredAmountType = assetService.strings.CREDIT_BBH;\r\n vm.data.accruedBalance = vm.data.accruedBalance.substring(1);\r\n } else if (vm.data.accruedBalance == 0) {\r\n vm.data.accuredAmountType = assetService.strings.NONE_BBH;\r\n }\r\n if (!vm.sessionData) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.budgetBilling.creditOnAccount,\r\n vm.data,\r\n );\r\n }\r\n setTableValues(vm.data.planType);\r\n getChartData();\r\n getChartQuarterly();\r\n\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n function setTableValues(data) {\r\n if (data === 'BBPQ') {\r\n vm.data.recalculated = 'Quartely';\r\n vm.data.settleUp = 'No';\r\n vm.data.description1 =\r\n 'Your monthly bill may change automatically up or down every three months based on your actual energy use.';\r\n vm.data.description2 =\r\n 'Your payment plan will be reviewed every three months.This quarterly review and adjustment of your budget billing amount prevents the need for a settle-up month.';\r\n } else if (data === 'BBPA') {\r\n vm.data.recalculated = 'Annual';\r\n vm.data.settleUp = 'Yes';\r\n vm.data.description1 =\r\n 'Your monthly bill may change automatically up or down every year based on your actual energy use.';\r\n vm.data.description2 =\r\n 'Your payment plan will be reviewed every year.This Annual review and adjustment of your budget billing amount prevents the need for a settle-up month.';\r\n } else if (data === 'FPPF') {\r\n vm.data.recalculated = 'Florida';\r\n vm.data.description1 =\r\n 'Florida Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';\r\n vm.data.description2 =\r\n 'Ut enim ad minim veniam.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';\r\n } else if (data === 'FPPI') {\r\n vm.data.recalculated = 'Indiana';\r\n vm.data.description1 =\r\n 'Indiana Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';\r\n vm.data.description2 =\r\n 'Ut enim ad minim veniam.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';\r\n } else {\r\n vm.data.recalculated = '';\r\n vm.data.description1 = '';\r\n vm.data.description2 = '';\r\n }\r\n }\r\n function load() {\r\n vm.charts = [\r\n 'mixed-chart-responsive-1',\r\n 'mixed-chart-responsive-2',\r\n 'mixed-chart-responsive-3',\r\n 'mixed-chart-responsive-4',\r\n ];\r\n\r\n vm.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n vm.businessPartnerId = sessionStorageService.get(\r\n assetService.storageKeys.businessPartnerId,\r\n );\r\n\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.creditOnAccount,\r\n );\r\n if (vm.sessionData) {\r\n vm.data.chart = _.map(vm.sessionData.chart, item => item);\r\n vm.data.invoiceListData = _.map(\r\n vm.sessionData.invoiceListData,\r\n item => item,\r\n );\r\n vm.data.budgetBillingAmount = _.map(\r\n vm.sessionData.budgetBillingAmount,\r\n item => item,\r\n );\r\n vm.data.enrollmentEligibilityStatus =\r\n vm.sessionData.enrollmentEligibilityStatus;\r\n vm.data.billingAmount = vm.sessionData.billingAmount\r\n ? vm.sessionData.billingAmount\r\n : '0';\r\n vm.data.recalculationDate = vm.sessionData.recalculationDate\r\n ? vm.sessionData.recalculationDate\r\n : '';\r\n setModels();\r\n } else {\r\n const promises = [\r\n budgetBillingHistory(),\r\n accountEnrollmentEligibilityStatus(),\r\n accountSearch(),\r\n ];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.dataToGet.accountId = vm.contractAccountId;\r\n if (vm.accountSearch.installationNumber) {\r\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\r\n vm.dataToGet.propertyValue = vm.accountSearch.installationNumber;\r\n } else {\r\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\r\n vm.dataToGet.propertyValue = vm.accountSearch.meterNumber;\r\n }\r\n\r\n if (vm.accountSearch.division === assetService.divisions.ELEC) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.meterNumber = vm.accountSearch.meterNumber;\r\n vm.dataToGet.meterType = vm.accountSearch.meterType;\r\n vm.dataToGet.fromDate = moment(\r\n `${moment().month() + 1}/01/${moment().year() - 1}`,\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n vm.dataToGet.toDate = moment(\r\n `${moment().month() + 1}/31/${moment().year()}`,\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n usageComparision(vm.dataToGet);\r\n });\r\n }\r\n function getinvoiceList() {\r\n vm.dataObj = {\r\n businessPartner: vm.businessPartnerId,\r\n fromDate: vm.dataToGet.fromDate,\r\n toDate: vm.dataToGet.toDate,\r\n cdpId: '',\r\n invoiceCount: '12',\r\n contractAccountId: vm.contractAccountId,\r\n };\r\n return getInvoiceListService.sitecore.getInvoiceList(vm.dataObj).then(\r\n result => {\r\n vm.invoiceListData = _.sortBy(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n 'DueDate',\r\n );\r\n vm.data.invoiceListData = _.map(vm.invoiceListData, invoice => ({\r\n invDateStr: moment(invoice.InvDateStr).format('MM/DD/YY'),\r\n Month: moment(invoice.InvDateStr).format('MM'),\r\n Year: moment(invoice.InvDateStr).format('YYYY'),\r\n BBAmount: invoice.BBAmount,\r\n }));\r\n setModels();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function budgetBillingHistory() {\r\n return getBudgetBillingHistoryService.sitecore\r\n .budgetBillingHistory({\r\n contractAccountId: vm.contractAccountId,\r\n numberOfMonths: vm.numberOfMonths,\r\n requestedBy: vm.currentUser.emailId, //Get RequestedBy Value\r\n })\r\n .then(\r\n result => {\r\n if (\r\n result.d.ReqCA.results[0].Messages.ReplyCode.toUpperCase() ===\r\n assetService.replyCodes.Success.toUpperCase()\r\n ) {\r\n const budgetBillingResponse =\r\n result.d.ReqCA.results[0].BudgetBillingDetails;\r\n const budgetBillingAmount = _.last(\r\n budgetBillingResponse.BudgetBillingAmount.results,\r\n );\r\n vm.data.budgetBillingAmount =\r\n budgetBillingResponse.BudgetBillingAmount.results;\r\n if (budgetBillingResponse.PlanType == 'BBPQ') {\r\n vm.data.recalculationDate = budgetBillingResponse.RecalculationDate\r\n ? moment(budgetBillingResponse.RecalculationDate)\r\n .utc()\r\n .format('MMMM YYYY')\r\n : '';\r\n } else if (budgetBillingResponse.PlanType == 'BBPA') {\r\n vm.data.recalculationDate =\r\n moment()\r\n .month(Number(budgetBillingAmount.Month) - 1)\r\n .format('MMMM') +\r\n ' ' +\r\n budgetBillingAmount.Year;\r\n }\r\n vm.data.billingAmount = budgetBillingAmount.BudgetBillAmount;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function accountEnrollmentEligibilityStatus() {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: vm.contractAccountId,\r\n })\r\n .then(\r\n result => {\r\n vm.data.enrollmentEligibilityStatus = _.find(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => {\r\n return (\r\n item.ProgName ===\r\n assetService.billingAndPaymentProgramsCodes.BUDBIL\r\n );\r\n },\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function accountSearch() {\r\n return accountSearchService.sitecore\r\n .accountSearch({\r\n contractAccountId: vm.contractAccountId,\r\n })\r\n .then(\r\n result => {\r\n vm.accountSearch = {\r\n installationNumber:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .InstallationNumber,\r\n meterNumber:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .MeterNumber,\r\n meterType:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .MeterType,\r\n division:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .Division,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function usageComparision(data) {\r\n return getUsageComparisionService.sitecore.getUsageComparision(data).then(\r\n result => {\r\n vm.data.chart =\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav.results;\r\n getinvoiceList();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function goToPage(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n window.location.href = event.target.href;\r\n }\r\n\r\n const init = function() {\r\n //Get RequestedBy Value\r\n //load();\r\n // broadcastService.fullHeaderSwitch();\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'BudgetBillingReviewQuarterlyController',\r\n BudgetBillingReviewQuarterlyController,\r\n);\r\nBudgetBillingReviewQuarterlyController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'sessionStorageService',\r\n 'getProductRecommendationsCAREService',\r\n 'CareDeleteProductService',\r\n 'careFeedbackService',\r\n];\r\n\r\nfunction BudgetBillingReviewQuarterlyController(\r\n $log,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n enrollInBillingAndPaymentProgramsService,\r\n sessionStorageService,\r\n getProductRecommendationsCAREService,\r\n CareDeleteProductService,\r\n careFeedbackService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let globalSelectedAccount = null;\r\n let globalAccountInfo = null;\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.accountDetails = {};\r\n vm.planDetails = {};\r\n vm.currentUser = {}; // Get RequestedBy value\r\n $rootScope.isCareComp = false;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n /**\r\n * Function Definitions\r\n */\r\n function previousPage() {\r\n $scope.$emit('nextStep', 'home');\r\n }\r\n\r\n function nextStep() {\r\n const programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\r\n enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n contractAccountId: vm.accountDetails.contractAccountNo,\r\n progName: programName,\r\n planType: assetService.planTypes.quarterly,\r\n budgetAmnt: `${vm.planDetails.amount}`,\r\n requestedBy: vm.currentUser.emailId, // Get RequestedBy Value\r\n })\r\n .then(result => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type ===\r\n assetService.replyCodes.S\r\n ) {\r\n const requestCare = {\r\n accountNumber: vm.accountDetails.contractAccountNo,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName: programName,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n $scope.$emit('nextStep', 'enrollmentSuccess');\r\n }\r\n });\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId && \r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function setModels() {\r\n const selectedPlan = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.selectedPlan,\r\n );\r\n const accountDetails = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.accountDetails,\r\n );\r\n vm.planDetails = {\r\n amount: selectedPlan.amount,\r\n planType: selectedPlan.planType,\r\n };\r\n\r\n vm.accountDetails = {\r\n accountNickName: accountDetails.accountNickName,\r\n contractAccountNo: accountDetails.contractAccountNo,\r\n mailingAddress: { ...accountDetails.mailingAddress },\r\n };\r\n vm.accountDetails.mailingAddress.address = globalSelectedAccount.address\r\n ? globalSelectedAccount.address\r\n : vm.accountDetails.mailingAddress.address;\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n function load() {\r\n setModels();\r\n }\r\n\r\n const init = function() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n // Get RequestedBy Value\r\n // load();\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'BudgetBillingReviewYearlyController',\r\n BudgetBillingReviewYearlyController,\r\n);\r\nBudgetBillingReviewYearlyController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'sessionStorageService',\r\n 'getProductRecommendationsCAREService',\r\n 'CareDeleteProductService',\r\n 'careFeedbackService',\r\n];\r\n\r\nfunction BudgetBillingReviewYearlyController(\r\n $log,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n enrollInBillingAndPaymentProgramsService,\r\n sessionStorageService,\r\n getProductRecommendationsCAREService,\r\n CareDeleteProductService,\r\n careFeedbackService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let globalSelectedAccount = null;\r\n let globalAccountInfo = null;\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.accountDetails = {};\r\n vm.planDetails = {};\r\n vm.currentUser = {}; // Get RequestedBy Value\r\n $rootScope.isCareComp = false;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function previousPage() {\r\n $scope.$emit('nextStep', 'home');\r\n }\r\n\r\n function nextStep() {\r\n const programName = assetService.billingAndPaymentProgramsCodes.BUDBIL;\r\n enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n contractAccountId: vm.accountDetails.contractAccountNo,\r\n progName: programName,\r\n planType: assetService.planTypes.annual,\r\n budgetAmnt: `${vm.planDetails.amount}`,\r\n requestedBy: vm.currentUser.emailId, // Get RequestedBy Value\r\n })\r\n .then(result => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type ===\r\n assetService.replyCodes.S\r\n ) {\r\n const requestCare = {\r\n accountNumber: vm.accountDetails.contractAccountNo,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName: programName,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n $scope.$emit('nextStep', 'enrollmentSuccess');\r\n }\r\n });\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId && \r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function setModels() {\r\n const selectedPlan = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.selectedPlan,\r\n );\r\n const accountDetails = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.accountDetails,\r\n );\r\n vm.planDetails = {\r\n amount: selectedPlan.amount,\r\n planType: selectedPlan.planType,\r\n };\r\n\r\n vm.accountDetails = {\r\n accountNickName: accountDetails.accountNickName,\r\n contractAccountNo: accountDetails.contractAccountNo,\r\n mailingAddress: { ...accountDetails.mailingAddress },\r\n };\r\n vm.accountDetails.mailingAddress.address = globalSelectedAccount.address\r\n ? globalSelectedAccount.address\r\n : vm.accountDetails.mailingAddress.address;\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n function load() {\r\n setModels();\r\n }\r\n\r\n const init = function() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n // Get RequestedBy Value\r\n // load();\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'BudgetBillingUnenrollController',\r\n BudgetBillingUnenrollController,\r\n);\r\nBudgetBillingUnenrollController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'commonService',\r\n 'apiConfigService',\r\n 'budgetBillingFactory',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'sessionStorageService',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'getLoggedInUserDetailsService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction BudgetBillingUnenrollController(\r\n $log,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n commonService,\r\n apiConfigService,\r\n budgetBillingFactory,\r\n enrollInBillingAndPaymentProgramsService,\r\n sessionStorageService,\r\n $window,\r\n commongaTaggingService,\r\n getLoggedInUserDetailsService,\r\n broadcastService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _url = null;\r\n let widgetUsers = null;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n\r\n vm.bBPlans = {};\r\n vm.dataToDeEnroll = {};\r\n vm.proceedToDeEnroll = '';\r\n vm.reviewPlan = {};\r\n vm.currentUser = {};\r\n vm.BBpageError = false;\r\n vm.buttonClicked = false;\r\n $rootScope.BnPpageError = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function previousPage() {\r\n $window.scrollTo(0, 0);\r\n $scope.$emit('nextStep', 'manageCredit');\r\n broadcastService.headerSwitch('Full');\r\n }\r\n\r\n function nextStep(event) {\r\n vm.buttonClicked = true;\r\n // if (event) {\r\n // $('.active-button').removeClass('active-button');\r\n // $(event.currentTarget).addClass('active-button');\r\n // }\r\n setDeEnroll();\r\n\r\n function setDeEnroll() {\r\n return enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms(vm.dataToDeEnroll)\r\n .then(\r\n result => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0]\r\n .Type === assetService.replyCodes.S\r\n ) {\r\n sessionStorageService.delete(\r\n assetService.storageKeys.budgetBilling.creditOnAccount,\r\n );\r\n $scope.$emit('nextStep', 'unenrollmentSuccess');\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.BBpageError = true;\r\n $rootScope.BnPpageError = vm.BBpageError;\r\n },\r\n );\r\n }\r\n }\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function setModel() {\r\n vm.reviewPlan.amount = vm.bBPlans.billingAmount;\r\n vm.reviewPlan.accuredAmount = vm.bBPlans.accruedBalance;\r\n vm.reviewPlan.decimalaccuredAmount = (\r\n '0' + Number((vm.reviewPlan.accuredAmount + '').split('.')[1])\r\n ).slice(-2);\r\n vm.reviewPlan.accuredAmountType = vm.bBPlans.accuredAmountType;\r\n\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n function load() {\r\n broadcastService.headerSwitch('Simple');\r\n vm.bBPlans = sessionStorageService.get(\r\n assetService.storageKeys.budgetBilling.creditOnAccount,\r\n );\r\n vm.dataToDeEnroll = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n progName: assetService.billingAndPaymentProgramsCodes.BUDBIL,\r\n action:\r\n assetService.serviceActions.enrollInBillingAndPaymentPrograms.DEENROL,\r\n budgetAmnt: vm.bBPlans.billingAmount,\r\n planType: vm.bBPlans.planType,\r\n requestedBy: vm.currentUser.emailId, //Get RequestedBy Value\r\n };\r\n\r\n setModel();\r\n }\r\n\r\n const init = function() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n //Get RequestedBy Value\r\n //load();\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}","app.controller(\r\n 'BudgetBillingUnEnrollmentSuccessController',\r\n BudgetBillingUnEnrollmentSuccessController,\r\n);\r\nBudgetBillingUnEnrollmentSuccessController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'broadcastService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n '$window',\r\n];\r\n\r\nfunction BudgetBillingUnEnrollmentSuccessController(\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n $window,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.goToPage = goToPage;\r\n vm.init = init;\r\n //initialice CARE\r\n $scope.$on(assetService.events.careLoad, (event, data) => {\r\n broadcastService.care(sessionStorageService.get(assetService.events.care));\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function init(){\r\n broadcastService.headerSwitch('Full'); \r\n }\r\n $window.scrollTo(0, 0);\r\n $scope.$emit('loadingSpinner', false);\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function goToPage(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n window.location.href = event.target.href;\r\n }\r\n}\r\n","app.controller('ShellBudgetBillingController', ShellBudgetBillingController);\r\nShellBudgetBillingController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n '$state',\r\n 'cookieService',\r\n];\r\n\r\nfunction ShellBudgetBillingController(\r\n $scope,\r\n assetService,\r\n $state,\r\n cookieService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.dataPage = assetService.budgetBilling.pages;\r\n vm.stageGo = vm.dataPage.home;\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n $state.go(vm.stageGo);\r\n }\r\n\r\n $scope.$on('nextStep', (index, page) => {\r\n vm.stageGo = vm.dataPage[page];\r\n vm.loadingSpinner = true;\r\n $state.go(vm.stageGo);\r\n });\r\n\r\n $scope.$on('loadingSpinner', (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n }); \r\n\r\n /* ---------------Initialization-------------------*/\r\n let init = function () {\r\n const isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.enrollment);\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = `/my-account/billing-and-payment-programs/`;\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'ShellManageBudgetBillingController',\r\n ShellManageBudgetBillingController,\r\n);\r\nShellManageBudgetBillingController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n '$state',\r\n 'cookieService',\r\n];\r\n\r\nfunction ShellManageBudgetBillingController(\r\n $scope,\r\n assetService,\r\n $state,\r\n cookieService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.dataPage = assetService.budgetBilling.pages;\r\n vm.stageGo = vm.dataPage.manageCredit;\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n $state.go(vm.stageGo);\r\n }\r\n\r\n $scope.$on('nextStep', (index, page) => {\r\n vm.stageGo = vm.dataPage[page];\r\n vm.loadingSpinner = true;\r\n $state.go(vm.stageGo);\r\n });\r\n\r\n $scope.$on('loadingSpinner', (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n let init = function () {\r\n const isValidation = cookieService.getCookie(assetService.storageKeys.validation.billingAndPaymentPrograms.budgetBilling.manage);\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = '/my-account/billing-and-payment-programs/';\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('CCCAREComponent', CCCAREComponent);\r\nCCCAREComponent.$inject = [\r\n '$log',\r\n '$scope',\r\n '$location',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'getMultipleProductDetailsService',\r\n 'getProductRecommendationsCAREService',\r\n 'readConsentService',\r\n 'careFeedbackService',\r\n 'commongaTaggingService',\r\n '$rootScope',\r\n '$window',\r\n 'componentStateHandler',\r\n];\r\n\r\nfunction CCCAREComponent(\r\n $log,\r\n $scope,\r\n $location,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n getMultipleProductDetailsService,\r\n getProductRecommendationsCAREService,\r\n readConsentService,\r\n careFeedbackService,\r\n commongaTaggingService,\r\n $rootScope,\r\n $window,\r\n componentStateHandler,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const maxRecommendations = 4;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n /* --------------Global Vars-----------------------*/\r\n vm.data = {};\r\n vm.loadingSpinner = true;\r\n vm.isOnDashboard = false;\r\n vm.productList = [];\r\n vm.nonProducts = false;\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.lineOfBusiness = '';\r\n vm.disclaimer = '';\r\n vm.disclaimerShortText = '';\r\n vm.serviceDown = false;\r\n vm.showMoreFlag = true;\r\n vm.isShowMore = true;\r\n vm.useDefaultSCProductsAndServices = false;\r\n vm.ownerType = '';\r\n vm.responseProductList = [];\r\n vm.originalOrderProductList = [];\r\n vm.pageName = '';\r\n vm.gatList = [];\r\n $rootScope.isCareComp = false;\r\n vm.isDefaultProducts = false;\r\n vm.isLoadCalled = false;\r\n vm.showTimeoutError = false;\r\n\r\n /* ---------------Function Declarations-------------------*/\r\n vm.init = init;\r\n vm.sendFeedback = sendFeedback;\r\n vm.redirect = redirect;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.showMoreData = showMoreData;\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n vm.loadingSpinner = true;\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n const productListData = sessionStorageService.get(\r\n assetService.storageKeys.careRecFiilteredList +\r\n globalSelectedAccount.accountNum,\r\n );\r\n if (\r\n productListData === undefined ||\r\n productListData === null ||\r\n productListData === ''\r\n ) {\r\n for (\r\n let index = assetService.numeric_Numbers.zero;\r\n index < $window.sessionStorage.length;\r\n index += assetService.numeric_Numbers.onee\r\n ) {\r\n if (/careRecFiilteredList/.test($window.sessionStorage.key(index))) {\r\n sessionStorageService.delete($window.sessionStorage.key(index));\r\n }\r\n }\r\n $(window).on('scroll', () => {\r\n const elem = $('#care-tiles')[0];\r\n const elem1 = $('#care-tiles1')[0];\r\n if (\r\n ((elem != undefined &&\r\n elem.offsetTop != 0 &&\r\n document.documentElement.scrollTop + window.outerHeight >\r\n elem.offsetTop) ||\r\n (elem == undefined &&\r\n elem1 != undefined &&\r\n elem1.offsetTop != 0 &&\r\n document.documentElement.scrollTop + window.outerHeight >\r\n elem1.offsetTop)) &&\r\n globalSelectedAccount.status !== 'Closed' && vm.isLoadCalled == false\r\n ) {\r\n load();\r\n vm.loadingSpinner = true;\r\n $(window).off('scroll');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function getCommerceProductDetails(productList) {\r\n const promises = [];\r\n vm.defaultProducts = [];\r\n vm.isDefaultProducts = true;\r\n for (\r\n let index = assetService.numeric_Numbers.zero;\r\n index < productList.length;\r\n index += assetService.numeric_Numbers.onee\r\n ) {\r\n vm.defaultProducts.push(\r\n productList[index].productId,\r\n );\r\n }\r\n if (productList.length > assetService.numeric_Numbers.zero) {\r\n promises.push(\r\n getProductDetails({\r\n productCode: vm.defaultProducts.join('|'),\r\n fields: assetService.urlTokens.basic,\r\n }),\r\n );\r\n }\r\n if (productList.length > assetService.numeric_Numbers.zero) {\r\n commonService.executePromises(promises).then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n for (\r\n let index = assetService.numeric_Numbers.zero;\r\n index < productList.length;\r\n index += assetService.numeric_Numbers.onee\r\n ) {\r\n const productTitleText = vm.productList[index].title;\r\n const slot = `Slot-${parseInt(index) + 1}`;\r\n virtualPagePush(\r\n 'card',\r\n vm.pageName,\r\n vm.gatList[1],\r\n productTitleText,\r\n slot,\r\n vm.gatList[2],\r\n );\r\n }\r\n componentStateHandler.showComponent(vm);\r\n },\r\n () => {\r\n if (vm.isOnDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n // if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function redirect(\r\n landingUrl,\r\n event,\r\n productTitle,\r\n productid,\r\n prid,\r\n LofB,\r\n prrank,\r\n ORLevel,\r\n score,\r\n productIndex,\r\n redirectURL,\r\n ) {\r\n const slot = `Slot-${parseInt(productIndex) + 1}`;\r\n\r\n const workflowName = 'card';\r\n const headline = vm.pageName;\r\n const subheadline = vm.gatList[1];\r\n const addedEvent = productTitle;\r\n if (vm.isDefaultProducts) {\r\n virtualPagePush(\r\n 'card',\r\n vm.pageName,\r\n vm.gatList[1],\r\n productTitle,\r\n slot,\r\n 'clickthrough',\r\n );\r\n\r\n attributePush(\r\n `workFlow:${workflowName}`,\r\n `headline:${headline}`,\r\n `subheadline:${subheadline}`,\r\n `addedEvent:${addedEvent}`,\r\n );\r\n }\r\n const hdnfield = `hdn-toast_${productid}`;\r\n let landingURL = landingUrl;\r\n if (event.target.innerText === 'View All Products & Services') {\r\n window.location.href = landingURL;\r\n } else if (prrank !== '' && score !== '') {\r\n $rootScope.dataLayer.push({\r\n event: 'eec.careimpressionClick',\r\n ecommerce: {\r\n click: {\r\n actionField: {\r\n list: 'CARE products',\r\n },\r\n products: [\r\n {\r\n id: prid,\r\n name: productTitle,\r\n dimension170: score,\r\n dimension171: prrank,\r\n dimension172: ORLevel,\r\n dimension173: LofB,\r\n position: $(`#${hdnfield}`)\r\n .attr('subHead')\r\n .replace('slot-', ''), // position where the product was shown in impressions\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n attributePush(\r\n `workFlow:${$(`#${hdnfield}`).attr('businessFunction')}`,\r\n `headline:${vm.pageName}`,\r\n `subheadline:${$(`#${hdnfield}`).attr('subhead2')}`,\r\n `buttonText:${productTitle}`,\r\n `addedSpec:${$(`#${hdnfield}`).attr('subHead')}`,\r\n );\r\n virtualPagePush(\r\n $(`#${hdnfield}`).attr('businessFunction'),\r\n vm.pageName,\r\n $(`#${hdnfield}`).attr('subhead2'),\r\n productTitle,\r\n $(`#${hdnfield}`).attr('subHead'),\r\n // slot,\r\n $(`#${hdnfield}`).attr('clickthroughText'),\r\n );\r\n let landingURLPath = new URL(landingURL).pathname;\r\n if (\r\n landingURLPath === null ||\r\n landingURLPath === undefined ||\r\n landingURLPath === '/'\r\n ) {\r\n window.location.href = landingURL;\r\n } else {\r\n window.location.href = 'https://' + redirectURL + landingURLPath;\r\n }\r\n } else {\r\n let landingURLPath = new URL(landingURL).pathname;\r\n if (\r\n landingURLPath === null ||\r\n landingURLPath === undefined ||\r\n landingURLPath === '/'\r\n ) {\r\n window.location.href = landingURL;\r\n } else {\r\n window.location.href = 'https://' + redirectURL + landingURLPath;\r\n }\r\n }\r\n }\r\n\r\n function virtualPagePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n let contractAccountId = null;\r\n vm.isOnDashboard =\r\n $location\r\n .path()\r\n .toLowerCase()\r\n .indexOf('dashboard') > -1;\r\n if (globalSelectedAccount.accountNum && !vm.serviceDown) {\r\n contractAccountId = globalSelectedAccount.accountNum;\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId,\r\n contractAccountId,\r\n );\r\n vm.data.contractAccountId = contractAccountId;\r\n\r\n getRole();\r\n } else {\r\n vm.useDefaultSCProductsAndServices = true;\r\n }\r\n const currentAccountNum = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected.accountNum;\r\n const productListData = sessionStorageService.get(\r\n assetService.storageKeys.careRecFiilteredList + currentAccountNum,\r\n );\r\n if (!vm.useDefaultSCProductsAndServices && !productListData) {\r\n if (vm.isOnDashboard) {\r\n getProductRecommendationsCARE({\r\n accountNumber: vm.data.contractAccountId,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n });\r\n } else {\r\n UMCReadConsent({ contractAccountId: vm.data.contractAccountId }).then(\r\n (result) => {\r\n if (result !== undefined) {\r\n // Read Consent Current accepted Version\r\n vm.acceptedVersion = result.acceptedConsent.version\r\n ? result.acceptedConsent.version.trim().replace(' ', '')\r\n : assetService.numeric_Numbers.zero;\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentAcceptedVersion,\r\n vm.acceptedVersion,\r\n );\r\n\r\n // Read Consent Current Status Accept or Decline\r\n const readConsentCurrentStatus =\r\n result.currentStatus === assetService.strings.ACC\r\n ? assetService.strings.ACCEPTED\r\n : assetService.strings.DECLINED;\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentCurrentStatus,\r\n readConsentCurrentStatus,\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentAcceptedVersion,\r\n assetService.numeric_Numbers.zero,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentCurrentStatus,\r\n assetService.strings.DECLINED,\r\n );\r\n }\r\n $rootScope.isCareComp = true;\r\n getProductRecommendationsCARE({\r\n accountNumber: vm.data.contractAccountId,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n });\r\n },\r\n () => {\r\n if (vm.isOnDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n vm.showTimeoutError = true;\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n vm.showTimeoutError = true;\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n }\r\n },\r\n );\r\n }\r\n } else if (productListData) {\r\n if (vm.isOnDashboard) {\r\n careFiltering();\r\n } else {\r\n UMCReadConsent({ contractAccountId: vm.data.contractAccountId }).then(\r\n (result) => {\r\n if (result !== undefined) {\r\n // Read Consent Current accepted Version\r\n vm.acceptedVersion = result.acceptedConsent.version\r\n ? result.acceptedConsent.version.trim().replace(' ', '')\r\n : assetService.numeric_Numbers.zero;\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentAcceptedVersion,\r\n vm.acceptedVersion,\r\n );\r\n\r\n // Read Consent Current Status Accept or Decline\r\n const readConsentCurrentStatus = result.currentStatus === assetService.strings.ACC\r\n ? assetService.strings.ACCEPTED\r\n : assetService.strings.DECLINED;\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentCurrentStatus,\r\n readConsentCurrentStatus,\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentAcceptedVersion,\r\n assetService.numeric_Numbers.zero,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.readConsentCurrentStatus,\r\n assetService.strings.DECLINED,\r\n );\r\n }\r\n careFiltering();\r\n },\r\n () => {\r\n if (vm.isOnDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n vm.showTimeoutError = true;\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n vm.showTimeoutError = true;\r\n }\r\n },\r\n );\r\n }\r\n } else {\r\n getCommerceProductDetails(vm.defaultProductIds);\r\n }\r\n }\r\n\r\n function careFiltering() {\r\n vm.originalOrderProductList = [];\r\n vm.responseProductList = [];\r\n vm.productList = [];\r\n const currentAccountNum = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected.accountNum;\r\n\r\n let getRecommendationData = sessionStorageService.get(\r\n assetService.storageKeys.careRecFiilteredList + currentAccountNum,\r\n );\r\n\r\n vm.acceptedVersion = sessionStorageService.get(\r\n assetService.storageKeys.readConsentAcceptedVersion,\r\n );\r\n\r\n const readConsentCurrentStatus = sessionStorageService.get(\r\n assetService.storageKeys.readConsentCurrentStatus,\r\n );\r\n\r\n let filteredData = getRecommendationData;\r\n\r\n if (\r\n parseFloat(vm.acceptedVersion) !==\r\n parseFloat(assetService.numeric_Numbers.zero) &&\r\n readConsentCurrentStatus === assetService.strings.ACCEPTED\r\n ) {\r\n filteredData = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.ucVersionRequired === '' ||\r\n parseFloat(\r\n recommendation.ucVersionRequired.trim().replace(' ', ''),\r\n ) <= parseFloat(vm.acceptedVersion),\r\n );\r\n } else {\r\n filteredData = _.filter(\r\n filteredData,\r\n recommendation => recommendation.ucVersionRequired === '',\r\n );\r\n }\r\n\r\n getRecommendationData = filteredData; // need take it from filtered data\r\n\r\n setPageNameAndCareRecommendations(filteredData, readConsentCurrentStatus);\r\n\r\n vm.careRecommendations = _.sortBy(vm.careRecommendations, recommendation =>\r\n parseInt(\r\n recommendation.rank\r\n ? recommendation.rank\r\n : assetService.numeric_Numbers.zero,\r\n ),\r\n );\r\n\r\n const promises = [];\r\n let showproducts = maxRecommendations;\r\n\r\n if (vm.careRecommendations.length < maxRecommendations) {\r\n const additionalData = getRecommendationData;\r\n vm.careRecommendations.forEach(filteredElement => {\r\n additionalData.forEach(allRecommentation => {\r\n if (allRecommentation.rank === filteredElement.rank) {\r\n additionalData.splice(\r\n additionalData.indexOf(allRecommentation),\r\n assetService.numeric_Numbers.onee,\r\n );\r\n }\r\n });\r\n });\r\n\r\n vm.careRecommendations = vm.careRecommendations.concat(\r\n _.sortBy(additionalData, data =>\r\n parseInt(data.rank ? data.rank : assetService.numeric_Numbers.zero),\r\n ).slice(\r\n assetService.numeric_Numbers.zero,\r\n maxRecommendations - vm.careRecommendations.length,\r\n ),\r\n );\r\n showproducts = vm.careRecommendations.length;\r\n } else if (vm.careRecommendations.length < maxRecommendations) {\r\n showproducts = vm.careRecommendations.length;\r\n }\r\n\r\n const ProductsDetails = [];\r\n\r\n for (\r\n let index = assetService.numeric_Numbers.zero;\r\n index < showproducts;\r\n index += assetService.numeric_Numbers.onee\r\n ) {\r\n vm.originalOrderProductList.push(\r\n vm.careRecommendations[index].commerceProductId,\r\n );\r\n const ProductDetail = {\r\n id: vm.careRecommendations[index].productId,\r\n name: vm.careRecommendations[index].productName,\r\n list: 'CARE products',\r\n dimension170: `${vm.careRecommendations[index].score}%`,\r\n dimension171: vm.careRecommendations[index].rank,\r\n dimension172: vm.careRecommendations[index].ownerRenterProductLevel,\r\n dimension173: vm.careRecommendations[index].lineOfBusiness,\r\n position: parseInt(index) + assetService.numeric_Numbers.onee,\r\n };\r\n ProductsDetails.push(ProductDetail);\r\n }\r\n if (showproducts > assetService.numeric_Numbers.zero) {\r\n promises.push(\r\n getProductDetails({\r\n productCode: vm.originalOrderProductList.join('|'),\r\n fields: assetService.urlTokens.basic,\r\n id: vm.careRecommendations[0].productId,\r\n line_of_business: vm.careRecommendations[0].lineOfBusiness,\r\n rank: vm.careRecommendations[0].rank,\r\n owner_renter_product_level:\r\n vm.careRecommendations[0].ownerRenterProductLevel,\r\n propensity_score: `${vm.careRecommendations[0].score}%`,\r\n }),\r\n );\r\n }\r\n // GAT Data Layer Push\r\n if (ProductsDetails.length > assetService.numeric_Numbers.zero) {\r\n $rootScope.dataLayer.push({\r\n event: 'eec.careimpressionView',\r\n ecommerce: {\r\n impressions: ProductsDetails,\r\n },\r\n });\r\n }\r\n $rootScope.isCareComp = true;\r\n commonService.executePromises(promises).then(\r\n () => {\r\n for (\r\n let orderIndex = assetService.numeric_Numbers.zero;\r\n orderIndex < vm.originalOrderProductList.length;\r\n orderIndex += assetService.numeric_Numbers.onee\r\n ) {\r\n vm.responseProductList.push(\r\n vm.productList.find(\r\n prod =>\r\n prod.productId === vm.originalOrderProductList[orderIndex],\r\n ),\r\n );\r\n if (vm.responseProductList[orderIndex] !== undefined) {\r\n // GAT Implementation\r\n const productTitleText = vm.responseProductList[orderIndex].title;\r\n\r\n const slot = `Slot-${parseInt(orderIndex) + 1}`;\r\n virtualPagePush(\r\n vm.gatList[0],\r\n vm.pageName,\r\n vm.gatList[1],\r\n productTitleText,\r\n slot,\r\n vm.gatList[2],\r\n );\r\n }\r\n }\r\n vm.productList = vm.responseProductList;\r\n vm.loadingSpinner = false;\r\n $rootScope.isCareComp = false;\r\n componentStateHandler.showComponent(vm);\r\n },\r\n () => {\r\n if (vm.isOnDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n },\r\n );\r\n if (showproducts === assetService.numeric_Numbers.zero) {\r\n getCommerceProductDetails(vm.defaultProductIds);\r\n }\r\n }\r\n\r\n function setPageNameAndCareRecommendations(\r\n filteredData,\r\n readConsentCurrentStatus,\r\n ) {\r\n const state = $window.location.pathname.toLowerCase();\r\n\r\n switch (state) {\r\n case assetService.strings.CARE.PAGES.PREPAID_DASHBOARD:\r\n if (globalSelectedAccount.prepaid) {\r\n vm.pageName =\r\n assetService.strings.CARE.GATPAGENAME.PREPAID_DASHBOARD_PAGE;\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_EE ||\r\n recommendation.lineOfBusiness === '',\r\n );\r\n } else {\r\n vm.pageName =\r\n assetService.strings.CARE.GATPAGENAME.MYACCOUNT_DASHBOARD_PAGE;\r\n vm.careRecommendations = filteredData;\r\n }\r\n break;\r\n\r\n case assetService.strings.CARE.PAGES.ENERGY_USAGE:\r\n vm.pageName = assetService.strings.CARE.GATPAGENAME.ENERGY_USAGE_PAGE;\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_EE,\r\n );\r\n break;\r\n\r\n case assetService.strings.CARE.PAGES.FIXED_BILL:\r\n vm.pageName = assetService.strings.CARE.GATPAGENAME.FIXED_BILL_PAGE;\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS,\r\n );\r\n break;\r\n\r\n case assetService.strings.CARE.PAGES.BUDGET_BILLING:\r\n vm.pageName = assetService.strings.CARE.GATPAGENAME.BUDGET_BILLING_PAGE;\r\n if (\r\n parseFloat(vm.acceptedVersion) !==\r\n parseFloat(assetService.numeric_Numbers.zero) &&\r\n readConsentCurrentStatus === assetService.strings.ACCEPTED\r\n ) {\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.ucVersionRequired !== '' &&\r\n parseFloat(\r\n recommendation.ucVersionRequired.trim().replace(' ', ''),\r\n ) <= parseFloat(vm.acceptedVersion) &&\r\n (recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS),\r\n );\r\n } else {\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.ucVersionRequired === '' &&\r\n (recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS),\r\n );\r\n }\r\n break;\r\n\r\n case assetService.strings.CARE.PAGES.MANAGE_BUDGET_BILLING:\r\n vm.pageName =\r\n assetService.strings.CARE.GATPAGENAME.MANAGE_BUDGET_BILLING_PAGE;\r\n if (\r\n parseFloat(vm.acceptedVersion) !==\r\n parseFloat(assetService.numeric_Numbers.zero) &&\r\n readConsentCurrentStatus === assetService.strings.ACCEPTED\r\n ) {\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.ucVersionRequired !== '' &&\r\n parseFloat(\r\n recommendation.ucVersionRequired.trim().replace(' ', ''),\r\n ) <= parseFloat(vm.acceptedVersion) &&\r\n (recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS),\r\n );\r\n } else {\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.ucVersionRequired === '' &&\r\n (recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS),\r\n );\r\n }\r\n break;\r\n case assetService.strings.CARE.PAGES.AUTO_PAY:\r\n vm.pageName = assetService.strings.CARE.GATPAGENAME.AUTO_PAY_PAGE;\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS,\r\n );\r\n break;\r\n case assetService.strings.CARE.PAGES.PICK_YOUR_DUE_DATE:\r\n vm.pageName = assetService.strings.CARE.GATPAGENAME.PYDD_PAGE;\r\n vm.careRecommendations = _.filter(\r\n filteredData,\r\n recommendation =>\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_BnP ||\r\n recommendation.lineOfBusiness ===\r\n assetService.strings.CARE.LineOfBusiness.CARE_ECS,\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function UMCReadConsent(data) {\r\n return readConsentService.sitecore.readConsent(data).then(\r\n result => {\r\n if (\r\n result !== '' &&\r\n result !== undefined &&\r\n result !== null &&\r\n result.d &&\r\n result.d.ReadConReqResNav &&\r\n result.d.ReadConReqResNav.results &&\r\n result.d.ReadConReqResNav.results.length >\r\n assetService.numeric_Numbers.zero\r\n ) {\r\n const acceptedConsent = _.map(\r\n result.d.ReadConReqResNav.results,\r\n filteredResult => ({\r\n consentCode: filteredResult.AcceptConsentCode,\r\n consentStatus: filteredResult.AcceptConsentStatus,\r\n version: filteredResult.AcceptVersion,\r\n consentDate: moment(filteredResult.AcceptConsentDate).format(\r\n 'MM/DD/YYYY',\r\n ),\r\n }),\r\n );\r\n\r\n const declinededConsent = _.map(\r\n result.d.ReadDeclineReqResNav.results,\r\n filteredResult => ({\r\n consentCode: filteredResult.DeclineConsentCode,\r\n consentStatus: filteredResult.DeclineConsentStatus,\r\n version: filteredResult.DeclineVersion,\r\n consentDate: moment(filteredResult.DeclineConsentDate).format(\r\n 'MM/DD/YYYY',\r\n ),\r\n }),\r\n );\r\n\r\n const ignoredConsent = _.map(\r\n result.d.ReadIgnoreReqResNav.results,\r\n filteredResult => ({\r\n consentCode: filteredResult.IgnoreConsentCode,\r\n consentStatus: filteredResult.IgnoreConsentStatus,\r\n version: filteredResult.IgnoreVersion,\r\n consentDate: moment(filteredResult.IgnoreConsentDate).format(\r\n 'MM/DD/YYYY',\r\n ),\r\n }),\r\n );\r\n\r\n const umcData = {\r\n currentVersion: result.d.CurrentLatestVersion,\r\n currentStatus: result.d.CurrentStatus,\r\n acceptedConsent: acceptedConsent[0],\r\n declinededConsent: declinededConsent[0],\r\n ignoredConsent: ignoredConsent[0],\r\n };\r\n return umcData;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getProductRecommendationsCARE(data) {\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE(data)\r\n .then(\r\n result => {\r\n if (\r\n result !== '' &&\r\n result !== undefined &&\r\n result.Care_Response !== null &&\r\n result.Care_Response !== undefined\r\n ) {\r\n vm.disclaimerShortText = result ? result.DisclaimerShortText : '';\r\n vm.disclaimer = result ? result.Disclaimer : '';\r\n vm.ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n vm.careRecommendations = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === vm.ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n\r\n const currentAccountNum = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected.accountNum;\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + currentAccountNum,\r\n vm.careRecommendations,\r\n );\r\n careFiltering();\r\n } \r\n else{\r\n vm.showTimeoutError = true;\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showTimeoutError = true;\r\n //getCommerceProductDetails(vm.defaultProductIds);\r\n },\r\n );\r\n }\r\n\r\n function getProductDetails(paramData) {\r\n return getMultipleProductDetailsService.sitecore.getMultipleProductDetails(paramData).then(\r\n result => {\r\n if (result !== '') {\r\n result.productsList.forEach(element => {\r\n vm.productList.push({\r\n productId: element.code,\r\n description: element.summary,\r\n finalLandingUrl: element.finalLandingUrl,\r\n title: element.name,\r\n img:\r\n element.images !== undefined &&\r\n element.images.length > assetService.numeric_Numbers.zero\r\n ? element.images[0].externalUrl\r\n : `${window.location.origin}/assets/site/img/cc-products-services/product_demo.jpg`,\r\n id: paramData.id ? paramData.id : assetService.numeric_Numbers.zero,\r\n line_of_business: paramData.line_of_business\r\n ? paramData.line_of_business\r\n : '',\r\n rank: paramData.rank,\r\n owner_renter_product_level: paramData.owner_renter_product_level\r\n ? paramData.owner_renter_product_level\r\n : '',\r\n propensity_score: paramData.propensity_score\r\n ? paramData.propensity_score\r\n : '',\r\n });\r\n });\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n vm.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n\r\n function sendFeedback(productId) {\r\n const dataObj = {\r\n productId,\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n }\r\n\r\n function showMoreData() {\r\n vm.isShowMore = !vm.isShowMore;\r\n }\r\n\r\n function init(\r\n defaultProducts,\r\n lineOfBusiness = '',\r\n businessFunctionval,\r\n headingval,\r\n impression,\r\n ) {\r\n vm.gatList = [businessFunctionval, headingval, impression];\r\n const defaultProductList = defaultProducts.split(',');\r\n vm.defaultProductIds = _.map(defaultProductList, item => ({\r\n productId: item,\r\n }));\r\n vm.lineOfBusiness = lineOfBusiness;\r\n\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(\r\n globalAccountInfo,\r\n 'accountSelected',\r\n )\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n if (!(document.documentElement.scrollHeight > document.documentElement.clientHeight)) {\r\n load();\r\n vm.isLoadCalled = true;\r\n } else {\r\n window.scrollBy(0, 2);\r\n }\r\n $(window).on('scroll', () => {\r\n const elem = $('#care-tiles')[0];\r\n const elem1 = $('#care-tiles1')[0];\r\n if (\r\n ((elem != undefined &&\r\n elem.offsetTop != 0 &&\r\n document.documentElement.scrollTop + window.outerHeight >\r\n elem.offsetTop) ||\r\n (elem == undefined &&\r\n elem1 != undefined &&\r\n elem1.offsetTop != 0 &&\r\n document.documentElement.scrollTop + window.outerHeight >\r\n elem1.offsetTop)) &&\r\n globalSelectedAccount.status !== 'Closed' && vm.isLoadCalled == false\r\n ) {\r\n load();\r\n vm.loadingSpinner = true;\r\n $(window).off('scroll');\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}","app.controller('CCBalanceActivity', CCBalanceActivity);\r\nCCBalanceActivity.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'balanceActivityService',\r\n 'dateHelperService',\r\n 'prepaidService',\r\n 'sessionStorageService',\r\n 'commonService',\r\n 'componentStateHandler',\r\n 'getPaymentHistoryService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCBalanceActivity(\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n balanceActivityService,\r\n dateHelperService,\r\n prepaidService,\r\n sessionStorageService,\r\n commonService,\r\n componentStateHandler,\r\n getPaymentHistoryService,\r\n commongaTaggingService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n const _dailyUsage = prepaidService.strings.DAILY_USAGE;\r\n const _payment = prepaidService.strings.PAYMENT;\r\n const _pending = prepaidService.strings.PENDING;\r\n const noOfDays = '365';\r\n let dailyUsageDetails = null;\r\n let paymentHistoryDetails = null;\r\n let paymentDetails = null;\r\n\r\n /* Global Vars */\r\n vm.balanceActivity = {\r\n dailyUsage: [],\r\n payment: [],\r\n paymentFees: [],\r\n };\r\n vm.dropdownOptions = [\r\n {\r\n text: _dailyUsage,\r\n value: _dailyUsage,\r\n },\r\n {\r\n text: _payment,\r\n value: _payment,\r\n },\r\n ];\r\n\r\n vm.minusTableHeaders = [\r\n {\r\n column: assetService.strings.DATE,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.TYPE,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.AMOUNT,\r\n sortAsc: true,\r\n },\r\n ];\r\n vm.keyDates = [];\r\n vm.lastDate = 0;\r\n vm.dateLis = [];\r\n vm.limit = 6;\r\n vm.activitiesLimit = 6; // Initial displayed rows in Table\r\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\r\n vm.orderPos = 0;\r\n vm.sortAsc = true;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n load();\r\n });\r\n\r\n /** Function Declarations */\r\n vm.init = init;\r\n vm.attributePush = attributePush;\r\n /** Function Definitions */\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function filterWeek() {\r\n vm.balanceList = vm.balance;\r\n if (vm.balanceList.length < vm.activitiesLimit) {\r\n vm.activitiesLimit = vm.balanceList.length;\r\n }\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n commonService\r\n .executePromises([\r\n getPaymentHistory({\r\n businessPartner: _globalAccountInfo.bpNumber,\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n }),\r\n getBalanceActivity({\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n numberOfDays: noOfDays,\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n setModels();\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n //populate daily usage\r\n if (dailyUsageDetails) {\r\n vm.balanceActivity.dailyUsage = _.map(dailyUsageDetails, item => ({\r\n type: _dailyUsage,\r\n dailyElectricUsage: Math.trunc(item.TotalKwh),\r\n dailyElectricCost: item.DailyUsageAmount,\r\n date: moment(item.ToDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(item.ToDateStr).toDate(),\r\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\r\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\r\n amount: item.DailyUsageAmount,\r\n pendingText: '',\r\n }));\r\n }\r\n\r\n if (paymentDetails) {\r\n paymentDetails.forEach(paymentDetailsFees => {\r\n if (\r\n paymentDetailsFees.Description === 'RETURN_CHECK_FEE' ||\r\n paymentDetailsFees.Description === 'LATE_PAYMENT_FEE' ||\r\n paymentDetailsFees.Description === 'NEW_SERVICE_FEE'\r\n ) {\r\n let paymentItemFees = {\r\n type: _payment,\r\n status: paymentDetailsFees.Description,\r\n confirmationNumber: '',\r\n date: moment(paymentDetailsFees.PostingDate).format('MM/DD/YYYY'),\r\n dateForSort: moment(paymentDetailsFees.PostingDate).toDate(),\r\n paymentMetod: '',\r\n amount: parseFloat(paymentDetailsFees.Amount),\r\n };\r\n vm.balanceActivity.paymentFees.push(paymentItemFees);\r\n }\r\n });\r\n }\r\n \r\n //populate payment history\r\n if (paymentHistoryDetails) {\r\n paymentHistoryDetails.forEach(paymentHistory => {\r\n if (\r\n paymentHistory.Payment_Status === 'PENDING' ||\r\n paymentHistory.Payment_Status === 'COMPLETED' ||\r\n paymentHistory.Payment_Status === 'RETURNED'\r\n ) {\r\n let paymentItem = {\r\n type: _payment,\r\n status: paymentHistory.Payment_Status,\r\n confirmationNumber: paymentHistory.Confirmation_Code,\r\n date: moment(paymentHistory.PaymentDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(paymentHistory.PaymentDateStr).toDate(),\r\n paymentMetod: paymentHistory.Payment_Method,\r\n payment: paymentHistory.Payment_Amount,\r\n deferredBalance: 0,\r\n amount: parseFloat(paymentHistory.Payment_Amount),\r\n pendingText:\r\n paymentHistory.Payment_Status === 'PENDING' ? _pending : '',\r\n };\r\n vm.balanceActivity.payment.push(paymentItem);\r\n }\r\n });\r\n }\r\n\r\n if (\r\n vm.balanceActivity.dailyUsage.length > 0 ||\r\n vm.balanceActivity.payment.length > 0\r\n ) {\r\n vm.noBalanceActivity = false;\r\n const dataToMerge = [\r\n vm.balanceActivity.dailyUsage,\r\n vm.balanceActivity.payment,\r\n vm.balanceActivity.paymentFees,\r\n ];\r\n vm.balance = _.spread(_.union)(dataToMerge);\r\n\r\n vm.balance.forEach(element => {\r\n const numberOfWeek = dateHelperService.getWeekNumber(element.date);\r\n const year = new Date(element.date).getFullYear();\r\n\r\n element.dateId = year * 100 + numberOfWeek;\r\n });\r\n\r\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(\r\n activity => activity.dateId,\r\n );\r\n\r\n vm.dateLis.sort((first, second) => second - first);\r\n filterWeek();\r\n vm.noBalanceActivity = vm.balanceList.length === 0;\r\n } else {\r\n vm.noBalanceActivity = true;\r\n }\r\n vm.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n }\r\n\r\n function getBalanceActivity(request) {\r\n return balanceActivityService.sitecore.balanceActivity(request).then(\r\n result => {\r\n dailyUsageDetails = result.d.Balactivitytodailyusage.results;\r\n paymentDetails = result.d.BalActivityToCharges_Nav.results;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function getPaymentHistory(request) {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(request).then(\r\n result => {\r\n paymentHistoryDetails = result.d.Req_Inp.results[0].Inp_Res.results;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller('BPAComponentController', BPAComponentController);\r\n\r\nBPAComponentController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'getPaymentHistoryService',\r\n 'getInvoiceListService',\r\n 'sessionStorageService',\r\n 'FPBroadcastService',\r\n];\r\n\r\nfunction BPAComponentController(\r\n $log,\r\n $scope,\r\n assetService,\r\n getPaymentHistoryService,\r\n getInvoiceListService,\r\n sessionStorageService,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _dueDate = assetService.strings.SORTBY_DUEDATE;\r\n let _invoicesData = {};\r\n let _invoicesDataSorted = {};\r\n let _globalAccountInfo = {};\r\n let _globalSelectedAccount = {};\r\n let _mergedData = {};\r\n let _paymentsData = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n const dataToMerge = [_invoicesData, _paymentsData];\r\n _mergedData = _.spread(_.union)(dataToMerge);\r\n\r\n vm.billsAndPayments = _.orderBy(_mergedData, [_dueDate], ['desc', 'asc']);\r\n\r\n _invoicesDataSorted = _.orderBy(_invoicesData, [_dueDate], ['desc', 'asc']);\r\n sessionStorageService.set(\r\n // Just Invoice List\r\n assetService.storageKeys.bpaLatestInvoice,\r\n _invoicesDataSorted[0],\r\n );\r\n\r\n broadcastService.bpaLatestInvoice();\r\n }\r\n\r\n function getInvoices(paramData) {\r\n return getInvoiceListService.sitecore\r\n .getInvoiceList(paramData)\r\n .then(result => {\r\n _invoicesData = _.map(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n invoice => ({\r\n itemId: invoice.InvId,\r\n active: false,\r\n dueDate: moment(invoice.DueDate).format('MM/DD/YY'),\r\n type: assetService.strings.TYPE_BILL,\r\n description:\r\n moment(invoice.BillStartDate).format('MMM DD') +\r\n ' to ' +\r\n moment(invoice.BillEndDate).format('MMM DD') +\r\n ' - Bill (' +\r\n invoice.BillDays +\r\n 'Days)', // Blocked, waiting to be added to the JSON response\r\n dueAmount: Number(invoice.InvTotAmtDue),\r\n errorFlag: invoice.PastDueFlg,\r\n // Details to be reassigned on next GET\r\n prevAmountDue: Number('00.00'),\r\n paymentReceived: Number('00.00'),\r\n currentCharges: Number('00.00'),\r\n totalAmountDue: Number('00.00'),\r\n totalElectricUsage: '00.00',\r\n avgDailyElectricCost: Number('00.00'),\r\n totalGasUsage: '00.00',\r\n avgDailyGasCost: Number('00.00'),\r\n // ...invoice, //Checking if is necesary\r\n }),\r\n );\r\n });\r\n }\r\n\r\n function getPayments(paramData) {\r\n return getPaymentHistoryService.sitecore\r\n .getPaymentHistory(paramData)\r\n .then(result => {\r\n _paymentsData = _.map(\r\n result.d.Req_Inp.results[0].Inp_Res.results,\r\n payment => ({\r\n itemId: payment.Payment_Doc,\r\n active: false,\r\n dueDate: moment(payment.Payment_Date).format('MM/DD/YY'), // Same as paymentDate\r\n type: assetService.strings.TYPE_PAYMENT,\r\n description: `(${payment.Payment_Status}) ${payment.Payment_Method} ${payment.Payment_Account}`,\r\n dueAmount: Number(payment.Payment_Amount), // Same as paymentAmount\r\n confirmNumber: payment.Confirmation_Code,\r\n paymentMethod: payment.Payment_Method,\r\n routingNumber: payment.Routing_No,\r\n accountNumber: payment.Payment_Account,\r\n paymentStatus: payment.Payment_Status,\r\n // ...payment, // Checking if is necesary\r\n }),\r\n );\r\n });\r\n }\r\n\r\n function load() {\r\n const dataObject = {\r\n contractAccountId: _globalSelectedAccount.contractAccount,\r\n businessPartner: _globalSelectedAccount.businessPartner,\r\n };\r\n\r\n getPayments(dataObject).then(\r\n () => {\r\n getInvoices(dataObject).then(\r\n () => {\r\n setModels();\r\n vm.loadingSpinner = false;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n\r\n load();\r\n });\r\n\r\n /* ---------------*Initialization*-------------------*/\r\n function init() {\r\n /*empty function*/\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('BPAComponentNoNative', BPAComponentNoNative);\r\n\r\nBPAComponentNoNative.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'getPaymentHistoryService',\r\n 'getInvoiceListService',\r\n 'sessionStorageService',\r\n 'FPBroadcastService',\r\n 'componentStateHandler',\r\n];\r\n\r\nfunction BPAComponentNoNative(\r\n $scope,\r\n assetService,\r\n getPaymentHistoryService,\r\n getInvoiceListService,\r\n sessionStorageService,\r\n broadcastService,\r\n componentStateHandler,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _dueDate = assetService.strings.SORTBY_DUEDATE;\r\n let _invoicesData = {};\r\n let _invoicesDataSorted = {};\r\n let _globalAccountInfo = {};\r\n let _globalSelectedAccount = {};\r\n let _mergedData = {};\r\n let _paymentsData = {};\r\n let globalSelectedAccountEmail = '';\r\n let _bpNumber = '';\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n const dataToMerge = [_invoicesData, _paymentsData];\r\n _mergedData = _.spread(_.union)(dataToMerge);\r\n\r\n vm.billsAndPayments = _.orderBy(_mergedData, [_dueDate], ['desc', 'asc']);\r\n\r\n _invoicesDataSorted = _.orderBy(_invoicesData, [_dueDate], ['desc', 'asc']);\r\n sessionStorageService.set(\r\n // Just Invoice List\r\n assetService.storageKeys.bpaLatestInvoice,\r\n _invoicesDataSorted[0],\r\n );\r\n\r\n broadcastService.bpaLatestInvoice();\r\n }\r\n\r\n function getInvoices(paramData) {\r\n return getInvoiceListService.sitecore\r\n .getInvoiceList(paramData)\r\n .then(result => {\r\n _invoicesData = _.map(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n invoice => ({\r\n itemId: invoice.InvId,\r\n active: false,\r\n dueDate: moment(invoice.DueDate).format('MM/DD/YY'),\r\n type: assetService.strings.TYPE_BILL,\r\n description: `${moment(invoice.BillStartDate).format(\r\n 'MMM DD',\r\n )} to ${moment(invoice.BillEndDate).format('MMM DD')} - Bill (${\r\n invoice.BillDays\r\n }Days)`, // Blocked, waiting to be added to the JSON response\r\n dueAmount: Number(invoice.InvTotAmtDue),\r\n errorFlag: invoice.PastDueFlg,\r\n // Details to be reassigned on next GET\r\n prevAmountDue: Number('00.00'),\r\n paymentReceived: Number('00.00'),\r\n currentCharges: Number('00.00'),\r\n totalAmountDue: Number('00.00'),\r\n totalElectricUsage: '00.00',\r\n avgDailyElectricCost: Number('00.00'),\r\n totalGasUsage: '00.00',\r\n avgDailyGasCost: Number('00.00'),\r\n // ...invoice, //Checking if is necesary\r\n }),\r\n );\r\n });\r\n }\r\n\r\n function getPayments(paramData) {\r\n return getPaymentHistoryService.sitecore\r\n .getPaymentHistory(paramData)\r\n .then(result => {\r\n _paymentsData = _.map(\r\n result.d.Req_Inp.results[0].Inp_Res.results,\r\n payment => ({\r\n itemId: payment.Payment_Doc,\r\n active: false,\r\n dueDate: moment(payment.Payment_Date).format('MM/DD/YY'), // Same as paymentDate\r\n type: assetService.strings.TYPE_PAYMENT,\r\n description: `(${payment.Payment_Status}) ${payment.Payment_Method} ${payment.Payment_Account}`,\r\n dueAmount: Number(payment.Payment_Amount), // Same as paymentAmount\r\n confirmNumber: payment.Confirmation_Code,\r\n paymentMethod: payment.Payment_Method,\r\n routingNumber: payment.Routing_No,\r\n accountNumber: payment.Payment_Account,\r\n paymentStatus: payment.Payment_Status,\r\n // ...payment, // Checking if is necesary\r\n }),\r\n );\r\n });\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\r\n _bpNumber = _globalSelectedAccount.bpNumber;\r\n }\r\n const dataObject = {\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n businessPartner: _globalSelectedAccount.bpNumber,\r\n EmailID: globalSelectedAccountEmail,\r\n businessPartnerId: _bpNumber,\r\n };\r\n\r\n getPayments(dataObject).then(\r\n () => {\r\n getInvoices(dataObject).then(\r\n () => {\r\n setModels();\r\n vm.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\r\n _bpNumber = _globalSelectedAccount.bpNumber;\r\n }\r\n load();\r\n });\r\n\r\n /* ---------------*Initialization*-------------------*/\r\n function init() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\r\n _bpNumber = _globalSelectedAccount.bpNumber;\r\n }\r\n load();\r\n }\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('CCDashboardController', CCDashboardController);\r\nCCDashboardController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'ccDelegationAssetService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n '$rootScope',\r\n 'umcModalService',\r\n 'efiModalService',\r\n 'componentStateHandler',\r\n 'impersonationService',\r\n 'commongaTaggingService',\r\n '$timeout',\r\n 'getEnrollmentStatusOfExtensionPlanService',\r\n];\r\n\r\nfunction CCDashboardController(\r\n $log,\r\n $scope,\r\n assetService,\r\n ccDelegationAssetService,\r\n modalService,\r\n sessionStorageService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n $rootScope,\r\n umcModalService,\r\n efiModalService,\r\n componentStateHandler,\r\n impersonationService,\r\n commongaTaggingService,\r\n $timeout,\r\n getEnrollmentStatusOfExtensionPlanService,\r\n) {\r\n /** Scope Vars */\r\n\r\n const accountNum = 'accountNum';\r\n const accountSelected = 'accountSelected';\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n const _success = assetService.replyCodes.Success;\r\n const _action = ccDelegationAssetService.serviceActions.DELEGATION_MODAL;\r\n const _elbill = assetService.strings.ELBILL;\r\n\r\n /** Global Vars */\r\n vm.loadingSpinner = true;\r\n vm.PB_BigPadding = false;\r\n $rootScope.closeBtn = false;\r\n vm.PB_Description = 'More than just saving paper.';\r\n vm.PB_LinkText = 'Learn more';\r\n vm.PB_ClickEnroll = undefined;\r\n vm.PB_ToggleComponent = false;\r\n vm.PB_ManageButton = 'ENROLL';\r\n vm.isPrepaid = false;\r\n vm.energyUsageWidth = false;\r\n vm.isNonNativeWithAccounts = false;\r\n vm.isNonNativeWithoutAccounts = false;\r\n vm.nativeDashboard = false;\r\n vm.UMCLoaded = false;\r\n vm.efiLoaded = false;\r\n vm.retrieveDelegation = {\r\n replyCode: null,\r\n delegations: [],\r\n };\r\n vm.toSessionStorage = [];\r\n vm.roleData = {};\r\n vm.roleBase = {};\r\n vm.ineligible = false;\r\n vm.col1Class = '';\r\n vm.col2Class = '';\r\n vm.umcModalInstance = '';\r\n vm.tracklink = tracklink;\r\n vm.managelink = managelink;\r\n vm.landlordLink = landlordLink;\r\n vm.careEnable = true;\r\n vm.redirecting = false;\r\n\r\n // function to check query params for redirect\r\n function checkForRedirect() {\r\n const params = new URLSearchParams(window.location.search);\r\n const value = params.get('redirect');\r\n\r\n if (value) {\r\n vm.redirecting = true;\r\n }\r\n }\r\n checkForRedirect();\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n vm.loadingSpinner = true;\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n _globalAccountInfo &&\r\n Object.prototype.hasOwnProperty.call(_globalAccountInfo, accountSelected)\r\n ) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n vm.roleData = {\r\n relatedBusinessPartner: _globalSelectedAccount.bpNumber,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n requestedBy: '',\r\n sessionNo: '',\r\n emailId: _globalAccountInfo.userEmail,\r\n experience: '',\r\n };\r\n\r\n getRole();\r\n }\r\n load();\r\n });\r\n\r\n $scope.$on(assetService.events.dashboardWidget, () => {\r\n // widget loader\r\n if (vm.roleBase) {\r\n // eslint-disable-next-line no-param-reassign\r\n $rootScope.roleBase = vm.roleBase;\r\n sessionStorageService.set(assetService.storageKeys.roleBase, vm.roleBase);\r\n }\r\n });\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function getRole() {\r\n switch (_globalSelectedAccount && _globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n vm.roleBase.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.roleBase.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.roleBase.viewerRole = true;\r\n break;\r\n default:\r\n vm.roleBase.viewerRole = true;\r\n }\r\n }\r\n\r\n function energyUsageWidthClass() {\r\n if (\r\n _globalAccountInfo !== null &&\r\n _globalAccountInfo !== undefined &&\r\n (_globalAccountInfo.accountSelected.status === 'Closed' ||\r\n _globalAccountInfo.accountSelected.status === 'INACTIVE')\r\n ) {\r\n vm.energyUsageWidth = true;\r\n vm.careEnable = false;\r\n } else {\r\n vm.energyUsageWidth = false;\r\n }\r\n }\r\n\r\n function setColumnClass() {\r\n if (vm.isPrepaid) {\r\n vm.col1Class = 'CCDashboard__col--2';\r\n vm.col2Class = 'CCDashboard__col--2';\r\n } else if (vm.energyUsageWidth) {\r\n // closed acc\r\n vm.col1Class = 'CCDashboard__col--4';\r\n } else if (!vm.isNonNativeWithAccounts && !vm.isNonNativeWithoutAccounts) {\r\n vm.col1Class = 'CCDashboard__col--auto';\r\n vm.col2Class = 'CCDashboard__col--400';\r\n } else {\r\n vm.col1Class = 'CCDashboard__col--1';\r\n vm.col2Class = 'CCDashboard__col--3';\r\n }\r\n }\r\n\r\n /** Function Declarations */\r\n function openModal() {\r\n modalService.dashboardDelegationInvite();\r\n }\r\n\r\n function getAccountEnrollmentEligibilityStatus(parameters) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.eligibilityStatusResult) {\r\n const result = $rootScope.eligibilityStatusResult;\r\n setEligibilityStatusModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(parameters)\r\n .then(\r\n result => {\r\n setEligibilityStatusModel(result);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setEligibilityStatusModel(result) {\r\n vm.programs = result.d.Inp_Prog.results[0].Prog_Res.results;\r\n if (vm.programs.length > 0) {\r\n const eBill = _.find(\r\n vm.programs,\r\n element => element.ProgName === _elbill,\r\n );\r\n vm.payodda = _.find(\r\n vm.programs,\r\n element => element.ProgName === 'PYODDA',\r\n );\r\n if (vm.payodda && vm.payodda.EligibilityStatus === 'Ineligible') {\r\n $rootScope.pickyourDueDate = 'Not Eligible';\r\n } else {\r\n $rootScope.pickyourDueDate = vm.payodda.EligibilityStatus;\r\n }\r\n if (eBill && eBill.EligibilityStatus === 'Ineligible') {\r\n vm.ineligible = true;\r\n } else {\r\n vm.ineligible = false;\r\n }\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.eligibilityStatusData,\r\n result.d.Inp_Prog.results[0],\r\n );\r\n }\r\n\r\n function getEnrollmentStatusOfExtensionPlan(data) {\r\n return getEnrollmentStatusOfExtensionPlanService.sitecore\r\n .GetEnrollmentStatusOfExtensionPlans(data)\r\n .then(\r\n result => {\r\n if (result.d.DueDate.Status === '') {\r\n $rootScope.dueDateExtension = 'Eligible';\r\n } else if (result.d.DueDate.Status === 'ENROLLED') {\r\n $rootScope.dueDateExtension = 'Enrolled';\r\n } else if (result.d.DueDate.Status === 'INELIGIBLE') {\r\n $rootScope.dueDateExtension = 'Not Eligible';\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setEligiblePaymentPlansModel(result) {\r\n $rootScope.dpa = 'Not Enrolled';\r\n if (result.d.ReqCA.results.length > 0) {\r\n if (result.d.ReqCA.results[0].PaymentPlan.results.length > 0) {\r\n if (result.d.ReqCA.results[0].PaymentPlan[0] !== 'undefined') {\r\n $rootScope.dpa = 'Enrolled';\r\n }\r\n } else {\r\n $rootScope.dpa = 'Not Eligible';\r\n }\r\n }\r\n if (\r\n result.d.ReqCA.results[0].Extensions === null ||\r\n result.d.ReqCA.results[0].Extensions.DisconnectDate === null\r\n ) {\r\n $rootScope.disconnectExtension = 'Not Eligible';\r\n } else {\r\n $rootScope.disconnectExtension =\r\n result.d.ReqCA.results[0].Extensions.DisconnectDateStr;\r\n }\r\n }\r\n\r\n function tracklink() {\r\n attributePush(\r\n `workFlow:${$('#hdn-toast').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast').attr('headline')}`,\r\n `subheadline:${$('#hdn-toast').attr('subheadline')}`,\r\n `buttonText:${$('#hdn-toast').attr('buttontext')}`,\r\n );\r\n }\r\n function landlordLink() {\r\n sessionStorageService.set(\r\n assetService.storageKeys.experienceAccount,\r\n 'LANDLORD',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.landlordSwitch,\r\n 'LandlordPage',\r\n );\r\n attributePush(\r\n `workFlow:${$('#hdn-toast').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast').attr('headline')}`,\r\n `subheadline:${$('#hdn-toast').attr('subheadline')}`,\r\n `buttonText:${$('#hdn-toast').attr('buttontext')}`,\r\n );\r\n }\r\n function managelink() {\r\n attributePush(\r\n `workFlow:${$('#hdn-toast-manage').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toast-manage').attr('headline')}`,\r\n `subheadline:${$('#hdn-toast-manage').attr('subheadline')}`,\r\n `buttonText:${$('#hdn-toast-manage').attr('buttontext')}`,\r\n );\r\n }\r\n\r\n $scope.gatAttributePush = function(buttontext, headline, businessfunction) {\r\n const params = [\r\n `workFlow:${businessfunction}`,\r\n `buttonText:${buttontext}`,\r\n `headline:${headline}`,\r\n ];\r\n commongaTaggingService.attributePush(params);\r\n };\r\n function load() {\r\n $rootScope.cancelServiceFailCount = 0;\r\n $rootScope.channel = '005';\r\n $rootScope.closeBtn = false;\r\n $rootScope.isPublicUmc = false;\r\n\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n $rootScope.efiInterceptForUser = sessionStorageService.get(\r\n assetService.storageKeys.efiInterceptForUser,\r\n );\r\n $rootScope.consentForUser = sessionStorageService.get(\r\n assetService.storageKeys.consentForUser,\r\n );\r\n\r\n //setting session storage for Notifications & Preferences Page\r\n sessionStorageService.set(assetService.storageKeys.preferenceFlag, true);\r\n\r\n if (\r\n _globalAccountInfo !== null &&\r\n _globalAccountInfo !== undefined &&\r\n (_globalAccountInfo.accountSelected.status === 'Closed' ||\r\n _globalAccountInfo.accountSelected.status === 'INACTIVE')\r\n ) {\r\n vm.careEnable = false;\r\n } else {\r\n vm.careEnable = true;\r\n }\r\n\r\n vm.impDetails = impersonationService.getImpDetails();\r\n\r\n switch (dashboardUserType) {\r\n case assetService.strings.NATIVE_USER:\r\n vm.nativeDashboard = true;\r\n break;\r\n case assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS:\r\n vm.isNonNativeWithAccounts = true;\r\n break;\r\n case assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS:\r\n vm.isNonNativeWithoutAccounts = true;\r\n _globalSelectedAccount = null;\r\n break;\r\n default:\r\n vm.nativeDashboard = true;\r\n }\r\n const userJurisdiction = $rootScope.jurisdiction;\r\n $rootScope.prepaidAdvantage = 'Not Eligible';\r\n if (_globalSelectedAccount) {\r\n if (_globalSelectedAccount.prepaid) {\r\n vm.isPrepaid = _globalSelectedAccount.prepaid;\r\n vm.nativeDashboard = false;\r\n vm.isNonNativeWithAccounts = false;\r\n vm.isNonNativeWithoutAccounts = false;\r\n $rootScope.prepaidAdvantage = 'Enrolled';\r\n } else {\r\n vm.roleData.experience = _globalSelectedAccount.experience;\r\n vm.isPrepaid = false;\r\n if (userJurisdiction === 'SC01' || userJurisdiction === 'SC02') {\r\n $rootScope.prepaidAdvantage = 'Eligible';\r\n }\r\n }\r\n vm.UMCLoaded =\r\n document.querySelectorAll('script[id=\"_cc-umc-modal.njhtml\"]').length >\r\n 0;\r\n vm.efiLoaded =\r\n document.querySelectorAll('script[id=\"_cc-efi-modal.njhtml\"]').length >\r\n 0;\r\n\r\n if (!$rootScope.consentForUser && vm.UMCLoaded && !vm.redirecting) {\r\n umcModalService.UMCReadConsent().then(\r\n result => {\r\n if (\r\n result &&\r\n !$rootScope.efiInterceptForUser &&\r\n vm.impDetails === null\r\n ) {\r\n umcModalService.getUMCLatestConsent().then(\r\n () => {\r\n vm.umcModalInstance = modalService.umcModal();\r\n vm.umcModalInstance.result.then(\r\n () => {\r\n // On success of UMC modal\r\n },\r\n () => {\r\n umcModalService.UMCUpdateConsent('IGN').then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors)\r\n $log.error(error);\r\n },\r\n );\r\n },\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else if (!$rootScope.efiInterceptForUser && vm.efiLoaded) {\r\n efiModalService.eligiblitycheck().then(response => {\r\n if (response) {\r\n vm.efiModal = modalService.efiInterceptModal();\r\n vm.efiModal.opened.then(() => {\r\n $timeout(() => {\r\n if ($(window).width() < 767) {\r\n document.getElementsByClassName(\r\n 'modal-dialog',\r\n )[3].style.width = `${$(window).width()}px`;\r\n }\r\n }, 1000);\r\n if (vm.impDetails == null) {\r\n efiModalService.updateEligibility().then(\r\n () => {\r\n // On Success of EFI Modal\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors)\r\n $log.error(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n vm.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n\r\n if (_globalSelectedAccount) {\r\n const paramData = {\r\n simpleFormat: true,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n businessPartner: _globalSelectedAccount.bpNumber,\r\n };\r\n\r\n getAccountEnrollmentEligibilityStatus(paramData);\r\n energyUsageWidthClass();\r\n setColumnClass();\r\n\r\n vm.primaryEmail = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n\r\n getEnrollmentStatusOfExtensionPlan({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n action:\r\n assetService.serviceActions.getEnrollmentOfExtensionPlan.DUEDATE,\r\n }),\r\n (vm.altId = $rootScope.altId);\r\n vm.alternateId = vm.altId.filter(\r\n item => item.AccountNum === _globalSelectedAccount.accountNum,\r\n );\r\n }\r\n\r\n setTimeout(() => {\r\n if (_globalSelectedAccount) {\r\n $rootScope.serviceType = 'Not Eligible';\r\n if (\r\n _globalSelectedAccount.isElectricMeter &&\r\n _globalSelectedAccount.isGasAccount\r\n ) {\r\n $rootScope.serviceType = 'ELECTRIC, GAS';\r\n } else if (_globalSelectedAccount.isElectricMeter) {\r\n $rootScope.serviceType = 'ELECTRIC';\r\n } else if (_globalSelectedAccount.isGasAccount) {\r\n $rootScope.serviceType = 'GAS';\r\n }\r\n\r\n $rootScope.AccountStat = vm.alternateId[0].AccountStat;\r\n $rootScope.AlternateID = vm.alternateId[0].AlternateAccountID;\r\n vm.webObject = {\r\n event: 'cc-web-service',\r\n NumberOfAccounts: $rootScope.numberOfAccount\r\n ? $rootScope.numberOfAccount\r\n : 'Not Eligible',\r\n AccountStatus: $rootScope.AccountStat\r\n ? $rootScope.AccountStat\r\n : 'Not Eligible',\r\n AlternateID: $rootScope.AlternateID\r\n ? $rootScope.AlternateID\r\n : 'Not Eligible',\r\n ServiceType: $rootScope.serviceType\r\n ? $rootScope.serviceType\r\n : 'Not Eligible',\r\n EBillDirect: $rootScope.EBillDirect\r\n ? $rootScope.EBillDirect\r\n : 'Not Eligible',\r\n Segment: 'Res',\r\n Jurisdiction: $rootScope.jurisdiction\r\n ? $rootScope.jurisdiction\r\n : 'Not Eligible',\r\n BudgetBilling: $rootScope.budgetBilling\r\n ? $rootScope.budgetBilling\r\n : 'Not Enrolled',\r\n BankDraft_AutoPay: $rootScope.bankDraft\r\n ? $rootScope.bankDraft\r\n : 'Not Eligible',\r\n EqualPaymentPlan_FixedBill: $rootScope.equalPaymentplan\r\n ? $rootScope.equalPaymentplan\r\n : 'Not Eligible',\r\n EBillDistributed: $rootScope.eBillDistributed\r\n ? $rootScope.eBillDistributed\r\n : 'Not Eligible',\r\n DPA_InstallmentPlans: $rootScope.dpa\r\n ? $rootScope.dpa\r\n : 'Not Eligible',\r\n DueDateExtension: $rootScope.dueDateExtension\r\n ? $rootScope.dueDateExtension\r\n : 'Not Eligible',\r\n DisconnectExtension: $rootScope.disconnectExtension\r\n ? $rootScope.disconnectExtension\r\n : 'Not Eligible',\r\n CurrentDueDate: $rootScope.currentDuedate\r\n ? $rootScope.currentDuedate\r\n : 'Not Eligible',\r\n PickYourDueDate: $rootScope.pickyourDueDate\r\n ? $rootScope.pickyourDueDate\r\n : 'Not Eligible',\r\n Impersonation: impDetails == null ? 'False' : 'True',\r\n PrepaidAdvantage: $rootScope.prepaidAdvantage\r\n ? $rootScope.prepaidAdvantage\r\n : 'Not Eligible',\r\n RateComparison: $rootScope.rateComparison,\r\n };\r\n sessionStorageService.set(assetService.strings.WEBOBJECT, vm.webObject);\r\n $rootScope.webservicePush(vm.webObject);\r\n }\r\n }, 8000);\r\n }\r\n}\r\n","app.controller('CCPrepaidAccountSummary', CCPrepaidAccountSummary);\r\nCCPrepaidAccountSummary.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'getAccountBalanceForPrepaid',\r\n 'commonService',\r\n '$filter',\r\n '$sce',\r\n 'getEligibilityForAutoReloadService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'componentStateHandler',\r\n 'commongaTaggingService',\r\n '$rootScope',\r\n '$q',\r\n 'apiService',\r\n];\r\n\r\nfunction CCPrepaidAccountSummary(\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n getAccountBalanceForPrepaid,\r\n commonService,\r\n $filter,\r\n $sce,\r\n getEligibilityForAutoReloadService,\r\n getAccountBalanceForRegularAccountService,\r\n componentStateHandler,\r\n commongaTaggingService,\r\n $rootScope,\r\n $q,\r\n apiService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n let prepaidDetails = null;\r\n let accountBalanceDetails = null;\r\n let eligibilityForAutoReload = null;\r\n let billingInfo = null;\r\n const autoReloadEligibleText = 'ELIGIBLE';\r\n const closedAccountTooltip = 'This account is closed.';\r\n vm.cashOnlyStatus = null;\r\n vm.autoReloadCashOnly = false;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.form = {\r\n accountSummary: null,\r\n daysLeft: null,\r\n deferredBalance: null,\r\n autoreloadFlag: false,\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.isMobileView = window.innerWidth <= 705;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n /**\r\n * Function Definitions\r\n */\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function getPrepaidDetails(params) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(\r\n result => {\r\n prepaidDetails = {\r\n ...result.d.PrepaidToBP.results[0].BPToCA.results[0],\r\n };\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalancePrepaid(params) {\r\n return getAccountBalanceForPrepaid.sitecore\r\n .getAccountBalanceForPrepaid(params)\r\n .then(\r\n result => {\r\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function getEligibilityForAutoReload(params) {\r\n return getEligibilityForAutoReloadService.sitecore\r\n .getEligibilityForAutoReload(params)\r\n .then(\r\n result => {\r\n eligibilityForAutoReload = result.d.AREligibility_NAV;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalanceRegular(params) {\r\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\r\n const result = $rootScope.accountBalanceResult;\r\n billingInfoRes = result.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber ==\r\n _globalAccountInfo.accountSelected.accountNum,\r\n );\r\n billingInfo = billingInfoRes[0];\r\n sessionStorageService.set(\r\n 'accountBalanceRes',\r\n $rootScope.accountBalanceResult,\r\n );\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(params)\r\n .then(\r\n result => {\r\n billingInfoRes = result.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber ==\r\n _globalAccountInfo.accountSelected.accountNum,\r\n );\r\n billingInfo = billingInfoRes[0];\r\n sessionStorageService.set('accountBalanceRes', result);\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n vm.form.autoreloadFlag =\r\n prepaidDetails.CAToAutoReload.results[0].AutoReloadFlag;\r\n vm.form.deferredBalance = accountBalanceDetails.DeferredBalance;\r\n vm.form.accountBalance = accountBalanceDetails.PrepaidBalance; // billingInfo.totalDueDlrs || 0;\r\n vm.form.isEnrolledInAutoReload = vm.form.autoreloadFlag !== '';\r\n vm.form.daysLeft = prepaidDetails.EstimatedDaysRemaining;\r\n\r\n vm.form.showTurnOnAutoReload = false;\r\n vm.form.showManageAutoReload = false;\r\n vm.form.showAddFunds = false;\r\n\r\n vm.form.showAddFunds = billingInfo.cashOnly === 'F';\r\n let isEligibleForAutoReload =\r\n eligibilityForAutoReload.Eligible === autoReloadEligibleText;\r\n if (isEligibleForAutoReload) {\r\n vm.form.showTurnOnAutoReload = !vm.form.isEnrolledInAutoReload;\r\n }\r\n\r\n vm.form.showManageAutoReload = vm.form.isEnrolledInAutoReload;\r\n vm.form.showDeferredBalance = true;\r\n if (parseFloat(vm.form.deferredBalance) <= 0) {\r\n vm.form.showDeferredBalance = false;\r\n }\r\n\r\n if (vm.form.daysLeft != '') {\r\n //format days left\r\n vm.form.daysLeft = parseInt(vm.form.daysLeft);\r\n if (vm.form.daysLeft < 0) {\r\n vm.form.daysLeft = 0;\r\n }\r\n }\r\n\r\n vm.showRemainingDaysTooltip = false;\r\n vm.remainingDaysTooltip = '';\r\n const messageList = billingInfo.messageList;\r\n if (messageList.length > 0) {\r\n const messageInfo = messageList[0];\r\n if (\r\n messageInfo.messageCode !== 'PO' &&\r\n messageInfo.messagePriority === 2000\r\n ) {\r\n vm.showRemainingDaysTooltip = true;\r\n vm.remainingDaysTooltip = messageInfo.message;\r\n }\r\n }\r\n\r\n //for closed account\r\n if (_globalAccountInfo.accountSelected.status === 'Closed') {\r\n vm.form.showManageAutoReload = false;\r\n vm.form.showTurnOnAutoReload = false;\r\n vm.form.showAddFunds = false;\r\n }\r\n\r\n //for inactive account\r\n zeroBalInd = sessionStorageService.get(assetService.storageKeys.zeroBalInd);\r\n if (\r\n _globalAccountInfo.accountSelected.prepaid === true &&\r\n _globalAccountInfo.accountSelected.AccountStatus === 'INACTIVE' &&\r\n zeroBalInd !== 'X'\r\n ) {\r\n vm.form.accountBalance = billingInfo.totalDueDlrs;\r\n }\r\n\r\n vm.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n amount = Number.parseFloat(amount) || 0;\r\n const formattedAmount = String(amount).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? formattedAmount[1] + '0'\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n let formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n\r\n let lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n formattedIntegerAmount = formattedIntegerAmount.replace('-', '');\r\n }\r\n return $sce.trustAsHtml(\r\n `${lessThanZero}\\$${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function dashboardLoaded() {\r\n const header = assetService.apiHeaders.authorization;\r\n const targetEndpointUrl = '/form/MyAccountDashboard/DashboardLoaded';\r\n const requestPayload = '';\r\n\r\n return $q((resolve, reject) => {\r\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(\r\n result => {\r\n handleRedirect();\r\n },\r\n error => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n }\r\n\r\n function handleRedirect() {\r\n const params = new URLSearchParams(window.location.search);\r\n const value = params.get('redirect');\r\n const dirtyHtml = value;\r\n const sanitizeValue = (value !== null && value !== undefined) ? sanitizeHTML(dirtyHtml) : value; \r\n \r\n if (sanitizeValue) {\r\n setTimeout(() => {\r\n window.location.href = sanitizeValue;\r\n }, '1000');\r\n }\r\n }\r\n\r\n function sanitizeHTML(input) { \r\n var div = document.createElement('div'); \r\n div.textContent = input; // Strips HTML tags \r\n return div.innerHTML; \r\n } \r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n\r\n commonService\r\n .executePromises([\r\n getPrepaidDetails({\r\n businessPartnerId: _globalAccountInfo.accountSelected.primaryBp,\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n bankDetail: false,\r\n }),\r\n getAccountBalancePrepaid({\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n }),\r\n getEligibilityForAutoReload({\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n action: assetService.events.GET_ELIG,\r\n }),\r\n getAccountBalanceRegular({\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n _globalAccountInfo.accountSelected.accountNum,\r\n zipCode: _globalAccountInfo.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n vm.cashOnlyStatus = billingInfo.cashOnly;\r\n if (vm.cashOnlyStatus == 'T') {\r\n vm.autoReloadCashOnly = true;\r\n } else {\r\n vm.autoReloadCashOnly = false;\r\n }\r\n setModels();\r\n dashboardLoaded();\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller('CCWidgetMB', CCWidgetMB);\r\nCCWidgetMB.$inject = [\r\n 'assetService',\r\n '$scope',\r\n 'getProductDetailsService',\r\n 'sessionStorageService',\r\n 'commonService',\r\n 'componentStateHandler'\r\n];\r\n\r\nfunction CCWidgetMB(\r\n assetService,\r\n $scope,\r\n getProductDetailsService,\r\n sessionStorageService,\r\n commonService,\r\n componentStateHandler\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.productsCodes = null;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function getProductDetails(productCode) {\r\n return getProductDetailsService.sitecore.getProductDetails({\r\n productCode,\r\n }).then(result => ({\r\n productCode: result.code,\r\n name: result.name,\r\n description: result.description,\r\n }), (error) => {\r\n\t componentStateHandler.failedStateDashboard(vm);\r\n });\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n const productCodesArray = vm.productsCodes.split(',');\r\n const promises = [];\r\n _.forEach(productCodesArray, productCode => promises.push(getProductDetails(productCode)));\r\n return commonService.executePromises(promises).then((results) => {\r\n vm.products = results;\r\n vm.loadingSpinner = false;\r\n\t componentStateHandler.showComponent(vm);\r\n });\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller('DashboardNotifications', DashboardNotifications);\r\nDashboardNotifications.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n 'getAccountConditionService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'componentStateHandler'\r\n];\r\n\r\nfunction DashboardNotifications(\r\n $scope,\r\n $rootScope,\r\n getAccountConditionService,\r\n assetService,\r\n sessionStorageService,\r\n componentStateHandler\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let displayedNotifications = 0;\r\n let _globalAccountInfo = null;\r\n const remainingNotifications = [];\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n vm.paymentArrangement = false;\r\n vm.serviceOrder = false;\r\n vm.phoneNumber = false;\r\n vm.outage = false;\r\n vm.paymentHistory = false;\r\n vm.delincuency = false;\r\n\r\n vm.manageAccount = true;\r\n vm.energyUsage = true;\r\n vm.cart = true;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.hideShowNext = hideShowNext;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function hideShowNext(selected) {\r\n /* Hide Selected Notification */\r\n if (selected === 'paymentArrangement') {\r\n vm.paymentArrangement = false;\r\n } else if (selected === 'serviceOrder') {\r\n vm.serviceOrder = false;\r\n } else if (selected === 'phoneNumber') {\r\n vm.phoneNumber = false;\r\n } else if (selected === 'outage') {\r\n vm.outage = false;\r\n } else if (selected === 'paymentHistory') {\r\n vm.paymentHistory = false;\r\n } else if (selected === 'delincuency') {\r\n vm.delincuency = false;\r\n } else if (selected === 'manageAccount') {\r\n vm.manageAccount = false;\r\n } else if (selected === 'energyUsage') {\r\n vm.energyUsage = false;\r\n } else if (selected === 'cart') {\r\n vm.cart = false;\r\n }\r\n populateNext();\r\n }\r\n\r\n /* Show Next Notification */\r\n function populateNext() {\r\n if (remainingNotifications.includes('history')) {\r\n vm.paymentArrangement = true;\r\n remainingNotifications.splice('history', 1);\r\n } else if (remainingNotifications.includes('delincuency')) {\r\n vm.delincuency = true;\r\n remainingNotifications.splice('delincuency', 1);\r\n } else if (remainingNotifications.includes('manage')) {\r\n vm.manageAccount = true;\r\n remainingNotifications.splice('manage', 1);\r\n } else if (remainingNotifications.includes('energy')) {\r\n vm.energyUsage = true;\r\n remainingNotifications.splice('energy', 1);\r\n } else if (remainingNotifications.includes('cart')) {\r\n vm.cart = true;\r\n remainingNotifications.splice('cart', 1);\r\n }\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n const params = {\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n businessPartner: _globalAccountInfo.primaryBp,\r\n };\r\n\r\n getAccountConditionService.sitecore.accountCondition(params).then((result) => {\r\n const notifications = result.ReturnCodes;\r\n const notificationsPriority = assetService.dashboardNotifications.priorityMatch;\r\n\r\n _.forEach(notifications, (notification) => {\r\n const notificationsCode = notification.ReturnCode;\r\n const notificationsData = notification.ContractAccounts.Response[0];\r\n\r\n if (notificationsCode === notificationsPriority.paymentArrangement.servicePriority && notificationsData != null) {\r\n displayedNotifications += 1;\r\n vm.paymentArrangement = true;\r\n } else if (notificationsCode === notificationsPriority.serviceOrder.servicePriority && notificationsData != null) {\r\n displayedNotifications += 1;\r\n vm.serviceOrder = true;\r\n } else if (notificationsCode === notificationsPriority.phoneNumber.servicePriority && notificationsData != null) {\r\n displayedNotifications += 1;\r\n vm.phoneNumber = true;\r\n } else if (notificationsCode === notificationsPriority.outage.servicePriority && notificationsData != null) {\r\n displayedNotifications += 1;\r\n vm.outage = true;\r\n }\r\n });\r\n\r\n _.forEach(notifications, (notification) => {\r\n const notificationsCode = notification.ReturnCode;\r\n const notificationsData = notification.ContractAccounts.Response[0];\r\n\r\n if (notificationsCode === notificationsPriority.paymentHistory.servicePriority && notificationsData != null) {\r\n if (displayedNotifications < 4) {\r\n displayedNotifications += 1;\r\n vm.paymentHistory = true;\r\n } else {\r\n remainingNotifications.push('history');\r\n }\r\n }\r\n });\r\n\r\n _.forEach(notifications, (notification) => {\r\n const notificationsCode = notification.ReturnCode;\r\n const notificationsData = notification.ContractAccounts.Response[0];\r\n\r\n if (notificationsCode === notificationsPriority.delincuency.servicePriority && notificationsData != null) {\r\n if (displayedNotifications < 4) {\r\n displayedNotifications += 1;\r\n vm.delincuency = true;\r\n } else {\r\n remainingNotifications.push('delincuency');\r\n }\r\n }\r\n });\r\n\r\n if (displayedNotifications === 2) {\r\n remainingNotifications.push('cart');\r\n vm.cart = false;\r\n } else if (displayedNotifications === 3) {\r\n remainingNotifications.push('energy');\r\n remainingNotifications.push('cart');\r\n vm.energyUsage = false;\r\n vm.cart = false;\r\n } else if (displayedNotifications >= 4) {\r\n remainingNotifications.push('manage');\r\n remainingNotifications.push('energy');\r\n remainingNotifications.push('cart');\r\n vm.manageAccount = false;\r\n vm.energyUsage = false;\r\n vm.cart = false;\r\n }\r\n\r\n componentStateHandler.showComponent(vm);\r\n },\r\n (error) => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n });\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n $scope.init = function () {\r\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n };\r\n}\r\n","app.controller('WidgetBPPController', WidgetBPPController);\r\nWidgetBPPController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n '$rootScope',\r\n 'componentStateHandler',\r\n 'getInvoiceListService',\r\n 'getPaymentHistoryService',\r\n 'checkEligibilityForPrepaidService',\r\n 'prepaidService',\r\n];\r\n\r\nfunction WidgetBPPController(\r\n $log,\r\n $scope,\r\n getAccountEnrollmentEligibilityStatusService,\r\n getAccountBalanceForRegularAccountService,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n broadcastService,\r\n $rootScope,\r\n componentStateHandler,\r\n getInvoiceListService,\r\n getPaymentHistoryService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n /**\r\n * Global Vars\r\n */\r\n\r\n vm.changueDataTable = [\r\n {\r\n comparison: [true, false],\r\n changes: ['Enrolled', 'Not Enrolled'],\r\n key: 'status',\r\n },\r\n ];\r\n vm.dataTable = [];\r\n vm.eligibleproducts = [];\r\n vm.enrolled = 'ENROLLED';\r\n vm.eligible = 'ELIGIBLE';\r\n vm.headerKey = ['name', 'status'];\r\n vm.iconTable = [\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/table/approve.svg',\r\n value: true,\r\n tableHeaderkey: 'status',\r\n column: 1,\r\n all: false,\r\n },\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/table/deny.svg',\r\n value: false,\r\n tableHeaderkey: 'status',\r\n column: 1,\r\n all: false,\r\n },\r\n\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/billing/pick.svg',\r\n value: 'Auto Pay',\r\n tableHeaderkey: 'name',\r\n column: 0,\r\n all: false,\r\n },\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/billing/budget.svg',\r\n value: 'Budget Billing',\r\n tableHeaderkey: 'name',\r\n column: 0,\r\n all: false,\r\n },\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/billing/duedate.svg',\r\n value: 'Pick Your Due Date',\r\n tableHeaderkey: 'name',\r\n column: 0,\r\n all: false,\r\n },\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/icons/power-meter.png',\r\n value: 'Duke Energy Prepaid Advantage',\r\n tableHeaderkey: 'name',\r\n column: 0,\r\n all: false,\r\n },\r\n {\r\n tipe: 'icon',\r\n icon: 'Assets/img/icons/scales.png',\r\n value: 'Fixed Bill',\r\n tableHeaderkey: 'name',\r\n column: 0,\r\n all: false,\r\n },\r\n ];\r\n vm.loadingSpinner = true;\r\n vm.programs = [];\r\n vm.ineligible = 'INELIGIBLE';\r\n vm.isBillGenerated = false;\r\n vm.hideBudBil = false;\r\n vm.showBPError = false;\r\n vm.checkTogglingStatus = checkTogglingStatus;\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.dashboardLoad, () => {\r\n // widget loader\r\n if (!vm.roleBase) {\r\n vm.roleBase = sessionStorageService.get(\r\n assetService.storageKeys.roleBase,\r\n );\r\n }\r\n });\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n function setModels() {\r\n vm.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n }\r\n\r\n function checkTogglingStatus() {\r\n let bpTable = angular.element('.CC-Widget-BBP .CC-basic-table__row');\r\n if (\r\n bpTable &&\r\n bpTable.length == 1 &&\r\n angular.element('.CC-Widget-BBP .CC-basic-table__column__container') &&\r\n angular.element('.CC-Widget-BBP .CC-basic-table__column__container')[0]\r\n .innerText == ''\r\n ) {\r\n angular\r\n .element('div.CC-Widget-BBP')\r\n .closest('.CC-Widget')[0].style.visibility = 'hidden';\r\n return false;\r\n }\r\n\r\n angular.forEach(bpTable, row => {\r\n if (row.cells[0].innerText == '') {\r\n row.style.display = 'none';\r\n }\r\n });\r\n return true;\r\n }\r\n\r\n function load() {\r\n vm.loadingSpinner = true;\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n let moveInDate = new Date(\r\n _globalAccountInfo.accountSelected.ActiveDate,\r\n ).getTime();\r\n let currentDate = new Date().getTime();\r\n vm.hideBudBil = moveInDate >= currentDate;\r\n const params = {\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n businessPartner: _globalAccountInfo.primaryBp,\r\n };\r\n\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n if (!vm.roleBase) {\r\n broadcastService.dashboardWidget();\r\n }\r\n\r\n const dataObj = {\r\n contractAccountId: params.contractAccountId,\r\n businessPartner: params.businessPartner,\r\n invoiceId: null,\r\n EmailID: $rootScope.currentUserEmailId,\r\n userId: $rootScope.currentUserCdpId,\r\n requestedBy: $rootScope.currentUserEmailId, //Get RequestedBy Value\r\n };\r\n\r\n commonService\r\n .executePromises([\r\n getAccountEnrollmentEligibilityStatus(params),\r\n getInvoiceList(params),\r\n getAccountBalance({\r\n accountList: [\r\n {\r\n contractAccountNumber: params.contractAccountId,\r\n zipCode: _globalAccountInfo.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n () => {\r\n setModels();\r\n },\r\n () => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n\r\n function getAccountEnrollmentEligibilityStatus(data) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.eligibilityStatusResult) {\r\n const result = $rootScope.eligibilityStatusResult;\r\n setEligibilityStatusModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(data)\r\n .then(\r\n result => {\r\n setEligibilityStatusModel(result);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setEligibilityStatusModel(result) {\r\n if (result) {\r\n vm.programs = [];\r\n vm.statusValue = _.filter(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => item.ProgName === 'BUDBIL',\r\n );\r\n vm.statusAutopay = _.filter(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => item.ProgName === 'DIRDEB',\r\n );\r\n vm.statusFixedpay = _.filter(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => item.ProgName === 'FIXBIL',\r\n );\r\n vm.statusDueDate = _.filter(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => item.ProgName === 'PYODDA',\r\n );\r\n $rootScope.budgetBilling = vm.statusValue[0].EligibilityStatus;\r\n if (\r\n $rootScope.budgetBilling &&\r\n $rootScope.budgetBilling.toLowerCase() === 'ineligible'\r\n ) {\r\n $rootScope.budgetBilling = 'Not Eligible';\r\n }\r\n $rootScope.bankDraft = vm.statusAutopay[0].EligibilityStatus;\r\n if (\r\n $rootScope.bankDraft &&\r\n $rootScope.bankDraft.toLowerCase() === 'ineligible'\r\n ) {\r\n $rootScope.bankDraft = 'Not Eligible';\r\n }\r\n $rootScope.equalPaymentplan = vm.statusFixedpay[0].EligibilityStatus;\r\n if (\r\n $rootScope.equalPaymentplan &&\r\n $rootScope.equalPaymentplan.toLowerCase() === 'ineligible'\r\n ) {\r\n $rootScope.equalPaymentplan = 'Not Eligible';\r\n }\r\n $rootScope.pickyourDueDate = vm.statusDueDate[0].EligibilityStatus;\r\n if (\r\n $rootScope.pickyourDueDate &&\r\n $rootScope.pickyourDueDate.toLowerCase() === 'ineligible'\r\n ) {\r\n $rootScope.pickyourDueDate = 'Not Eligible';\r\n }\r\n if (\r\n vm.statusValue[0].EligibilityStatus == 'Ineligible' &&\r\n vm.statusAutopay[0].EligibilityStatus == 'Ineligible' &&\r\n vm.statusFixedpay[0].EligibilityStatus == 'Ineligible' &&\r\n vm.statusDueDate[0].EligibilityStatus == 'Ineligible'\r\n ) {\r\n vm.showBPError = true;\r\n } else {\r\n vm.showBPError = false;\r\n }\r\n vm.programs = _.filter(\r\n _.map(result.d.Inp_Prog.results[0].Prog_Res.results, item => ({\r\n name: assetService.billingAndPaymentPrograms[item.ProgName],\r\n status: item.EligibilityStatus.toUpperCase(),\r\n code: item.ProgName.toUpperCase(),\r\n planType: setProgramId(item),\r\n PyddaDate:\r\n item.PyddaDate.length < 2\r\n ? moment\r\n .utc(new Date('2020-03-' + `0${item.PyddaDate}`))\r\n .format('Do')\r\n : moment\r\n .utc(new Date('2020-03-' + item.PyddaDate))\r\n .format('Do'),\r\n enrolledDate: item.EnrolledDate\r\n ? moment(item.EnrolledDate)\r\n .utc()\r\n .format('MM/DD/YYYY')\r\n : 'XX/XX/XXXX',\r\n })),\r\n item =>\r\n item.status !== vm.ineligible &&\r\n !(item.code == 'BUDBIL' && vm.hideBudBil),\r\n );\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n }\r\n\r\n function setProgramId(data) {\r\n let programId = '';\r\n if (data.ProgName.toUpperCase() === 'BUDBIL') {\r\n programId =\r\n data.ProgramId === 'BBPQ'\r\n ? 'Quarterly'\r\n : data.ProgramId === 'BBPA'\r\n ? 'Annual'\r\n : '';\r\n }\r\n return programId;\r\n }\r\n\r\n function getInvoiceList(params) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.invoiceListResult) {\r\n const result = $rootScope.invoiceListResult;\r\n setInvoiceListModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getInvoiceListService.sitecore\r\n .getInvoiceList(params)\r\n .then(result => {\r\n if (result) {\r\n setInvoiceListModel(result);\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n });\r\n }\r\n\r\n function setInvoiceListModel(result) {\r\n const data = result.d.Inp_Req.results[0].Account_Invoice.results;\r\n const sortedData = _.orderBy(data, ['BillEndDateStr'], ['desc']);\r\n const fixedBillAmt = _.find(sortedData, element => {\r\n let billDate = new Date(\r\n moment(element.BillEndDateStr)\r\n .utc()\r\n .format('MM/DD/YYYY'),\r\n );\r\n let enrollDate = new Date(\r\n moment(vm.statusFixedpay[0].EnrolledDateStr)\r\n .utc()\r\n .format('MM/DD/YYYY'),\r\n );\r\n if (billDate > enrollDate && parseInt(element.FBAmount) > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n fixedBillAmt\r\n ? (vm.fixedBillamount = parseFloat(fixedBillAmt.FBAmount).toFixed(2))\r\n : (vm.fixedBillamount = '');\r\n\r\n const budgetBillAmt = _.find(sortedData, element => {\r\n billDate = new Date(\r\n moment(element.BillEndDateStr)\r\n .utc()\r\n .format('MM/DD/YYYY'),\r\n );\r\n enrollDate = new Date(\r\n moment(vm.statusValue[0].EnrolledDateStr)\r\n .utc()\r\n .format('MM/DD/YYYY'),\r\n );\r\n if (billDate > enrollDate && parseInt(element.BBAmount) > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n budgetBillAmt\r\n ? (vm.budgetBillAmount = parseFloat(budgetBillAmt.BBAmount).toFixed(2))\r\n : (vm.budgetBillAmount = '');\r\n }\r\n\r\n function getAccountBalance(data) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\r\n const result = $rootScope.accountBalanceResult;\r\n setAccountBalanceModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n setAccountBalanceModel(result);\r\n },\r\n () => componentStateHandler.failedStateDashboard(vm),\r\n );\r\n }\r\n\r\n function setAccountBalanceModel(result) {\r\n if (result) {\r\n vm.paynowStatus =\r\n result.getAccountAndBillingInfoResList[0].cashOnly === 'T' ||\r\n result.getAccountAndBillingInfoResList[0].noCheckDraftInd === 'T'\r\n ? true\r\n : false;\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n $scope.init = function() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n load();\r\n }\r\n };\r\n}\r\n","app.controller('WidgetDueController', WidgetDueController);\r\nWidgetDueController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'invoiceImageService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getInvoiceListService',\r\n 'getPaymentHistoryService',\r\n 'commonService',\r\n '$filter',\r\n '$sce',\r\n '$rootScope',\r\n 'componentStateHandler',\r\n 'dateHelperService',\r\n 'commongaTaggingService',\r\n 'errorHandlingService',\r\n '$q',\r\n 'apiService',\r\n];\r\n\r\nfunction WidgetDueController(\r\n $scope,\r\n assetService,\r\n invoiceImageService,\r\n modalService,\r\n sessionStorageService,\r\n getAccountBalanceForRegularAccountService,\r\n getInvoiceListService,\r\n getPaymentHistoryService,\r\n commonService,\r\n $filter,\r\n $sce,\r\n $rootScope,\r\n componentStateHandler,\r\n dateHelperService,\r\n commongaTaggingService,\r\n errorHandlingService,\r\n $q,\r\n apiService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n vm.sortAsc = true;\r\n vm.dateToSort = assetService.strings.SORTBY_DATEFORSORT;\r\n const _dueDate = assetService.strings.SORTBY_DATEFORSORT;\r\n let _invoicesData = null;\r\n let _invoicesDataSorted = null;\r\n let _globalAccountInfo = {};\r\n const _paramObj = {};\r\n let _paymentsData = null;\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n let pmCount = 0;\r\n let functionalityHeadLine = '';\r\n let windowReference = null;\r\n let isSafari =\r\n navigator.vendor.match(/apple/i) &&\r\n !navigator.userAgent.match(/crios/i) &&\r\n !navigator.userAgent.match(/fxios/i) &&\r\n !navigator.userAgent.match(/Opera|OPT\\//);\r\n /**\r\n * Global Vars\r\n */\r\n vm.accountDue = {};\r\n vm.activateDetailsVar = [];\r\n vm.bills = null;\r\n vm.data = {};\r\n vm.toggleBPInfoVar = false;\r\n vm.loadingSpinner = true;\r\n vm.displayCPIMessage = false;\r\n vm.message = null;\r\n vm.currentUser = {};\r\n vm.showError = showError;\r\n vm.activeError = [];\r\n vm.roleBase = {};\r\n vm.latestScheduledPayment = {};\r\n vm.guid = '';\r\n vm.emptyState = false;\r\n vm.closedOrInactive = false;\r\n const paymentDescription = {};\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.getDocument = getDocument;\r\n vm.payNow = payNow;\r\n vm.toggleBPInfo = toggleBPInfo;\r\n vm.init = init;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.hideAccount = hideAccount;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.onCLickBPA = onCLickBPA;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n /* Function Definitions */\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid || '',\r\n });\r\n };\r\n\r\n function virtualPagePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function onCLickBPA(action, subAction) {\r\n const accountStatus = vm.closedOrInactive\r\n ? 'closed-account'\r\n : 'open-account';\r\n pushDL(\r\n 'my_account',\r\n `${$rootScope.dataLayerFormat(action)}-|-${subAction}`,\r\n `billing-payment-activity-|-${accountStatus}`,\r\n );\r\n }\r\n\r\n function pdfNotFoundAttibutePush() {\r\n if (functionalityHeadLine) {\r\n functionalityHeadLine = $('#hdn-dd').attr('subhead2');\r\n } else {\r\n functionalityHeadLine = $('#hdn-dd').attr('Headline');\r\n }\r\n attributePush(\r\n 'workFlow: error ' + $('#hdn-dd').attr('labelPDF'),\r\n 'headline:' + $('#hdn-dd').attr('businessFunction'),\r\n 'subheadline:' + functionalityHeadLine,\r\n 'buttonText:' + 'not-set',\r\n 'addedSpec:' + assetService.sitecoreEndpoints.InvoiceImage,\r\n 'addedEvent:' + $('#hdn-dd').attr('eventActionPDF'),\r\n );\r\n virtualPagePush(\r\n $('#hdn-dd').attr('businessFunction'),\r\n $('#hdn-dd').attr('businessFunction'),\r\n $('#hdn-dd').attr('labelPDF'),\r\n 'error',\r\n 'not set',\r\n );\r\n }\r\n\r\n function toggleBPInfo() {\r\n vm.toggleBPInfoVar = !vm.toggleBPInfoVar;\r\n }\r\n\r\n function showError(value, rule) {\r\n if (rule !== 0) {\r\n vm.activeError[value] = true;\r\n } else {\r\n for (let index = 0; index < vm.activeError.length; index++) {\r\n vm.activeError[index] = false;\r\n }\r\n }\r\n }\r\n\r\n function hideAccount(value) {\r\n let convertedValue = value;\r\n if (convertedValue && !isNaN(convertedValue)) {\r\n const stringLength = convertedValue.length,\r\n visibleDigits = 4;\r\n if (stringLength > visibleDigits) {\r\n convertedValue = convertedValue.slice(-visibleDigits);\r\n }\r\n convertedValue = `*****${convertedValue}`;\r\n }\r\n return convertedValue;\r\n }\r\n\r\n function setModels(scheduledPayment) {\r\n vm.bills = _.orderBy(_invoicesData, [_dueDate], ['desc']);\r\n vm.latestScheduledPayment = scheduledPayment;\r\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\r\n if (vm.data.dueDate && vm.data.dueDate.toString().length > 7) {\r\n const updt = vm.data.dueDate\r\n .toString()\r\n .replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/, '$2/$3/$1');\r\n const newDate = new Date(moment(updt));\r\n vm.data.dueDate = newDate.toLocaleDateString('en', options);\r\n } else {\r\n vm.data.dueDate = '';\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.dashboard.dueData,\r\n vm.data,\r\n );\r\n componentStateHandler.showComponent(vm);\r\n }\r\n\r\n function getAccountBalance(data) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\r\n const result = $rootScope.accountBalanceResult;\r\n setAccountBalanceModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n setAccountBalanceModel(result);\r\n },\r\n () => componentStateHandler.failedStateDashboard(vm),\r\n );\r\n }\r\n\r\n function setAccountBalanceModel(result) {\r\n if (result) {\r\n let accountSelected = result.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber ==\r\n _globalAccountInfo.accountSelected.accountNum,\r\n );\r\n zeroBalInd = sessionStorageService.get(\r\n assetService.storageKeys.zeroBalInd,\r\n );\r\n const infoResList = accountSelected[0];\r\n $rootScope.currentDuedate = infoResList.currentDueDate;\r\n var msgPriority = infoResList.messageList[0].messagePriority;\r\n vm.paynowStatus = infoResList.cashOnly === 'T' ? false : true;\r\n vm.closedAccount =\r\n _globalAccountInfo.accountSelected.status === 'Closed' ||\r\n (_globalAccountInfo.accountSelected.status === 'INACTIVE' &&\r\n zeroBalInd);\r\n vm.closedOrInactive = !!(\r\n _globalAccountInfo.accountSelected.status === 'Closed' ||\r\n _globalAccountInfo.accountSelected.status === 'INACTIVE'\r\n );\r\n vm.roleBase = sessionStorageService.get(\r\n assetService.storageKeys.roleBase,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountBalRegSession,\r\n infoResList,\r\n );\r\n const messageList = infoResList.messageList;\r\n if (\r\n messageList.length > 0 &&\r\n messageList[0].messageCode !== '80 ' &&\r\n messageList[0].messageCode !== 'PO' &&\r\n msgPriority === 2000 &&\r\n msgPriority !== null &&\r\n msgPriority !== ''\r\n ) {\r\n const response = _.map(messageList, msg => ({\r\n displayCPIMessage: true,\r\n message: msg.message,\r\n }));\r\n vm.displayCPIMessage = response[0].displayCPIMessage;\r\n vm.message = response[0].message;\r\n } else {\r\n vm.displayCPIMessage = false;\r\n }\r\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\r\n const dateToDisplay = infoResList.currentDueDate\r\n ? infoResList.currentDueDate\r\n : infoResList.installmentDueDate;\r\n const parsedDate = dateToDisplay\r\n ? dateHelperService.parseSimpleDate(String(dateToDisplay))\r\n : '';\r\n const date = parsedDate\r\n ? new Date(`${parsedDate.month}/${parsedDate.day}/${parsedDate.year}`)\r\n : '';\r\n vm.data.dueDate = date ? date.toLocaleDateString('en', options) : '';\r\n vm.data.dueAmmount = infoResList.totalDueDlrs || 0;\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n }\r\n\r\n function showPDFModal() {\r\n pdfNotFoundAttibutePush();\r\n modalService.pdfNotFound();\r\n }\r\n\r\n function getDocument(item) {\r\n if (isSafari) {\r\n windowReference = window.open();\r\n windowReference.document.body.innerHTML = 'Please wait...';\r\n }\r\n functionalityHeadLine = item;\r\n let invoiceId = '';\r\n let imageAvailable = '';\r\n if (!item) {\r\n invoiceId = vm.bills[0].itemId;\r\n imageAvailable = vm.bills[0].isImageAvailable;\r\n } else {\r\n invoiceId = item.itemId;\r\n imageAvailable = item.isImageAvailable;\r\n }\r\n paramObj = {\r\n documentNumber: invoiceId,\r\n };\r\n return invoiceImageService.sitecore.invoceImage(paramObj).then(\r\n result => {\r\n if (\r\n result &&\r\n result.MessageReply &&\r\n result.MessageReply.replyCode &&\r\n result.MessageReply.replyCode != ''\r\n ) {\r\n const hexValue = result.MessageReply.replyCode;\r\n if (hexValue && imageAvailable) {\r\n const base64Value = hexToBase64(hexValue);\r\n function hexToBase64(str) {\r\n return btoa(\r\n str\r\n .match(/\\w{2}/g)\r\n .map(function(a) {\r\n return String.fromCharCode(parseInt(a, 16));\r\n })\r\n .join(''),\r\n );\r\n }\r\n const byteCharacters = atob(base64Value);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const file = new Blob([byteArray], { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n viewBillAttributePush();\r\n if (isSafari) {\r\n windowReference.location = fileURL;\r\n } else {\r\n window.open(fileURL);\r\n }\r\n }\r\n } else {\r\n if (isSafari) {\r\n windowReference.close();\r\n }\r\n showPDFModal();\r\n }\r\n },\r\n () => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function viewBillAttributePush() {\r\n if (functionalityHeadLine) {\r\n functionalityHeadLine = $('#hdn-dd').attr('subhead2');\r\n } else {\r\n functionalityHeadLine = $('#hdn-dd').attr('Headline');\r\n }\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + functionalityHeadLine,\r\n 'buttonText:' + $('#hdn-dd').attr('labelPDF'),\r\n );\r\n }\r\n\r\n function getInvoices(paramData) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.invoiceListResult) {\r\n const result = $rootScope.invoiceListResult;\r\n setInvoiceListModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getInvoiceListService.sitecore.getInvoiceList(paramData).then(\r\n result => {\r\n setInvoiceListModel(result);\r\n },\r\n () => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function setInvoiceListModel(result) {\r\n if (result) {\r\n _invoicesData = _.map(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n invoice => ({\r\n itemId: invoice.InvArchieveId,\r\n dateForSort: invoice.InvDateStr,\r\n dueDate: moment(invoice.InvDateStr).format('MM/DD/YY'),\r\n type: assetService.strings.TYPE_BILL,\r\n dueAmount: Number(invoice.InvAmt),\r\n isImageAvailable: invoice.IsImageAvlbl,\r\n }),\r\n );\r\n return _invoicesData;\r\n }\r\n componentStateHandler.failedStateDashboard(vm);\r\n return [];\r\n }\r\n\r\n function getPayments(paramData) {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(paramData).then(\r\n result => {\r\n if (result) {\r\n _paymentsData = result.d.Req_Inp.results[0].Inp_Res.results;\r\n if (!_paymentsData || _paymentsData.length === 0) {\r\n return null;\r\n }\r\n const payment = _paymentsData[0];\r\n return {\r\n dateForSort:\r\n payment.Payment_Status === 'SCHEDULED'\r\n ? payment.Payment_Due_Date\r\n : payment.Payment_Date,\r\n dueDate: moment(payment.Payment_Due_Date)\r\n .utc()\r\n .format('MMMM DD, YYYY'),\r\n dueAmount: Number(payment.Payment_Amount), // Same as paymentAmount\r\n paymentStatus: payment.Payment_Status,\r\n };\r\n }\r\n componentStateHandler.failedStateDashboard(vm);\r\n return null;\r\n },\r\n () => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function payNow(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const link = event.target.getAttribute('href');\r\n const payNowData = {\r\n totalAmount: vm.data.dueAmmount,\r\n billsQuantity: 1,\r\n selectedAccounts: [\r\n {\r\n account: _globalAccountInfo.accountSelected.accountNum,\r\n },\r\n ],\r\n };\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.dashboard.payNowData,\r\n payNowData,\r\n );\r\n window.location.href = `${link}`;\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n amount = Number.parseFloat(amount) || 0;\r\n const formattedAmount = String(amount).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n var lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '';\r\n } else if (formattedAmount[0].indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n }\r\n return $sce.trustAsHtml(\r\n `\\$${lessThanZero}${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function dashboardLoaded() {\r\n const header = assetService.apiHeaders.authorization;\r\n const targetEndpointUrl = '/form/MyAccountDashboard/DashboardLoaded';\r\n const requestPayload = '';\r\n\r\n return $q((resolve, reject) => {\r\n apiService.postDataAsync(targetEndpointUrl, requestPayload, header).then(\r\n result => {\r\n handleRedirect();\r\n },\r\n error => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n }\r\n\r\n function handleRedirect() {\r\n const params = new URLSearchParams(window.location.search);\r\n const value = params.get('redirect'); \r\n const dirtyHtml = value;\r\n const sanitizeValue = (value !== null && value !== undefined) ? sanitizeHTML(dirtyHtml) : value; \r\n\r\n if (sanitizeValue) {\r\n setTimeout(() => {\r\n window.location.href = sanitizeValue;\r\n }, '1000');\r\n }\r\n }\r\n\r\n function sanitizeHTML(input) { \r\n var div = document.createElement('div'); \r\n div.textContent = input; // Strips HTML tags \r\n return div.innerHTML; \r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n const params = {\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n businessPartner: _globalAccountInfo.primaryBp,\r\n zipCode: _globalAccountInfo.accountSelected.zipCode,\r\n invoiceCount: '1',\r\n };\r\n\r\n commonService\r\n .executePromises([\r\n getPayments({\r\n ...params,\r\n EmailID: _globalAccountInfo.userEmail,\r\n action: assetService.serviceActions.getPaymentHistory.DASH_PAY,\r\n }),\r\n getInvoices({\r\n ...params,\r\n isDashboard: true,\r\n action: assetService.strings.INVLIST_REQ_DASH,\r\n top: assetService.strings.ONE,\r\n invoiceCount:\r\n assetService.serviceActions.getInvoiceList.INVOICE_COUNT,\r\n }),\r\n getAccountBalance({\r\n accountList: [\r\n {\r\n contractAccountNumber: params.contractAccountId,\r\n zipCode: params.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n ([scheduledPayment]) => {\r\n setModels(scheduledPayment);\r\n dashboardLoaded();\r\n componentStateHandler.showComponent(vm);\r\n },\r\n () => componentStateHandler.failedStateDashboard(vm),\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n // on globalswitcher account ?\r\n load();\r\n }\r\n }\r\n init();\r\n}\r\n","function WidgetEnergyUsageController(\r\n $scope,\r\n assetService,\r\n $rootScope,\r\n sessionStorageService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n vm.isPrepaidAdvantage = false;\r\n vm.guid = '';\r\n\r\n /**\r\n * GA Tagging\r\n */\r\n\r\n vm.pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n vm.pushDL = function (category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n vm.gaTagging = function (action, subAction) {\r\n let label = vm.isClosed ? 'closed-account' : 'open-account';\r\n if (vm.isPrepaidAdvantage) label = 'prepaid-advantage';\r\n vm.pushDL('task_tiles', `${$rootScope.dataLayerFormat(action)}-|-${subAction}`, label);\r\n };\r\n\r\n /**\r\n * load function\r\n */\r\n const load = function () {\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const globalSelectedAccount = globalAccountInfo.accountSelected;\r\n vm.isPrepaidAdvantage = globalSelectedAccount && globalSelectedAccount.prepaid\r\n ? globalSelectedAccount.prepaid\r\n : false;\r\n vm.isClosed = !!(globalSelectedAccount\r\n && (globalSelectedAccount.status === 'Closed'\r\n || globalSelectedAccount.status === 'INACTIVE'));\r\n };\r\n\r\n /**\r\n * Initialization\r\n */\r\n vm.init = function (obj) {\r\n load();\r\n vm.guid = obj.Guid;\r\n };\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n load();\r\n });\r\n}\r\n\r\nWidgetEnergyUsageController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n];\r\napp.controller('WidgetEnergyUsageController', WidgetEnergyUsageController);\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('widgetManageProductServicesController', widgetManageProductServicesController);\r\nwidgetManageProductServicesController.$inject = [\r\n '$log',\r\n 'getEnrollmentsService',\r\n 'commonService',\r\n 'getProductDetailsService',\r\n 'assetService',\r\n 'getLoggedInUserDetailsService',\r\n 'ccGetUserAccountsService',\r\n '$location',\r\n 'componentStateHandler'\r\n];\r\n\r\nfunction widgetManageProductServicesController(\r\n $log,\r\n getEnrollmentsService,\r\n commonService,\r\n getProductDetailsService,\r\n assetService,\r\n getLoggedInUserDetailsService,\r\n ccGetUserAccountsService,\r\n $location,\r\n componentStateHandler\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const _CANCELLED = assetService.strings.CANCELLED;\r\n const _Cancelled = assetService.strings.Cancelled;\r\n const _ENROLL = assetService.strings.ENROLL;\r\n const _Enrolled = assetService.strings.Enrolled;\r\n const _UPGRADE = assetService.strings.UPGRADE;\r\n const _Upgrade = assetService.strings.Upgrade;\r\n const _RECURRING = assetService.strings.RECURRING;\r\n let _startedFromWatcher = false;\r\n let _startedFromScope = false;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.Enrolled = _Enrolled;\r\n vm.Cancelled = _Cancelled;\r\n vm.switch = 1;\r\n vm.subscriptions = null;\r\n vm.loadingSpinner = true;\r\n vm.enrollmentStatuses = angular.copy(assetService.enrollmentStatuses);\r\n\r\n /**\r\n * Watchers\r\n */\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n\r\n /* Function Definitions */\r\n function getRecurrentPayments(enrollments) {\r\n return _.take(_.filter(enrollments.EnrollmentArray.results, result => result.TypeOfTheCharge === _RECURRING).map(enrollment => ({\r\n price: enrollment.Price,\r\n status: (() => {\r\n switch (enrollment.Substatus) {\r\n case _ENROLL:\r\n return _Enrolled;\r\n case _UPGRADE:\r\n return _Upgrade;\r\n case _CANCELLED:\r\n return _Cancelled;\r\n default:\r\n return '';\r\n }\r\n })(),\r\n fullAddress: `${enrollments.HouseNumber} ${enrollments.Street} ${enrollments.City} ${enrollments.CityPostalCode}`,\r\n productCode: enrollment.ProductCode,\r\n enrollmentCode: enrollment.EnrollmentCodeContract,\r\n providerContract: enrollment.ProviderContract,\r\n cancellationDate: enrollment.CancellationDate,\r\n startDate: enrollment.StartDate,\r\n })), 2);\r\n }\r\n\r\n function formatProducts(enrollments, productDefinitions) {\r\n return _.map(enrollments, enrollment => ({\r\n ...enrollment,\r\n product: {\r\n productCode: enrollment.productCode,\r\n title: (() => {\r\n const productFound = _.find(productDefinitions, productDefinition => productDefinition.productCode === enrollment.productCode);\r\n return productFound ? productFound.name : '';\r\n })(),\r\n image: (() => {\r\n const productFound = _.find(productDefinitions, productDefinition => productDefinition.productCode === enrollment.productCode);\r\n if (productFound) {\r\n if (Object.prototype.hasOwnProperty.call(productFound, 'images')) {\r\n const images = _.find(productFound.images, (image) => {\r\n let imageFound = null;\r\n if (image.format === 'thumbnail') {\r\n imageFound = image;\r\n } else if (image.format === 'product') {\r\n imageFound = image;\r\n }\r\n\r\n if (imageFound) {\r\n return {\r\n url: image.url,\r\n alt: image.altText ? image.altText : productFound.name,\r\n };\r\n }\r\n });\r\n\r\n if (images) {\r\n return images;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n url: null,\r\n alt: productFound.name,\r\n };\r\n })(),\r\n },\r\n }));\r\n }\r\n\r\n function getEnrollments(paramData) {\r\n return getEnrollmentsService.sitecore.getEnrollments(paramData)\r\n .then(\r\n result => result.results[0].ContractAccountArray.results[0],\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getProductDetails(productCode) {\r\n return getProductDetailsService.sitecore.getProductDetails({\r\n productCode,\r\n }).then(result => ({\r\n productCode: result.code,\r\n name: result.name,\r\n images: Object.prototype.hasOwnProperty.call(result, 'images') ? result.images : [],\r\n }));\r\n }\r\n\r\n function load() {\r\n let data = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n businessPartnerId: $location.search().businessPartnerId, // Get Primary Bp\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n } else {\r\n data = {\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n };\r\n }\r\n\r\n ccGetUserAccountsService.getUserAccounts(data).then(\r\n (results) => {\r\n if (results && results.accounts.length > 0) {\r\n vm.bp = results.bpData.primaryBp;\r\n let paramData = {\r\n BusinessPartner: results.bpData.primaryBp,\r\n };\r\n getEnrollments(paramData).then((enrollments) => {\r\n const recurringPayments = getRecurrentPayments(enrollments);\r\n const productCodesArray = _.map(\r\n recurringPayments,\r\n recurringPayment => recurringPayment.productCode,\r\n );\r\n const promises = [];\r\n _.forEach(productCodesArray, productCode => promises.push(getProductDetails(productCode)));\r\n return commonService.executePromises(promises).then((promisesResults) => {\r\n const productDefinitions = promisesResults;\r\n vm.subscriptions = formatProducts(recurringPayments, productDefinitions);\r\n\t\t\t componentStateHandler.showComponent(vm);\r\n }, (error) => {\r\n\t\t\t componentStateHandler.failedStateDashboard(vm);\r\n });\r\n });\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n });\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n if (results) {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n } else {\r\n componentStateHandler.failedStateDashboard(vm);\r\n }\r\n },\r\n (error) => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller( 'CorrespondenceController', CorrespondenceController);\r\nCorrespondenceController.$inject = [\r\n 'genericHelperService',\r\n 'displayCommunicationHistoryService',\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n];\r\n\r\nfunction CorrespondenceController(\r\n genericHelperService,\r\n displayCommunicationHistoryService,\r\n apiApigeeConfigService,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n) {\r\n /*--------------Scope Vars-----------------------*/\r\n let _url = null;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n /*--------------Global Vars-----------------------*/\r\n let vm = this;\r\n vm.userAccounts= {};\r\n vm.contractAccountId;\r\n vm.showIcon = false;\r\n vm.dataDrop = {\r\n range: [\r\n {\r\n text: \"Show All\",\r\n selected: true,\r\n value: -1\r\n },\r\n {\r\n text: \"5 Most Recent\",\r\n value: 5\r\n },\r\n {\r\n text: \"This Year\",\r\n value: 1\r\n },\r\n {\r\n text: \"Last Year\",\r\n value: 12\r\n }\r\n ]\r\n };\r\n vm.selectInitial = {\r\n text: \"Show All\",\r\n value: -1\r\n };\r\n vm.copyData = {\r\n correspondence: {\r\n range: 1,\r\n title: null,\r\n info: 1\r\n }\r\n };\r\n vm.corresponData = {\r\n correspondence: {\r\n range: 1,\r\n title: null,\r\n info: 1\r\n }\r\n };\r\n vm.categoryDrop = [];\r\n\r\n /*--------------Function Definitions-----------------------*/ \r\n\r\n vm.categoryData = categoryData;\r\n vm.categoryDate = categoryDate;\r\n vm.selectCategoryDate = -1;\r\n vm.convert=convert;\r\n vm.findText=findText;\r\n\r\n vm.filterDate = function(value) {\r\n if (value >= 0 ) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n if (value == 1) {\r\n startDate = new Date(endDate.getFullYear(), 0o0, 0o1);\r\n } else {\r\n startDate.setMonth(endDate.getMonth() - (value - 1));\r\n }\r\n vm.corresponData.correspondence.info = genericHelperService.filterDates(vm.copyData.correspondence.info,startDate,endDate);\r\n } else {\r\n vm.corresponData.correspondence.info = vm.copyData.correspondence.info;\r\n }\r\n }\r\n\r\n vm.filterData = function(value){\r\n vm.corresponData.correspondence.info = vm.copyData.correspondence.info.filter(data =>{\r\n return data.category === value;\r\n });\r\n }\r\n\r\n vm.orderDate = function() {\r\n vm.showIcon = !vm.showIcon;\r\n\r\n if( vm.showIcon ) {\r\n vm.corresponData.correspondence.info = genericHelperService.orderDateDesc(vm.corresponData.correspondence.info);\r\n } else {\r\n vm.corresponData.correspondence.info = genericHelperService.orderDateAsc(vm.corresponData.correspondence.info);\r\n }\r\n }\r\n \r\n function categoryDate(){\r\n vm.filterDate(vm.selectCategoryDate)\r\n }\r\n \r\n function categoryData(){\r\n vm.filterData(vm.selectCategoryData)\r\n }\r\n\r\n function dataCategoryTypes(){\r\n vm.categoryDrop = _.map(_.uniq(vm.corresponData.correspondence.info, 'category'), item => ({\r\n value: item.category,\r\n text: item.category,\r\n }));\r\n vm.categoryDrop = _.sortBy(vm.categoryDrop, o => o.value);\r\n }\r\n\r\n function setModel() {\r\n vm.copyData.correspondence.info = vm.corresponData.correspondence.info; \r\n dataCategoryTypes();\r\n }\r\n\r\n function load(){\r\n if (globalSelectedAccount.accountNum && globalSelectedAccount.primaryBp) {\r\n const contractAccountId = globalSelectedAccount.accountNum;\r\n const businessPartnerId = globalSelectedAccount.primaryBp; \r\n \r\n let accountData = {\r\n contractAccountId,\r\n businessPartnerId\r\n }; \r\n } \r\n \r\n displayCommunicationHistory(accountData); \r\n }\r\n\r\n function displayCommunicationHistory(accountData) {\r\n displayCommunicationHistoryService.sitecore.displayCommunicationHistory(accountData)\r\n .then(\r\n (result) => { \r\n transformDataCorrespondance(result.d.CORRESPONDENCE_NAV.results);\r\n setModel();\r\n },\r\n );\r\n }\r\n\r\n function transformDataCorrespondance (data) { \r\n vm.corresponData.correspondence.info = data.map(function (value) {\r\n let datetrans= moment(parseInt(value.CorrDate.slice(6,18))).format('L')\r\n let newValue;\r\n return newValue = {\r\n date: datetrans,\r\n category: value.Category,\r\n subject: value.LetterDesc,\r\n deliveryMethod: value.Delivery\r\n }; \r\n }); \r\n vm.copyData.correspondence.info = vm.corresponData.correspondence.info; \r\n vm.selectInitial = vm.dataDrop.range[0].text; \r\n }\r\n\r\n function convert(data){\r\n data=data.toLowerCase();\r\n let dataReplaced=data.replace(/ /g,\"-\");\r\n return dataReplaced;\r\n }\r\n\r\n function findText(items, value){\r\n let item= items.filter(data =>{\r\n return data.value === value;\r\n });\r\n return item[0].text;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n \r\n load();\r\n });\r\n \r\n function init() {\r\n /*empty function*/\r\n }\r\n init();\r\n}\r\n","app.controller('AccountPermissionsController', AccountPermissionsController);\r\nAccountPermissionsController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$rootScope',\r\n 'genericHelperService',\r\n 'assetService',\r\n 'ccDelegationAssetService',\r\n 'getUserRolesAdministrationService',\r\n 'sessionStorageService',\r\n 'dateHelperService',\r\n 'TableHelperService',\r\n 'retrieveDelegationService',\r\n 'accountSearchService',\r\n 'updateDelegationService',\r\n 'maintainRelationshipService',\r\n 'modalService',\r\n 'dataModelsDTOProductsAndServices',\r\n 'FPBroadcastService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction AccountPermissionsController(\r\n $log,\r\n $scope,\r\n $rootScope,\r\n genericHelperService,\r\n assetService,\r\n ccDelegationAssetService,\r\n getUserRolesAdministrationService,\r\n sessionStorageService,\r\n dateHelperService,\r\n tableHelperService,\r\n retrieveDelegationService,\r\n accountSearchService,\r\n updateDelegationService,\r\n maintainRelationshipService,\r\n modalService,\r\n dataModelsDTOProductsAndServices,\r\n FPBroadcastService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _action = assetService.serviceActions.maintainRelationship.UPD_REL;\r\n // const _successToast = assetService.strings.success;\r\n const _fadeOut = ccDelegationAssetService.strings.FADEOUT;\r\n const _fadeInOut = ccDelegationAssetService.strings.FADEINOUT;\r\n let _accountSelector = null;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n let _cdpId = null;\r\n const _account = {};\r\n let globalUsersList = [];\r\n let usersBeingShowed = 0;\r\n const noOfUsersToShowInTable = 10;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.headerKey = ccDelegationAssetService.accountPermissionsTable.headerKey;\r\n vm.header = ccDelegationAssetService.accountPermissionsTable.header;\r\n vm.dropTable = [];\r\n vm.calendarTable = [];\r\n vm.tableData = {};\r\n vm.dataTable = {};\r\n vm.tableRelations = ccDelegationAssetService.accountPermissionsTable.tableRelations;\r\n vm.statusTable = ccDelegationAssetService.accountPermissionsTable.statusTable;\r\n vm.tableOptions = ccDelegationAssetService.accountPermissionsTable.tableOptions;\r\n vm.showCompareRolesTable = false;\r\n vm.showInvitesTable = false;\r\n vm.usersDelegations = [];\r\n vm.updateRelationships = [];\r\n vm.userRoles = [];\r\n vm.pendingDelegations = [];\r\n vm.sortArrow = '';\r\n vm.defaultTable = true;\r\n vm.userAccounts = [];\r\n vm.today = dateHelperService.getDateFromFullDate(moment().format());\r\n vm.endDate = dateHelperService.getDateFromFullDate(\r\n moment()\r\n .add(2, 'years')\r\n .format(),\r\n );\r\n vm.delegationUpdates = [];\r\n vm.sessionData = {\r\n users: [],\r\n };\r\n vm.primaryBP = '';\r\n vm.contractAccountId = '';\r\n vm.relatedBusinessPartner = '1100565992';\r\n vm.primaryEmail = '';\r\n vm.maintainRelationship = {\r\n replyCode: '',\r\n };\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.selectedUser = {};\r\n vm.showToast = false;\r\n vm.data = {};\r\n vm.showmessage = 0;\r\n vm.showMoreButtonActivate = false;\r\n vm.activeUserCount = 0;\r\n vm.nonRegisteredDelegations = [];\r\n vm.loadingSpinner = true;\r\n $rootScope.emptyState = false;\r\n\r\n // vm.closeModal = closeModal;\r\n /* ---------------Initialization-------------------*/\r\n let init = init;\r\n\r\n /* --------------$on functions-----------------------*/\r\n\r\n $scope.$on('setDateValue', () => {\r\n vm.dataTable.forEach((element) => {\r\n element.accesUntil = element.accesUntilModel ? element.accesUntilModel : element.accesUntil;\r\n });\r\n });\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function capitalizeName(name) {\r\n return dataModelsDTOProductsAndServices.transformName(name);\r\n }\r\n\r\n function getDateFromFullDate(dateStr) {\r\n const newDate = moment(dateStr).format('YYYY-MM-DDTHH:mm:ss');\r\n const date = new Date(newDate);\r\n let mm = date.getMonth() + 1;\r\n mm = mm.length === 1 ? `0${mm}` : mm;\r\n const dd = date.getDate().length === 1 ? `0${date.getDate()}` : `${date.getDate()}`;\r\n return `${mm}/${dd}/${date.getFullYear()}`;\r\n }\r\n\r\n function deleteDelegation(index) {\r\n attributePush(\r\n `workFlow:${$('#delegation-lp-gat').attr('businessFunction')}`,\r\n `headline:${$('#delegation-lp-gat').attr('headLine')}`,\r\n `subheadline:${vm.usersDelegations[index].relationship}`,\r\n `buttonText:${vm.usersDelegations[index].status}`,\r\n 'addedSpec:delete',\r\n );\r\n vm.sessionData.deleteUser = {\r\n index,\r\n };\r\n saveData();\r\n modalService.deleteUserAP();\r\n }\r\n function editDelationInfo(index) {\r\n attributePush(\r\n `workFlow:${$('#delegation-lp-gat').attr('businessFunction')}`,\r\n `headline:${$('#delegation-lp-gat').attr('headLine')}`,\r\n `subheadline:${vm.usersDelegations[index].relationship}`,\r\n `buttonText:${vm.usersDelegations[index].status}`,\r\n 'addedSpec:edit',\r\n );\r\n vm.selectedUser = this.usersDelegations[index];\r\n saveData();\r\n modalService.updateUserAP();\r\n }\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n vm.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n\r\n $scope.$on(ccDelegationAssetService.events.updateUserAP, () => {\r\n getUserRoles();\r\n showToast();\r\n });\r\n\r\n $scope.$on(ccDelegationAssetService.events.deleteUserAP, () => {\r\n getUserRoles();\r\n showToast();\r\n // vm.sessionData = sessionStorageService.get(\r\n // ccDelegationAssetService.storageKeys.accountPermissions,\r\n // );\r\n // vm.usersDelegations = vm.sessionData.users;\r\n // setTableFormat();\r\n });\r\n\r\n $scope.$on(ccDelegationAssetService.events.resendLink, () => {\r\n showToast();\r\n });\r\n\r\n function resendDelegation(index) {\r\n attributePush(\r\n `workFlow:${$('#delegation-lp-gat').attr('businessFunction')}`,\r\n `headline:${$('#delegation-lp-gat').attr('headLine')}`,\r\n `subheadline:${vm.usersDelegations[index].relationship}`,\r\n `buttonText:${vm.usersDelegations[index].status}`,\r\n 'addedSpec:resend-invite',\r\n );\r\n vm.sessionData.resendLink = {\r\n index,\r\n };\r\n saveData();\r\n modalService.resendInviteLinkAP();\r\n }\r\n\r\n function setTableFormat() {\r\n vm.loadingSpinner = false;\r\n if (vm.usersDelegations.length === 0) {\r\n $rootScope.emptyState = true;\r\n } else {\r\n $rootScope.emptyState = false;\r\n }\r\n globalUsersList = genericHelperService.notReferencesArrayObjects(vm.usersDelegations);\r\n if (globalUsersList.length > noOfUsersToShowInTable) {\r\n usersBeingShowed = noOfUsersToShowInTable;\r\n vm.showMoreButtonActivate = true;\r\n } else {\r\n usersBeingShowed = globalUsersList.length;\r\n vm.showMoreButtonActivate = false;\r\n }\r\n vm.dataTable = globalUsersList.slice(0, usersBeingShowed);\r\n vm.tableRelations = genericHelperService.arrayToDrop(vm.tableRelations, null, null);\r\n vm.sessionData.users = vm.usersDelegations;\r\n saveData();\r\n }\r\n\r\n function mergeUsers() {\r\n vm.activeUserCount = 0;\r\n if (vm.userRoles.length > 0) {\r\n vm.userRoles.forEach((user) => {\r\n vm.updateExistingUsers(user);\r\n });\r\n } else {\r\n if (vm.nonRegisteredDelegations.length > 0) {\r\n vm.nonRegisteredDelegations.forEach((delegation) => {\r\n vm.usersDelegations.push(delegation);\r\n });\r\n }\r\n setTableFormat();\r\n }\r\n }\r\n\r\n function updateExistingUsers(user) {\r\n // const dataObj = {\r\n // businessPartnerId: user.DelegatedUserBp,\r\n // };\r\n // accountSearchService.sitecore.accountSearch(dataObj).then(\r\n // (result) => {\r\n // if (result && result.d.ReqToHResNav.results) {\r\n const userDelegation = {\r\n userName: user.DelegateUserName,\r\n relationship:\r\n user.Relationship === '012'\r\n ? ccDelegationAssetService.accountPermissionsTable.tableRelations[0]\r\n : ccDelegationAssetService.accountPermissionsTable.tableRelations[1],\r\n status: user.DelegationStat,\r\n accesUntil:\r\n user.CaAccessEndDate === null\r\n || user.CaAccessEndDate === '99991231'\r\n || user.CaAccessEndDate === '00000000'\r\n ? 'No End Date'\r\n : getDateFromFullDate(user.CaAccessEndDate),\r\n update: false,\r\n delegationId: user.DelegatedUserBp,\r\n cdpId: user.DelegatedCdpId,\r\n };\r\n vm.usersDelegations.push(userDelegation);\r\n vm.activeUserCount += 1;\r\n if (vm.activeUserCount === vm.userRoles.length) {\r\n if (vm.nonRegisteredDelegations.length > 0) {\r\n vm.nonRegisteredDelegations.forEach((delegation) => {\r\n vm.usersDelegations.push(delegation);\r\n });\r\n }\r\n setTableFormat();\r\n }\r\n // }\r\n // },\r\n // (error) => {\r\n // if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n // },\r\n // );\r\n }\r\n\r\n function updatePendingdelegations() {\r\n vm.pendingDelegations.forEach((userDel) => {\r\n let status = ccDelegationAssetService.accountPermissionsTable.statusTable[1];\r\n if (userDel.declineTimeStamp) {\r\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[4];\r\n }\r\n if (userDel.isExpired === 'Y') {\r\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[2];\r\n }\r\n if (userDel.accessEndDate && vm.checkPastDate(userDel.accessEndDate)) {\r\n status = ccDelegationAssetService.accountPermissionsTable.statusTable[3];\r\n }\r\n const pendingUser = {\r\n userName: userDel.relatedBusinessPartnerEmailAddress,\r\n relationship:\r\n userDel.roleName === '001'\r\n ? ccDelegationAssetService.accountPermissionsTable.tableRelations[1]\r\n : ccDelegationAssetService.accountPermissionsTable.tableRelations[0],\r\n status,\r\n accesUntil:\r\n userDel.accessEndDate === null\r\n ? 'No End Date'\r\n : dateHelperService.getDateFromFullDate(userDel.accessEndDate),\r\n update: false,\r\n delegationId: userDel.accountDelegationRequestId,\r\n };\r\n vm.nonRegisteredDelegations.push(pendingUser);\r\n });\r\n }\r\n\r\n function checkPastDate(date) {\r\n const currentDate = new Date();\r\n const accessEndDate = dateHelperService.getDateFromFullDate(date).split('/');\r\n let endDate = new Date(accessEndDate);\r\n const accessEndDateVal = `${accessEndDate[0]}/${accessEndDate[1]}/${accessEndDate[2]}`;\r\n\r\n if (endDate == 'Invalid Date' || endDate == undefined) {\r\n endDate = new Date(accessEndDateVal);\r\n }\r\n if (\r\n endDate < currentDate\r\n && !(\r\n endDate.getFullYear() === currentDate.getFullYear()\r\n && endDate.getMonth() === currentDate.getMonth()\r\n && endDate.getDate() === currentDate.getDate()\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function getPendingDelegations() {\r\n // _account = _.find(_accountSelector.accounts, account => account.value === vm.contractAccountId);\r\n vm.pendingDelegations = [];\r\n vm.nonRegisteredDelegations = [];\r\n _cdpId = sessionStorageService.get(assetService.storageKeys.cdpId);\r\n const dataObject = {\r\n contractAccountNumber: vm.contractAccountId,\r\n cdpId: _cdpId,\r\n action: ccDelegationAssetService.serviceActions.MANAGE_DELEGATION,\r\n };\r\n retrieveDelegationService.sitecore.retrieveDelegation(dataObject).then(\r\n (result) => {\r\n if (result) {\r\n vm.pendingDelegations = result.delegations;\r\n if (vm.pendingDelegations.length > 0) {\r\n vm.updatePendingdelegations();\r\n }\r\n mergeUsers();\r\n }\r\n },\r\n (error) => {\r\n if (error) {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function updateTableFormat() {\r\n if (usersBeingShowed + noOfUsersToShowInTable > globalUsersList.length) {\r\n usersBeingShowed = globalUsersList.length;\r\n vm.showMoreButtonActivate = false;\r\n } else {\r\n usersBeingShowed += noOfUsersToShowInTable;\r\n }\r\n const dataTableLength = vm.dataTable.length;\r\n vm.dataTable.push(...globalUsersList.slice(dataTableLength, usersBeingShowed));\r\n }\r\n\r\n function sortTable() {\r\n vm.sortArrow = tableHelperService.sortingTableData(\r\n vm.usersDelegations,\r\n 'userName',\r\n vm.sortArrow,\r\n );\r\n saveData();\r\n setTableFormat();\r\n }\r\n\r\n function saveData() {\r\n vm.sessionData.users = vm.usersDelegations;\r\n vm.sessionData.selectedUser = vm.selectedUser;\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n vm.sessionData,\r\n );\r\n }\r\n\r\n function getUserRoles() {\r\n vm.userRoles = [];\r\n vm.usersDelegations = [];\r\n if (!globalSelectedAccount.primaryBp && !globalSelectedAccount.accountNum) return;\r\n const dataObject = {\r\n businessPartnerId: globalSelectedAccount.primaryBp,\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n requestedBy: '',\r\n sessionNo: '',\r\n emailId: globalAccountInfo.userEmail,\r\n experience: '',\r\n };\r\n getUserRolesAdministrationService.sitecore.getUserRoles(dataObject).then(\r\n (result) => {\r\n if (result) {\r\n vm.userRoles = result.d.results[0].ZDIG_USERROL_REQ_TO_PBP.results;\r\n vm.userRoles = vm.userRoles.length > 0\r\n ? vm.userRoles[0].ZDIG_USERROL_PBP_TO_CA.results[0].ZDIG_USERROL_CA_TO_DELEGTED\r\n .results\r\n : vm.userRoles;\r\n vm.userRoles = vm.userRoles.filter(value => value.DelegationStat === 'ACTIVE');\r\n vm.userRoles = vm.userRoles.filter(\r\n value => value.Relationship !== '002' && value.Relationship !== '014',\r\n );\r\n getPendingDelegations();\r\n // mergeUsers();\r\n }\r\n },\r\n (error) => {\r\n if (error) {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n sessionStorageService.delete(ccDelegationAssetService.storageKeys.accountPermissions);\r\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n });\r\n\r\n vm.selectMessage = function (message) {\r\n vm.showMessage = vm.showMessage === message ? 0 : message;\r\n };\r\n\r\n function activateDetails(event) {\r\n vm.dataTable.forEach((user, index) => {\r\n user.active = event !== index ? false : !user.active;\r\n });\r\n }\r\n\r\n function closeToast() {\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }\r\n\r\n function showToast() {\r\n vm.showToast = true;\r\n vm.data.option = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n );\r\n vm.data.messageOption = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n );\r\n vm.data.show = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n );\r\n\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n `headline:${vm.data.option}`,\r\n `subheadline:${vm.data.messageOption}`,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'account-permissions',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'account-permissions',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n if (vm.data.option === 'success') {\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }, 6000);\r\n } else if (vm.data.option === 'error') {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.showToast = true;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.loadingSpinner = true;\r\n _accountSelector = sessionStorageService.get(assetService.storageKeys.accountSelector);\r\n vm.sessionData = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n );\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n vm.primaryBP = globalAccountInfo.primaryBp;\r\n vm.primaryEmail = globalAccountInfo.userEmail;\r\n getRole();\r\n if (window.location.pathname === '/my-account/account-permissions' && !vm.roleBase.ownerRole) {\r\n window.location.href = '/my-account/Dashboard';\r\n }\r\n\r\n if (vm.sessionData !== null) {\r\n vm.usersDelegations = vm.sessionData.users;\r\n setTableFormat();\r\n } else {\r\n vm.usersDelegations = [];\r\n vm.sessionData = {\r\n users: [],\r\n };\r\n getUserRoles();\r\n }\r\n }\r\n /* --------------Function Declarations-----------------------*/\r\n vm.deleteDelegation = deleteDelegation;\r\n vm.resendDelegation = resendDelegation;\r\n vm.editDelationInfo = editDelationInfo;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.sortTable = sortTable;\r\n vm.closeToast = closeToast;\r\n vm.updateTableFormat = updateTableFormat;\r\n vm.capitalizeName = capitalizeName;\r\n vm.activateDetails = activateDetails;\r\n vm.checkPastDate = checkPastDate;\r\n vm.updatePendingdelegations = updatePendingdelegations;\r\n vm.updateExistingUsers = updateExistingUsers;\r\n /* ---------------Initialization-------------------*/\r\n init = function () {\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('DisconnectExtensionController', DisconnectExtensionController);\r\nDisconnectExtensionController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'commonService',\r\n 'dateHelperService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getEligiblePaymentPlansExtensionsService',\r\n 'getLoggedInUserDetailsService',\r\n 'sessionStorageService',\r\n 'setExtensionsService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction DisconnectExtensionController(\r\n $log,\r\n $scope,\r\n assetService,\r\n commonService,\r\n dateHelperService,\r\n getAccountBalanceForRegularAccountService,\r\n getEligiblePaymentPlansExtensionsService,\r\n getLoggedInUserDetailsService,\r\n sessionStorageService,\r\n setExtensionsService,\r\n $rootScope,\r\n commongaTaggingService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n let _currentDate;\r\n let _disconnectDateOne;\r\n let _disconnectDateTwo;\r\n let _disconnectAmount;\r\n let _globalAccountInfo = {};\r\n let _globalSelectedAccount = {};\r\n const _success = assetService.replyCodes.Success;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.currentDate = null;\r\n vm.disconnectAmount = null;\r\n vm.disconnectAmtDecimal = null;\r\n vm.isLoaded = false;\r\n vm.pageLoad = true;\r\n vm.showDesctiptDetails = false;\r\n vm.arrow = '';\r\n vm.paymentAssistance = {};\r\n vm.data = {\r\n contractAccountId: null,\r\n };\r\n vm.form = {\r\n option: null,\r\n };\r\n vm.setExtensions = {\r\n replyCode: null,\r\n };\r\n vm.disconnectDateOne = null;\r\n vm.disconnectDateTwo = null;\r\n vm.currentUser = {};//Get RequestedBy value\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.showDetails = showDetails;\r\n vm.disconnect = disconnect;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function showDetails() {\r\n vm.showDesctiptDetails = !vm.showDesctiptDetails;\r\n vm.arrow = vm.showDesctiptDetails ? 'down' : '';\r\n }\r\n\r\n function setExtensions(data) {\r\n return setExtensionsService.sitecore.setExtensions(data).then(\r\n result => {\r\n vm.setExtensions.replyCode =\r\n result.d.ReqCA.results[0].Messages.Type;\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function disconnect(event) {\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, true);\r\n const dataToPost = {\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n extendedDisconnectDate:\r\n vm.form.option === '1'\r\n ? moment.utc(_disconnectDateOne).format('YYYY-MM-DDTHH:mm:ss')\r\n : moment.utc(_disconnectDateTwo).format('YYYY-MM-DDTHH:mm:ss'),\r\n requestedBy: vm.currentUser.emailId,\r\n };\r\n\r\n setExtensions(dataToPost).then(\r\n () => {\r\n if(vm.setExtensions.replyCode === 'S')\r\n {\r\n sessionStorageService.set(\r\n assetService.storageKeys.paymentAssistance.disconnect,\r\n dataToPost.extendedDisconnectDate,\r\n );\r\n $scope.$emit(assetService.events.successDisconnectExtension, 'success');\r\n }\r\n else{\r\n vm.pageLoad = false;\r\n $scope.$emit(assetService.events.successDisconnectExtension, 'error');\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getDateFromFullDate(date) {\r\n return moment.utc(date).format('MM/DD/YYYY');\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function setModel() {\r\n vm.currentDate = getDateFromFullDate(_currentDate);\r\n vm.disconnectAmount =\r\n !_disconnectAmount || _disconnectAmount === 0 ? 0.0 : _disconnectAmount;\r\n vm.disconnectAmtDecimal = (\r\n '0' + Number((_disconnectAmount + '').split('.')[1])\r\n ).slice(-2);\r\n vm.data.amountDue = !!vm.disconnectAmount;\r\n vm.disconnectDateOne = _disconnectDateOne;\r\n vm.disconnectDateTwo = _disconnectDateTwo;\r\n\r\n vm.isLoaded = true;\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n function load() {\r\n if (assetService.apiConfig.useLocalHost) {\r\n _globalSelectedAccount = {\r\n accountNum: assetService.apiConfig.testAccount,\r\n };\r\n } else {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n\r\n const promises = [\r\n getEligiblePaymentPlansExtensions({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n }),\r\n getAccountBalanceForRegularAccount({\r\n accountList: [\r\n {\r\n contractAccountNumber: _globalSelectedAccount.accountNum,\r\n requestedBy: vm.currentUser.emailId,\r\n },\r\n ],\r\n }),\r\n ];\r\n\r\n commonService.executePromises(promises).then(\r\n () => {\r\n setModel();\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function getAccountBalanceForRegularAccount(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n if (result.getAccountAndBillingInfoResList.length > 0) {\r\n vm.accountStatus =\r\n result.getAccountAndBillingInfoResList[0].messageList[0].message;\r\n _disconnectAmount =\r\n result.getAccountAndBillingInfoResList[0].totalDueDlrs;\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getEligiblePaymentPlansExtensions(data) {\r\n return getEligiblePaymentPlansExtensionsService.sitecore\r\n .getEligiblePaymentPlansExtensions(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.ReqCA.results.length > 0 &&\r\n result.d.ReqCA.results[0].Extensions\r\n ) {\r\n const extension = result.d.ReqCA.results[0].Extensions;\r\n _currentDate = getDateFromFullDate(extension.DisconnectDateStr);\r\n _disconnectDateOne = getDateFromFullDate(extension.Date1ForDisconnectStr);\r\n _disconnectDateTwo = getDateFromFullDate(extension.Date2ForDisconnectStr);\r\n }\r\n const getExtension = result.d.ReqCA.results[0].Extensions;\r\n if(result && result.d.ReqCA.results[0] && getExtension === null) {\r\n vm.pageLoad = false;\r\n window.location.href = assetService.sitePagesUrlPaths.PAYMENT_ASSISTANCE_PROG;\r\n }\r\n if (\r\n vm.Installment === false &&\r\n vm.disconnect === false &&\r\n vm.dueDate === false\r\n ) {\r\n vm.nonAplicable = true;\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.pageLoad = false;\r\n },\r\n );\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n if (!assetService.apiConfig.useLocalHost) {\t\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\t\r\n (results) => {\t\r\n vm.currentUser = {\t\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\t\r\n load();\r\n },\t\r\n (error) => {\t\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\t\r\n );\t\r\n } else {\t\r\n load();\r\n }\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('DisconnectSuccessController', DisconnectSuccessController);\r\nDisconnectSuccessController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'dateHelperService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction DisconnectSuccessController(\r\n $scope,\r\n assetService,\r\n dateHelperService,\r\n sessionStorageService,\r\n $rootScope,\r\n $window,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n let _date = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.disconnect = null;\r\n vm.isLoaded = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function getDateFromFullDate(date) {\r\n return dateHelperService.getDateFromFullDate(date);\r\n }\r\n\r\n function setModel() {\r\n vm.message = moment.utc(vm.disconnect).format('MM/DD/YY');\r\n vm.isLoaded = true;\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.disconnect = sessionStorageService.get(\r\n assetService.storageKeys.paymentAssistance.disconnect,\r\n );\r\n broadcastService.headerSwitch('Full');\r\n setModel();\r\n $window.scrollTo(0, 0);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'ShelDisconnectExtensionController',\r\n ShelDisconnectExtensionController,\r\n);\r\n\r\nShelDisconnectExtensionController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'cookieService',\r\n 'sessionStorageService',\r\n '$state',\r\n];\r\n\r\nfunction ShelDisconnectExtensionController(\r\n $scope,\r\n assetService,\r\n cookieService,\r\n sessionStorageService,\r\n $state,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n const _success = assetService.strings.success;\r\n\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n $state.go(assetService.disconnectExtension.dataPage);\r\n }\r\n\r\n $scope.$on(assetService.events.successDisconnectExtension, (index, data) => {\r\n if (data === _success) {\r\n vm.loadingSpinner = true;\r\n $state.go(assetService.disconnectExtension.successPage);\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n const isValidation = cookieService.getCookie(\r\n 'payment-assistance-validation',\r\n );\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = `${window.location.protocol}/${window.location.hostname}/my-account/payment-assistance-programs/`;\r\n }\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('DueDateSuccessController', DueDateSuccessController);\r\nDueDateSuccessController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'dateHelperService',\r\n 'sessionStorageService',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction DueDateSuccessController(\r\n $scope,\r\n assetService,\r\n dateHelperService,\r\n sessionStorageService,\r\n $window,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _date = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.disconnect = null;\r\n vm.isLoaded = false;\r\n vm.extnEligibleUptoDate = null;\t\r\n vm.extnCount = 0;\t\r\n vm.firstExtendedDate = null;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function getDateFromFullDate(date) {\r\n return dateHelperService.getDateFromFullDate(date);\r\n }\r\n\r\n function setModel() {\r\n vm.message = moment.utc(vm.dueDate).format('MM/DD/YY');\r\n vm.isLoaded = true;\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.dueDate = sessionStorageService.get(\r\n assetService.storageKeys.paymentAssistance.dueDate,\r\n );\r\n broadcastService.headerSwitch('Full');\r\n setModel();\r\n $window.scrollTo(0, 0);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('DueDateExtensionController', DueDateExtensionController);\r\n\r\nDueDateExtensionController.$inject = [\r\n '$log',\r\n '$state',\r\n 'assetService',\r\n 'commonService',\r\n 'setExtensionsService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'accountSearchService',\r\n 'getEligiblePaymentPlansExtensionsService',\r\n 'getLoggedInUserDetailsService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction DueDateExtensionController(\r\n $log,\r\n $state,\r\n assetService,\r\n commonService,\r\n setExtensionsService,\r\n sessionStorageService,\r\n $scope,\r\n accountSearchService,\r\n getEligiblePaymentPlansExtensionsService,\r\n getLoggedInUserDetailsService,\r\n $rootScope,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.accountStatusByCA = {};\r\n vm.actualDate = '';\r\n vm.balanceData = {\r\n bills: {},\r\n };\r\n vm.currentUser = {};//Get RequestedBy value\r\n vm.billDueDate = '';\r\n vm.contractAccountId = null;\r\n vm.buttonContinue = true;\r\n vm.calendarDate = undefined;\r\n vm.currentDate = undefined;\r\n vm.startDate = undefined;\r\n vm.endDate = undefined;\r\n vm.disableDate = undefined;\r\n vm.data = {\r\n contractAccountId: null,\r\n };\r\n vm.description = assetService.dueDateExtension.description;\r\n vm.invoice = null;\r\n vm.formattedCurrentDate = undefined;\r\n vm.justForFirstPage = true;\r\n vm.latestBill = {};\r\n vm.lastButton = assetService.dueDateExtension.lastButton;\r\n vm.isLoaded = false;\r\n vm.nextPage = assetService.dueDateExtension.successPage;\r\n vm.recentBills = '';\r\n vm.returnTo = assetService.dueDateExtension.returnTo;\r\n vm.setExtensions = {};\r\n vm.title = assetService.dueDateExtension.title;\r\n vm.setExtensions = {\r\n replyCode: null,\r\n };\r\n vm.pageLoad = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.nextStep = nextStep;\r\n vm.onCancel = onCancel;\r\n vm.selectCalendarDate = selectCalendarDate;\r\n vm.init = init;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function card(\r\n accountNickname,\r\n accountNumber,\r\n address,\r\n dueDate,\r\n message,\r\n amount,\r\n viewBillLinkUrl,\r\n ) {\r\n this.accountNickname = accountNickname;\r\n this.accountNumber = accountNumber;\r\n this.address = address;\r\n this.dueDate = dueDate;\r\n this.message = message;\r\n this.amount = amount;\r\n this.viewBillLinkUrl = viewBillLinkUrl;\r\n }\r\n\r\n function selectCalendarDate() {\r\n if (!vm.calendarDate) {\r\n vm.formattedCurrentDate = moment(vm.disableDate).format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n else {\r\n vm.formattedCurrentDate = new Date(vm.calendarDate.split(' ').join(''));\r\n vm.formattedCurrentDate = moment(vm.formattedCurrentDate).format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n if(vm.disableDate) {\r\n moment(vm.disableDate).date(); \r\n $(\".sui-days\").find(\"td[title='\" + vm.disableDate + \"'] > span\").replaceWith(''+ moment(vm.disableDate).date() +'');\r\n $(\".sui-days\").find(\"td[title='\" + vm.disableDate + \"']\").removeClass('sui-selected');\r\n }\r\n\r\n if (vm.calendarDate !== undefined) {\r\n if ((vm.extendedDueDate != \"\" && moment(vm.formattedCurrentDate).format('MM/DD/YYYY') !==\t\r\n moment(vm.extendedDueDate).format('MM/DD/YYYY') || (moment(vm.formattedCurrentDate).format('MM/DD/YYYY') !==\t\r\n moment(vm.disableDate).format('MM/DD/YYYY')))\t\r\n ) {\t\r\n vm.buttonContinue = false;\t\r\n } else {\t\r\n vm.buttonContinue = true;\t\r\n }\r\n }\r\n }\r\n\r\n function nextStep(event) {\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, true);\r\n const paramData = {\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n extendedDueDate: moment(vm.formattedCurrentDate).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n ),\r\n requestedBy: vm.currentUser.emailId,\r\n };\r\n\r\n setExtension(paramData).then(\r\n () => {\r\n if(vm.setExtensions.replyCode === 'S'){\r\n sessionStorageService.set(\r\n assetService.storageKeys.paymentAssistance.dueDate,\r\n paramData.extendedDueDate,\r\n );\r\n $scope.$emit(assetService.events.successDueDateExtension, 'success');\r\n }\r\n else{\r\n vm.pageLoad = false;\r\n $scope.$emit(assetService.events.successDueDateExtension, 'error');\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function onCancel(path) {\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n }\r\n\r\n function setExtension(paramData) {\r\n return setExtensionsService.sitecore.setExtensions(paramData).then(\r\n (result) => {\r\n vm.setExtensions.replyCode =\r\n result.d.ReqCA.results[0].Messages.Type;\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.pageLoad = false;\r\n $scope.$emit(assetService.events.successDueDateExtension, 'error');\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n const promises = [\r\n accountSearch({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n }),\r\n getEligiblePaymentPlansExtensions({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n requestedBy: vm.currentUser.emailId,\r\n }),\r\n ];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n const dataRow = new card(\r\n vm.contractAccount.nickname,\r\n vm.contractAccount.accountNum,\r\n vm.contractAccount.address,\r\n moment.utc(vm.currentDate).format('MM/DD/YYYY'),\r\n );\r\n vm.isLoaded = true;\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n });\r\n }\r\n\r\n function accountSearch(dataObj) {\r\n return accountSearchService.sitecore.accountSearch(dataObj).then(\r\n result => {\r\n const contractAccounts = _.map(\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results,\r\n account => ({\r\n accountNum: account.AccountNumber,\r\n accountStat: account.AccountStatus,\r\n address: account.AccountMailingAddress,\r\n experience: account.Experience\r\n ? _.camelCase(account.Experience)\r\n : assetService.strings.EMPTY,\r\n jurisdiction: account.Jurisdiction,\r\n nickname: account.AccountNickname,\r\n prepaid: account.Prepaid === 'X',\r\n primaryBp: account.PrimaryBp,\r\n bpNumber: account.PrimaryBp,\r\n relatedBp: account.RbpNumber,\r\n }),\r\n );\r\n\r\n if (contractAccounts.length > 0) {\r\n vm.contractAccount = contractAccounts[0];\r\n } else {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getEligiblePaymentPlansExtensions(data) {\r\n return getEligiblePaymentPlansExtensionsService.sitecore\r\n .getEligiblePaymentPlansExtensions(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.ReqCA.results.length > 0 &&\r\n result.d.ReqCA.results[0].Extensions.DeferralDate\r\n ) {\r\n vm.currentDate = (vm.extendedDueDate && (moment.utc(vm.extendedDueDate).format('MM/DD/YYYY') >= moment.utc(result.d.ReqCA.results[0].Extensions.DueDate).format('MM/DD/YYYY')))\r\n ? moment.utc(vm.extendedDueDate).format('YYYY-MM-DDTHH:mm:ss')\r\n : moment\r\n .utc(result.d.ReqCA.results[0].Extensions.DueDate)\r\n .format('YYYY-MM-DDTHH:mm:ss');\r\n if(!vm.extendedDueDate || (vm.extendedDueDate && (moment.utc(vm.extendedDueDate).format('MM/DD/YYYY') >= moment.utc(vm.currentDate).format('MM/DD/YYYY')))) {\r\n vm.startDate = moment.utc(result.d.ReqCA.results[0].Extensions.StartDate).subtract(1,'days').format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n else {\r\n vm.startDate = moment.utc(result.d.ReqCA.results[0].Extensions.StartDate).format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n $scope.datePicked = moment.utc(vm.currentDate).format('MM/DD/YYYY');\r\n vm.disableDate = $scope.datePicked;\r\n vm.endDate = moment\r\n .utc(result.d.ReqCA.results[0].Extensions.EndDate)\r\n .format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n if (assetService.apiConfig.useLocalHost) {\r\n _globalSelectedAccount = {\r\n accountNum: assetService.apiConfig.testAccount,\r\n };\r\n } else {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n vm.extendedDueDate = sessionStorageService.get(\r\n assetService.storageKeys.paymentAssistance.extendedDueDate,\r\n );\r\n vm.data.contractAccountId = _globalSelectedAccount.accountNum;\r\n\r\n setModels();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n $scope.datePicked = '';\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\t\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\t\r\n );\r\n } else {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller('ShellDueDateExtensionController', ShellDueDateExtensionController);\r\n\r\nShellDueDateExtensionController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'cookieService',\r\n 'sessionStorageService',\r\n '$state',\r\n];\r\n\r\nfunction ShellDueDateExtensionController(\r\n $scope,\r\n assetService,\r\n cookieService,\r\n sessionStorageService,\r\n $state,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const _success = assetService.strings.success;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n $state.go(assetService.dueDateExtension.dataPage);\r\n }\r\n\r\n $scope.$on(assetService.events.successDueDateExtension, (index, data) => {\r\n if (data === _success) {\r\n vm.loadingSpinner = true;\r\n $state.go(assetService.dueDateExtension.successPage);\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n const isValidation = cookieService.getCookie('payment-assistance-validation');\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = `/my-account/payment-assistance-programs/`;\r\n }\r\n }\r\n}\r\n","function efiErrorModalController($log, $modalInstance, commongaTaggingService) {\r\n const vm = this;\r\n vm.closeModal = function () {\r\n $modalInstance.close();\r\n };\r\n\r\n /**\r\n * Initialization\r\n */\r\n vm.virtualPagePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n };\r\n vm.attributePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n };\r\n}\r\napp.controller('efiErrorModalController', efiErrorModalController);\r\nefiErrorModalController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\r\n","function efiInerceptController($log, $modalInstance, commongaTaggingService) {\r\n const vm = this;\r\n vm.closeModal = function () {\r\n $modalInstance.close();\r\n };\r\n\r\n /**\r\n * Initialization\r\n */\r\n vm.virtualPagePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n };\r\n vm.attributePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n };\r\n}\r\napp.controller('efiInerceptController', efiInerceptController);\r\nefiInerceptController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\r\n","app.controller('ccEnergyUsageGraphController', ccEnergyUsageGraphController);\r\n\r\nccEnergyUsageGraphController.$inject = [\r\n '$log',\r\n 'ccMeterSelectorService',\r\n 'ccEnergyUsageDto',\r\n 'accountSearchService',\r\n 'getInvoiceListService',\r\n 'getInvoiceDetailsService',\r\n 'getWeatherInfoService',\r\n 'getEnergyUsageService',\r\n 'sessionStorageService',\r\n 'errorHandlingService',\r\n 'assetService',\r\n 'commonService',\r\n '$scope',\r\n '$rootScope',\r\n '$timeout',\r\n 'energyService',\r\n 'getUsageComparisionService',\r\n 'exportCsvService',\r\n 'componentStateHandler',\r\n 'getMeterNumberService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ccEnergyUsageGraphController(\r\n $log,\r\n ccMeterSelectorService,\r\n ccEnergyUsageDto,\r\n accountSearchService,\r\n getInvoiceListService,\r\n getInvoiceDetailsService,\r\n getWeatherInfoService,\r\n getEnergyUsageService,\r\n sessionStorageService,\r\n errorHandlingService,\r\n assetService,\r\n commonService,\r\n $scope,\r\n $rootScope,\r\n $timeout,\r\n energyService,\r\n getUsageComparisionService,\r\n exportCsvService,\r\n componentStateHandler,\r\n getMeterNumberService,\r\n commongaTaggingService,\r\n) {\r\n const vm = this;\r\n vm.error = false;\r\n vm.loaded = false;\r\n vm.lighting = false;\r\n vm.meterObject = {};\r\n vm.energyUsageArray = [];\r\n vm.compareEnergyUsageArray = [];\r\n vm.invoiceListArray = [];\r\n vm.compareInvoiceListArray = [];\r\n vm.invoiceDetailsArray = [];\r\n vm.compareInvoiceDetailsArray = [];\r\n vm.weatherInfoArray = [];\r\n vm.ticksOverride = [];\r\n vm.compareUsageComparisonList = [];\r\n vm.usageComparisonList = [];\r\n vm.dataToGet = {};\r\n vm.downloadData = '';\r\n vm.loadingSpinner = true;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.is_mobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ||\r\n $(window).width() < 767;\r\n vm.isDashboard =\r\n window.location.pathname.toLowerCase() ===\r\n assetService.sitePagesUrlPaths.MYACCOUNT_DASHBOARD;\r\n\r\n const graphColors = energyService.graphColors;\r\n\r\n $scope.$on(energyService.string.loadGraph, (e, d) => {\r\n vm.meterObject = d;\r\n if (!vm.meterObject.isBlankState) {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n _globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)\r\n ) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = _globalAccountInfo.userEmail;\r\n _bpNumber = _globalSelectedAccount.bpNumber;\r\n }\r\n vm.invoiceListArray = d.invoiceListArray;\r\n vm.loadingSpinner = true;\r\n\r\n if (\r\n vm.meterObject.periodType == 'Year' ||\r\n vm.meterObject.periodType === energyService.periodType.BillingCycle ||\r\n vm.meterObject.periodType === energyService.periodTypeOption.Week\r\n ) {\r\n getWeatherInfo();\r\n } else {\r\n loadGraph();\r\n }\r\n }\r\n });\r\n $scope.$on('exportData', (e, d) => {\r\n vm.accountInfo = {\r\n 'Account Name':\r\n _globalSelectedAccount.firstName +\r\n ' ' +\r\n _globalSelectedAccount.lastName,\r\n Address: _globalSelectedAccount.address,\r\n 'Account Number': _globalSelectedAccount.accountNum,\r\n Disclaimer:\r\n 'The information contained in this file is intended for the personal and confidential use of the recipient(s) named above. Any unauthorized use is prohibited.',\r\n 'Graph Title': 'Energy Usage',\r\n 'Meter Number': d.meterNumber,\r\n 'Selected Date': moment()\r\n .utc()\r\n .format('MM/DD/YYYY'),\r\n 'Selected Period': d.periodType,\r\n 'Primary Data Unit': d.unitOfMeasure,\r\n 'Secondary Data Unit': '',\r\n 'Tertiary Data Unit': '',\r\n };\r\n if (d.unitOfMeasure == 'Dollar' && d.periodType == 'Year') {\r\n if (vm.meterObject.compareToPreviousYear) {\r\n vm.exportComaprisonList = [];\r\n vm.exportComaprisonList = vm.usageComparisonList.concat(\r\n vm.compareUsageComparisonList,\r\n );\r\n vm.filename = 'EnergyUsageExport YOYYear';\r\n exportCsvService.exportToCSV(\r\n d.periodType,\r\n vm.exportComaprisonList,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n } else {\r\n vm.filename = 'EnergyUsageExport Dollars';\r\n exportCsvService.exportToCSV(\r\n d.unitOfMeasure,\r\n vm.usageComparisonList,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n }\r\n }\r\n if (\r\n d.periodType == 'Year' &&\r\n (d.unitOfMeasure == 'kWh' || d.unitOfMeasure == 'CCF')\r\n ) {\r\n if (vm.meterObject.compareToPreviousYear) {\r\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\r\n vm.exportForNet = {};\r\n if (vm.meterObject.netMeter) {\r\n vm.exportForNet.Series1 = vm.exportEnergyUsage.Series1.concat(\r\n vm.exportCompareEnergyUsage.Series1,\r\n );\r\n vm.exportForNet.Series3 = vm.exportEnergyUsage.Series3.concat(\r\n vm.exportCompareEnergyUsage.Series3,\r\n );\r\n vm.exportForNet.Series2 = vm.exportEnergyUsage.Series2.concat(\r\n vm.exportCompareEnergyUsage.Series2,\r\n );\r\n vm.exportForNet.TickSeries = vm.exportEnergyUsage.TickSeries.concat(\r\n vm.exportCompareEnergyUsage.TickSeries,\r\n );\r\n vm.filename = 'EnergyUsageExport YoY Net';\r\n exportCsvService.exportToCSV(\r\n 'NetMeter',\r\n vm.exportForNet,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n } else {\r\n vm.exportForNet.Series1 = vm.exportEnergyUsage.Series1.concat(\r\n vm.exportCompareEnergyUsage.Series1,\r\n );\r\n vm.exportForNet.Series2 = vm.exportEnergyUsage.Series2.concat(\r\n vm.exportCompareEnergyUsage.Series2,\r\n );\r\n vm.exportForNet.TickSeries = vm.exportEnergyUsage.TickSeries.concat(\r\n vm.exportCompareEnergyUsage.TickSeries,\r\n );\r\n vm.filename = 'EnergyUsageExport YOYYear';\r\n exportCsvService.exportToCSV(\r\n d.intervalFrequency,\r\n vm.exportForNet,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n }\r\n } else {\r\n vm.exportComaprisonList = vm.usageComparisonList.concat(\r\n vm.compareUsageComparisonList,\r\n );\r\n vm.filename = 'EnergyUsageExport YOYYear';\r\n exportCsvService.exportToCSV(\r\n d.periodType,\r\n vm.exportComaprisonList,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n }\r\n } else {\r\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\r\n if (vm.meterObject.netMeter) {\r\n vm.filename = 'EnergyUsageExport Net';\r\n exportCsvService.exportToCSV(\r\n 'NetMeter',\r\n vm.energyUsageArray,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n } else {\r\n vm.filename = 'EnergyUsageExport Year';\r\n exportCsvService.exportToCSV(\r\n d.intervalFrequency,\r\n vm.energyUsageArray,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n }\r\n } else {\r\n vm.filename = 'EnergyUsageExport Year';\r\n exportCsvService.exportToCSV(\r\n d.periodType,\r\n vm.usageComparisonList,\r\n vm.filename,\r\n vm.accountInfo,\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n d.periodType != 'Year' &&\r\n (d.unitOfMeasure == 'kWh' || d.unitOfMeasure == 'CCF')\r\n ) {\r\n vm.filename =\r\n d.periodType == 'billingCycle'\r\n ? 'EnergyUsageExport BillCycle'\r\n : d.periodType == 'Week'\r\n ? 'EnergyUsageExport Week'\r\n : d.periodType == 'Day'\r\n ? 'EnergyUsageExport Day'\r\n : 'EnergyUsageExport Mins';\r\n exportCsvService.exportToCSV(\r\n d.periodType,\r\n vm.energyUsageArray,\r\n vm.filename,\r\n vm.accountInfo,\r\n d.startDate,\r\n );\r\n }\r\n });\r\n $scope.$on('downloadData', (e, d) => {\r\n vm.downloadData = d;\r\n if (vm.downloadData == 'download') {\r\n $rootScope.download = true;\r\n }\r\n const promises = [getEnergyUsage()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.downloadData = '';\r\n $rootScope.$broadcast('resetLoadingSpinner', false);\r\n });\r\n });\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function getEnergyUsage() {\r\n startDate = new Date(vm.meterObject.startDate);\r\n const params = {\r\n srcAcctId: _globalSelectedAccount.accountNum,\r\n meterSerialNumber: vm.meterObject.meterNumber,\r\n intervalFrequency: vm.meterObject.intervalFrequency,\r\n netmetering: vm.meterObject.netMeter ? 'Y' : 'N',\r\n periodType: vm.meterObject.periodType,\r\n serviceType: vm.meterObject.serviceType.toUpperCase(),\r\n startDate: moment(startDate.setDate(startDate.getDate())).format(\r\n 'MM/DD/YYYY',\r\n ),\r\n endDate:\r\n vm.meterObject.periodType == 'Year'\r\n ? moment(\r\n moment(new Date(vm.meterObject.endDate), 'MM/DD/YYYY').add(\r\n 1,\r\n 'days',\r\n ),\r\n ).format('MM/DD/YYYY')\r\n : moment(vm.meterObject.endDate).format('MM/DD/YYYY'),\r\n isDownload: vm.downloadData ? vm.downloadData : '',\r\n };\r\n if (vm.meterObject.serviceType.toUpperCase() === 'GAS') {\r\n params.meterSerialNumber = vm.meterObject.meterNumber + ' ';\r\n }\r\n vm.energyUsageArray = {};\r\n vm.exportEnergyUsage = {};\r\n return getEnergyUsageService.sitecore\r\n .getEnergyUsage(params)\r\n .then(result => {\r\n if (result) {\r\n vm.ticksOverride = [];\r\n if (vm.downloadData == 'download') {\r\n const bytes = new TextEncoder().encode(result);\r\n const blob = new Blob([bytes], {\r\n type: 'text/plain;charset=utf-8',\r\n });\r\n saveAs(blob, `Energy Usage.xml`);\r\n vm.meterObject.isDownloadclicked = false;\r\n } else {\r\n if (result.MessageText == 'Success') {\r\n vm.energyUsageArray = result;\r\n vm.exportEnergyUsage = Object.assign({}, result);\r\n vm.averageConsolidated = result.Series2\r\n ? parseFloat(result.Series2[0])\r\n : 0;\r\n if (\r\n vm.energyUsageArray.TickSeries &&\r\n (vm.meterObject.periodType == 'billingCycle' ||\r\n vm.meterObject.periodType == 'Week')\r\n ) {\r\n for (\r\n var i = 0;\r\n i < vm.energyUsageArray.TickSeries.length;\r\n i++\r\n ) {\r\n var yearSelected = moment(vm.meterObject.endDate).format(\r\n 'YYYY',\r\n );\r\n if (vm.energyUsageArray.TickSeries[i] == '') {\r\n var testDate = new Date(\r\n new Date(vm.energyUsageArray.TickSeries[i - 1]).setDate(\r\n new Date(\r\n vm.energyUsageArray.TickSeries[i - 1],\r\n ).getDate() + 1,\r\n ),\r\n );\r\n } else {\r\n yearSelected =\r\n vm.energyUsageArray.TickSeries[i].split('/')[0] == '12'\r\n ? moment(vm.meterObject.startDate).format('YYYY')\r\n : moment(vm.meterObject.endDate).format('YYYY');\r\n var testDate = new Date(\r\n moment(\r\n `${vm.energyUsageArray.TickSeries[i]}/${yearSelected}`,\r\n 'M/DD/YYYY',\r\n ),\r\n );\r\n }\r\n vm.energyUsageArray.TickSeries[i] = testDate;\r\n vm.ticksOverride.push(vm.energyUsageArray.TickSeries[i]);\r\n }\r\n }\r\n if (vm.meterObject.intervalFrequency == 'billingCycleEnergyUse') {\r\n for (\r\n var i = 0;\r\n i < vm.energyUsageArray.TickSeries.length;\r\n i++\r\n ) {\r\n if (vm.energyUsageArray.TickSeries[i] == '') {\r\n var a = vm.energyUsageArray.TickSeries[i - 1].split('/');\r\n a.splice(1, 0, '01');\r\n // var dateCompare = new Date(moment(a.join(\"/\")).add(1, 'months'))\r\n // var usageComparisonArray = vm.meterObject.invoiceListArray ;\r\n // vm.dateArray = usageComparisonArray.filter(data =>\r\n // moment(data.BillDate).format('MMMM') == moment(dateCompare).format('MMMM') && moment(data.BillDate).format('YYYY') == moment(dateCompare).format('YYYY'))\r\n // if(vm.dateArray.length > 0){\r\n vm.ticksOverride.push(\r\n new Date(moment(a.join('/')).add(1, 'months')),\r\n );\r\n // }else{\r\n // var a = vm.energyUsageArray.TickSeries[i + 1].split(\"/\");\r\n // a.splice(1, 0, \"01\")\r\n // vm.ticksOverride.push(new Date(moment(a.join(\"/\")).subtract(1, 'months')));\r\n // }\r\n } else {\r\n var a = vm.energyUsageArray.TickSeries[i].split('/');\r\n a.splice(1, 0, '01');\r\n vm.ticksOverride.push(new Date(a.join('/')));\r\n }\r\n }\r\n vm.energyUsageArray.TickSeries = vm.ticksOverride;\r\n // for (var i = 0; i < vm.ticksOverride.length; i++) {\r\n // // vm.tempArray = vm.meterObject.invoiceListArray.filter(data => data.Month == moment(vm.ticksOverride[i]).format(\"MM\") && data.Year == moment(vm.ticksOverride[i]).format(\"YYYY\"))\r\n // // vm.exportEnergyUsage.TickSeries[i] = new Date(vm.tempArray.BillingEndDate);\r\n // angular.forEach(vm.meterObject.invoiceListArray, (data) => {\r\n // if (data.Month == moment(vm.ticksOverride[i]).format(\"MM\") && data.Year == moment(vm.ticksOverride[i]).format(\"YYYY\")) {\r\n // vm.exportEnergyUsage.TickSeries[i] = new Date(data.BillingEndDate);\r\n // }\r\n // })\r\n // }\r\n }\r\n if (\r\n vm.energyUsageArray.TickSeries.length >= 13 &&\r\n vm.meterObject.intervalFrequency == 'billingCycleEnergyUse'\r\n ) {\r\n const a = vm.energyUsageArray.TickSeries.length - 13;\r\n vm.energyUsageArray.TickSeries.splice(0, a);\r\n vm.energyUsageArray.Series1.splice(0, a);\r\n vm.energyUsageArray.Series2.splice(0, a);\r\n vm.energyUsageArray.Series3.splice(0, a);\r\n vm.meterObject.eligiblecompareToPrev = true;\r\n }\r\n if (vm.meterObject.compareToPreviousYear) {\r\n if (\r\n vm.energyUsageArray.TickSeries.length > 12 ||\r\n vm.meterObject.invoiceListArray.length > 13\r\n ) {\r\n vm.energyUsageArray.TickSeries.splice(0, 1);\r\n vm.energyUsageArray.Series1.splice(0, 1);\r\n vm.energyUsageArray.Series2.splice(0, 1);\r\n vm.energyUsageArray.Series3.splice(0, 1);\r\n }\r\n getCompareEnergyUsage();\r\n } else {\r\n loadUsageDataGraph();\r\n }\r\n if (!vm.meterObject.isMinMaxSet) {\r\n const setDate =\r\n new Date(\r\n vm.meterObject.invoiceListArray[\r\n vm.meterObject.invoiceListArray.length - 1\r\n ].BillDate,\r\n ) >\r\n new Date(\r\n vm.energyUsageArray.TickSeries[\r\n vm.energyUsageArray.TickSeries.length - 1\r\n ],\r\n )\r\n ? new Date(\r\n vm.meterObject.invoiceListArray[\r\n vm.meterObject.invoiceListArray.length - 1\r\n ].BillDate,\r\n )\r\n : vm.energyUsageArray.TickSeries[\r\n vm.energyUsageArray.TickSeries.length - 1\r\n ];\r\n $rootScope.$broadcast('setCalendarDate', setDate);\r\n }\r\n } else {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n vm.meterObject.isBlankState = true;\r\n $('.energyUsageWidget').addClass('empty-state-container');\r\n }\r\n }\r\n } else {\r\n console.log(error);\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n reject(errorHandlingService.getException(error));\r\n }\r\n });\r\n }\r\n function getCompareEnergyUsage() {\r\n const params = {\r\n srcAcctId: _globalSelectedAccount.accountNum,\r\n meterSerialNumber: _globalSelectedAccount.meterNumber,\r\n intervalFrequency: vm.meterObject.intervalFrequency,\r\n netmetering: vm.meterObject.netMeter ? 'Y' : 'N',\r\n periodType: vm.meterObject.periodType,\r\n serviceType: vm.meterObject.serviceType.toUpperCase(),\r\n startDate: `${moment(vm.meterObject.startDate).format('MM')}/${moment(\r\n vm.meterObject.endDate,\r\n ).format('DD')}/${moment(vm.meterObject.startDate).year() - 1}`,\r\n endDate: `${moment(vm.meterObject.endDate).format('MM')}/${moment(\r\n vm.meterObject.endDate,\r\n ).format('DD')}/${moment(vm.meterObject.endDate).year() - 1}`,\r\n isDownload: vm.downloadData ? vm.downloadData : '',\r\n };\r\n vm.exportCompareEnergyUsage = {};\r\n vm.compareEnergyUsageArray = {};\r\n return getEnergyUsageService.sitecore\r\n .getEnergyUsage(params)\r\n .then(result => {\r\n if (result) {\r\n vm.compareEnergyUsageArray = result;\r\n vm.exportCompareEnergyUsage = result;\r\n var tempTicks = [];\r\n var result1 = [];\r\n var result2 = [];\r\n var tempResult = [];\r\n vm.energyUsageArray.yoySeries1 = [];\r\n vm.energyUsageArray.yoySeries3 = [];\r\n if (result.MessageText == 'Success') {\r\n for (\r\n var i = 0;\r\n i < vm.compareEnergyUsageArray.TickSeries.length;\r\n i++\r\n ) {\r\n if (vm.compareEnergyUsageArray.TickSeries[i] == '') {\r\n var a = vm.compareEnergyUsageArray.TickSeries[i - 1].split('/');\r\n a.splice(1, 0, '01');\r\n tempTicks.push(new Date(moment(a.join('/')).add(1, 'months')));\r\n } else {\r\n var a = vm.compareEnergyUsageArray.TickSeries[i].split('/');\r\n a.splice(1, 0, '01');\r\n tempTicks.push(new Date(a.join('/')));\r\n }\r\n angular.forEach(vm.meterObject.invoiceListArray, data => {\r\n if (\r\n data.Month == moment(tempTicks).format('MM') &&\r\n data.Year == moment(tempTicks).format('YYYY')\r\n ) {\r\n vm.exportCompareEnergyUsage.TickSeries[i] = new Date(\r\n data.BillingEndDate,\r\n );\r\n }\r\n });\r\n angular.forEach(vm.energyUsageArray.TickSeries, (data, index) => {\r\n if (\r\n data.getMonth() == tempTicks[i].getMonth() &&\r\n data.getFullYear() - 1 == tempTicks[i].getFullYear()\r\n ) {\r\n vm.energyUsageArray.yoySeries1[index] =\r\n vm.compareEnergyUsageArray.Series1[i];\r\n if (vm.meterObject.netMeter) {\r\n vm.energyUsageArray.yoySeries3[index] =\r\n vm.compareEnergyUsageArray.Series3[i];\r\n }\r\n }\r\n });\r\n }\r\n vm.compareEnergyUsageArray.TickSeries = tempTicks;\r\n angular.forEach(vm.energyUsageArray.TickSeries, (data, index) => {\r\n var temp = {};\r\n temp.Series1 = vm.energyUsageArray.Series1[index];\r\n temp.yoySeries1 = vm.energyUsageArray.yoySeries1[index];\r\n if (vm.meterObject.netMeter) {\r\n temp.Series3 = vm.energyUsageArray.Series3[index];\r\n temp.yoySeries3 = vm.energyUsageArray.yoySeries3[index];\r\n }\r\n temp.month = moment(data).format('MM');\r\n temp.ticks = data;\r\n result1.push(temp);\r\n });\r\n angular.forEach(\r\n vm.compareEnergyUsageArray.TickSeries,\r\n (data, index) => {\r\n var temp = {};\r\n temp.yoySeries1 = vm.compareEnergyUsageArray.Series1[index];\r\n if (vm.meterObject.netMeter) {\r\n temp.yoySeries3 = vm.compareEnergyUsageArray.Series3[index];\r\n }\r\n temp.month = moment(data).format('MM');\r\n temp.ticks = data;\r\n result2.push(temp);\r\n },\r\n );\r\n if (result2.length > result1.length) {\r\n vm.ConsolidatedEnergyUsageList = result2;\r\n vm.ConsolidatedEnergyUsageList.forEach(o => {\r\n var tempUsageComparison = result1.filter(function(item) {\r\n return (\r\n moment(item.ticks).format('MMM') ==\r\n moment(o.ticks).format('MMM')\r\n );\r\n });\r\n if (tempUsageComparison.length > 0) {\r\n tempUsageComparison.forEach(e => {\r\n if (\r\n moment(o.ticks).format('YYYY') ==\r\n moment(e.ticks).format('YYYY') - 1\r\n ) {\r\n o.Series1 = e.Series1;\r\n if (vm.meterObject.netMeter) {\r\n o.Series3 = e.Series3;\r\n }\r\n }\r\n });\r\n } else {\r\n tempResult.push(o);\r\n }\r\n });\r\n if (tempResult && tempResult.length > 0) {\r\n angular.forEach(result1, (data, index) => {\r\n if (\r\n parseInt(data.month) + 1 ==\r\n parseInt(tempResult[0].month)\r\n ) {\r\n vm.itemIndex = index;\r\n }\r\n });\r\n result1.splice(vm.itemIndex + 1, 0, ...tempResult);\r\n }\r\n var result3 = result1.concat(vm.ConsolidatedEnergyUsageList);\r\n function getUnique(arr, comp) {\r\n const unique = arr\r\n .map(e => e[comp])\r\n .map((e, i, final) => final.indexOf(e) === i && i)\r\n .filter(e => arr[e])\r\n .map(e => arr[e]);\r\n return unique;\r\n }\r\n vm.resultantArray = getUnique(result3, 'month');\r\n } else {\r\n vm.resultantArray = result1;\r\n }\r\n loadUsageDataGraph();\r\n } else {\r\n if (vm.energyUsageArray.MessageText == 'Success') {\r\n angular.forEach(vm.energyUsageArray.TickSeries, (data, index) => {\r\n var temp = {};\r\n temp.Series1 = vm.energyUsageArray.Series1[index];\r\n temp.yoySeries1 = vm.energyUsageArray.yoySeries1[index];\r\n if (vm.meterObject.netMeter) {\r\n temp.Series3 = vm.energyUsageArray.Series3[index];\r\n temp.yoySeries3 = vm.energyUsageArray.yoySeries3[index];\r\n }\r\n temp.month = moment(data).format('MM');\r\n temp.ticks = data;\r\n result1.push(temp);\r\n });\r\n vm.resultantArray = result1;\r\n loadUsageDataGraph();\r\n }\r\n }\r\n } else {\r\n console.log(error);\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n reject(errorHandlingService.getException(error));\r\n }\r\n });\r\n }\r\n function getWeatherInfo() {\r\n const params = {\r\n contractAccount: _globalSelectedAccount.accountNum,\r\n meterNumber: _globalSelectedAccount.meterNumber,\r\n premiseNumber: _globalSelectedAccount.premiseID,\r\n zipCode: _globalSelectedAccount.zipCode,\r\n monthlyFlag: vm.meterObject.periodType == 'Year' ? 'X' : '',\r\n fromDate: moment(vm.meterObject.startDate).format('YYYY-MM-DDTHH:mm:ss'),\r\n toDate: moment(\r\n `${moment(vm.meterObject.endDate).month() + 1}/31/${moment(\r\n vm.meterObject.endDate,\r\n ).year()}`,\r\n ).format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n return getWeatherInfoService.sitecore\r\n .getWeatherInfo(params)\r\n .then(result => {\r\n if (result) {\r\n vm.weatherInfoArray =\r\n result.d.results[0].ZDIG_Request_to_Response.results;\r\n } else {\r\n console.log(error);\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n }\r\n loadGraph();\r\n });\r\n }\r\n function getCompareUsageComparison() {\r\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\r\n if (vm.meterObject.installationNumber) {\r\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\r\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\r\n } else {\r\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\r\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\r\n }\r\n if (vm.meterObject.division === assetService.divisions.ELEC) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\r\n vm.dataToGet.meterType = vm.meterObject.meterType;\r\n vm.dataToGet.fromDate = moment(\r\n moment(vm.meterObject.startDate).subtract(12, 'months'),\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n\r\n vm.dataToGet.toDate = moment(\r\n moment(vm.meterObject.endDate).subtract(12, 'months'),\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n return getUsageComparisionService.sitecore\r\n .getUsageComparision(vm.dataToGet)\r\n .then(\r\n result => {\r\n if (result) {\r\n vm.ConsolidatedUsageList = [];\r\n const data =\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav\r\n .results;\r\n vm.compareUsageComparisonList = ccEnergyUsageDto.transformUsageList(\r\n data,\r\n );\r\n vm.averageCompareCost = parseInt(\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].AverageUsageAmount,\r\n );\r\n vm.averageCompareUsage = parseInt(\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].AverageMonthlyUsage,\r\n );\r\n vm.compareUsageComparisonList.forEach(o => {\r\n o.averageCost = vm.averageCost;\r\n o.averageUsage = vm.averageUsage;\r\n });\r\n if (vm.compareUsageComparisonList.length > 12) {\r\n vm.compareUsageComparisonList.sort(\r\n (a, b) =>\r\n Date.parse(a.BillingEndDate) - Date.parse(b.BillingEndDate),\r\n );\r\n vm.compareUsageComparisonList.splice(\r\n 0,\r\n vm.compareUsageComparisonList.length - 12,\r\n );\r\n }\r\n if (\r\n vm.compareUsageComparisonList.length >\r\n vm.usageComparisonList.length\r\n ) {\r\n vm.ConsolidatedUsageList = vm.compareUsageComparisonList;\r\n vm.ConsolidatedUsageList.forEach(o => {\r\n var tempUsageComparison = vm.usageComparisonList.filter(\r\n function(item) {\r\n return (\r\n moment(item.BillDate).format('MMM') ==\r\n moment(o.BillDate).format('MMM')\r\n );\r\n },\r\n );\r\n tempUsageComparison.forEach(e => {\r\n if (\r\n moment(o.BillDate).format('YYYY') ==\r\n moment(e.BillDate).format('YYYY') - 1\r\n ) {\r\n (o.compareUsage = e.Usage), (o.compareCost = e.Bill_Amt);\r\n }\r\n });\r\n });\r\n } else {\r\n vm.ConsolidatedUsageList = vm.usageComparisonList;\r\n vm.ConsolidatedUsageList.forEach(o => {\r\n var tempUsageComparison = vm.compareUsageComparisonList.filter(\r\n function(item) {\r\n return (\r\n moment(item.BillDate).format('MMM') ==\r\n moment(o.BillDate).format('MMM')\r\n );\r\n },\r\n );\r\n tempUsageComparison.forEach(e => {\r\n if (\r\n moment(o.BillDate).format('YYYY') - 1 ==\r\n moment(e.BillDate).format('YYYY')\r\n ) {\r\n (o.compareUsage = e.Usage), (o.compareCost = e.Bill_Amt);\r\n }\r\n });\r\n });\r\n }\r\n if (vm.ConsolidatedUsageList.length >= 13) {\r\n vm.ConsolidatedUsageList.shift();\r\n vm.ticksOverride.shift();\r\n }\r\n loadInvoiceDataGraph();\r\n } else {\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n function usageComparison() {\r\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\r\n if (vm.meterObject.installationNumber) {\r\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\r\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\r\n } else {\r\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\r\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\r\n }\r\n\r\n if (vm.meterObject.serviceType === energyService.serviceType.Electric) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\r\n vm.dataToGet.meterType = vm.meterObject.meterType;\r\n vm.dataToGet.fromDate = moment(vm.meterObject.startDate).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n );\r\n vm.dataToGet.toDate = moment(new Date(vm.meterObject.endDate)).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n );\r\n vm.usageComparisonList = [];\r\n vm.meterObject.isBlankState = false;\r\n return getUsageComparisionService.sitecore\r\n .getUsageComparision(vm.dataToGet)\r\n .then(\r\n result => {\r\n if (result) {\r\n const data =\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav\r\n .results;\r\n vm.usageComparisonList = ccEnergyUsageDto.transformUsageList(data);\r\n if (vm.usageComparisonList.length > 13) {\r\n vm.usageComparisonList.sort(\r\n (a, b) =>\r\n Date.parse(a.BillingEndDate) - Date.parse(b.BillingEndDate),\r\n );\r\n const a = vm.usageComparisonList.length - 13;\r\n vm.usageComparisonList.splice(0, a);\r\n }\r\n if (vm.usageComparisonList.length > 0) {\r\n vm.meterObject.isBlankState = false;\r\n vm.ticksOverride = [];\r\n vm.totalCost = 0;\r\n vm.totalUsage = 0;\r\n vm.usageComparisonList.forEach(o => {\r\n vm.ticksOverride.push(\r\n new Date(moment(o.BillDate).format('MM/DD/YYYY')),\r\n );\r\n vm.totalCost = vm.totalCost + parseFloat(o.Bill_Amt);\r\n vm.totalUsage = vm.totalUsage + parseFloat(o.Usage);\r\n });\r\n vm.totalCost = vm.totalCost.toFixed();\r\n vm.totalUsage = vm.totalUsage.toFixed();\r\n vm.totalCostDecimal = String(\r\n Number((vm.totalCost.toString() + '').split('.')[1] || 0),\r\n ).padStart(2, '0');\r\n vm.averageCost = parseInt(\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].AverageUsageAmount,\r\n );\r\n vm.averageUsage = parseInt(\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0]\r\n .AverageMonthlyUsage,\r\n );\r\n vm.averageConsolidated =\r\n vm.meterObject.unitOfMeasure == 'Dollar'\r\n ? vm.averageCost\r\n : vm.averageUsage;\r\n vm.avgCostDecimal = String(\r\n Number((vm.averageCost.toString() + '').split('.')[1] || 0),\r\n ).padStart(2, '0');\r\n vm.averageUsageData = vm.averageUsage\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n vm.averageCostData = vm.averageCost\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n vm.totalCostData = vm.totalCost\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n vm.totalUsageData = vm.totalUsage\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n\r\n vm.usageComparisonList.forEach(o => {\r\n o.averageCost = vm.averageCost;\r\n o.averageUsage = vm.averageUsage;\r\n });\r\n if (!vm.meterObject.isMinMaxSet) {\r\n vm.meterObject.eligiblecompareToPrev =\r\n vm.usageComparisonList.length >= 13;\r\n $rootScope.$broadcast(\r\n 'setCalendarDate',\r\n vm.usageComparisonList[vm.usageComparisonList.length - 1]\r\n .BillDate,\r\n );\r\n }\r\n if (vm.meterObject.compareToPreviousYear) {\r\n getCompareUsageComparison();\r\n } else {\r\n loadInvoiceDataGraph();\r\n }\r\n } else {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n vm.meterObject.isBlankState = true;\r\n $('.energyUsageWidget').addClass('empty-state-container');\r\n }\r\n } else {\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n }\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n vm.meterObject.isBlankState = true;\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function getStartEndDate() {\r\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\r\n if (vm.meterObject.installationNumber) {\r\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\r\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\r\n } else {\r\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\r\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\r\n }\r\n\r\n if (vm.meterObject.serviceType === energyService.serviceType.Electric) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\r\n vm.dataToGet.meterType = vm.meterObject.meterType;\r\n vm.dataToGet.fromDate = vm.meterObject.startDate;\r\n vm.dataToGet.toDate = vm.meterObject.endDate;\r\n return getUsageComparisionService.sitecore\r\n .getUsageComparision(vm.dataToGet)\r\n .then(\r\n result => {\r\n if (result?.d?.results.length > 0) {\r\n const data =\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav\r\n .results;\r\n vm.comparisonUsage = ccEnergyUsageDto.transformUsageList(data);\r\n loadGraph();\r\n } else {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n vm.meterObject.isBlankState = true;\r\n console.log(error);\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n }\r\n },\r\n error => {\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n // account selector ------------------------------\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n vm.loaded = false;\r\n vm.fromInit = false;\r\n });\r\n // account selector ------------------------------\r\n function init() {\r\n vm.fromInit = true;\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo) {\r\n vm.meterObject = vm.meterObject.meterNumber\r\n ? vm.meterObject\r\n : ccMeterSelectorService.getMeterObject();\r\n if (vm.meterObject.serviceType != '') {\r\n $rootScope.serviceType = vm.meterObject.serviceType;\r\n } else {\r\n $rootScope.serviceType = 'Not Eligible';\r\n }\r\n\r\n if (\r\n _globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)\r\n ) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = _globalSelectedAccount.userEmail;\r\n _bpNumber = _globalSelectedAccount.bpNumber;\r\n if (_globalSelectedAccount.meterNumber === null) {\r\n vm.lighting = true;\r\n }\r\n }\r\n }\r\n vm.meterObject.isBlankState = false;\r\n if ($('.energyUsageWidget').hasClass('empty-state-container')) {\r\n $('.energyUsageWidget').removeClass('empty-state-container');\r\n }\r\n }\r\n function showBlankState() {\r\n switch (vm.meterObject.periodType) {\r\n case 'Year':\r\n {\r\n if (vm.usageComparisonList.length == 0) {\r\n vm.meterObject.isBlankState = true;\r\n vm.meterObject.disableCalendar = true;\r\n }\r\n }\r\n break;\r\n }\r\n } // account search function\r\n function accountSearch() {\r\n accountSearchService.sitecore\r\n .cacheAccountSearch({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n })\r\n .then(result => {\r\n var dataTemp = [];\r\n if (\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results.length > 0 &&\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results.length > 0\r\n ) {\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(\r\n itm => {\r\n itm.PropToInst.results.forEach(o => {\r\n o.ActiveStatus =\r\n o.MoveOutDate &&\r\n Date.parse(o.MoveOutDate) > new Date().getTime()\r\n ? '(Active)'\r\n : '(Closed)';\r\n dataTemp.push(o);\r\n });\r\n },\r\n );\r\n var defaultItem = dataTemp.filter(function(itm) {\r\n return itm.Division === '01' && itm.MeterType === 'AMI';\r\n });\r\n if (defaultItem.length == 0) {\r\n defaultItem = dataTemp.filter(function(itm) {\r\n return itm.Division === '01';\r\n });\r\n }\r\n if (defaultItem.length == 0) {\r\n defaultItem = dataTemp.filter(function(itm) {\r\n return itm.Division === '02';\r\n });\r\n }\r\n var values = defaultItem;\r\n const lookup = values.reduce((a, e) => {\r\n a[e.MeterNumber] = ++a[e.MeterNumber] || 0;\r\n return a;\r\n }, {});\r\n var tempresult = values.filter(e => lookup[e.MeterNumber]);\r\n if (tempresult.length > 0) {\r\n var arrayresult = tempresult.reduce((obj, item) => {\r\n obj[item.MeterNumber]\r\n ? obj[item.MeterNumber].ActiveDate > item.ActiveDate\r\n ? (obj[item.MeterNumber].ActiveDate = item.ActiveDate)\r\n : obj[item.MeterNumber].ActiveDate\r\n : (obj[item.MeterNumber] = { ...item });\r\n obj[item.MeterNumber]\r\n ? obj[item.MeterNumber].MoveOutDate > item.MoveOutDate\r\n ? obj[item.MeterNumber].MoveOutDate\r\n : (obj[item.MeterNumber].MoveOutDate = item.MoveOutDate)\r\n : (obj[item.MeterNumber] = { ...item });\r\n obj[item.MeterNumber]\r\n ? obj[item.MeterNumber].ActiveStatus == item.ActiveStatus\r\n ? obj[item.MeterNumber].ActiveStatus\r\n : (obj[item.MeterNumber].ActiveStatus = '(Active)')\r\n : (obj[item.MeterNumber] = { ...item });\r\n return obj;\r\n }, {});\r\n vm.arraySearchList = Object.values(arrayresult);\r\n } else {\r\n vm.arraySearchList = defaultItem;\r\n }\r\n vm.accountsearchList = vm.arraySearchList.filter(\r\n meter =>\r\n parseInt(\r\n (new Date() - new Date(meter.MoveOutDate)) /\r\n (1000 * 60 * 60 * 24),\r\n 10,\r\n ) < 730 ||\r\n (vm.accountsearchList[0].MoveOutDate &&\r\n Date.parse(vm.arraySearchList[0].MoveOutDate) >\r\n new Date().getTime()),\r\n );\r\n vm.meterObject.meterNumber = vm.accountsearchList[0].MeterNumber;\r\n vm.meterObject.meterType = vm.accountsearchList[0].MeterType;\r\n vm.meterObject.serviceType =\r\n vm.accountsearchList[0].Division === '01'\r\n ? energyService.serviceType.Electric\r\n : energyService.serviceType.Gas;\r\n vm.meterObject.unitOfMeasure =\r\n vm.meterObject.serviceType === energyService.serviceType.Gas\r\n ? energyService.unitOfMeasure.CCF\r\n : energyService.unitOfMeasure.kWh;\r\n vm.meterObject.netMeter = false; //defaultItem[0].IsSmartGridMeterInd;\r\n vm.meterObject.activeStatus =\r\n vm.accountsearchList[0].MoveOutDate &&\r\n Date.parse(vm.arraySearchList[0].MoveOutDate) > new Date().getTime()\r\n ? '(Active)'\r\n : '(Closed)';\r\n if (vm.meterObject.isPrepaid) {\r\n loadPrepaidGrpah();\r\n } else {\r\n getMeterDetails();\r\n }\r\n } else {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n }\r\n });\r\n }\r\n function loadPrepaidGrpah() {\r\n vm.meterObject.periodType = 'Week';\r\n vm.meterObject.intervalFrequency = 'dailyEnergy';\r\n var date = new Date(\r\n moment(\r\n `${moment().month() + 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n );\r\n vm.meterObject.startDate = new Date(\r\n date.setDate(\r\n date.getDate() - date.getDay() - 1 + (date.getDay() - 1 === 0 ? 1 : 1),\r\n ),\r\n );\r\n vm.meterObject.endDate = new Date(\r\n date.setDate(date.getDate() - date.getDay() + 6),\r\n );\r\n loadGraph();\r\n }\r\n function getMeterDetails() {\r\n const params = {\r\n contractAccount: _globalSelectedAccount.accountNum,\r\n };\r\n return getMeterNumberService.sitecore\r\n .getMeterNumber(params)\r\n .then(result => {\r\n if (result) {\r\n vm.meterDetails =\r\n result.d.Multiple_CA_Nav.results[0].CAToMeter_Nav.results;\r\n vm.checkMeter = vm.meterDetails.filter(function(item) {\r\n if (item.MeterNumber.includes(vm.meterObject.meterNumber))\r\n return item;\r\n });\r\n vm.meterObject.isNetMeter =\r\n vm.checkMeter[0].NetMeterFlg == 'X' ? true : false;\r\n if (vm.meterObject.isNetMeter) {\r\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\r\n }\r\n getStartEndDate();\r\n } else {\r\n console.log(error);\r\n if (vm.isDashboard) {\r\n componentStateHandler.failedStateDashboard(vm);\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n reject(errorHandlingService.getException(error));\r\n }\r\n });\r\n }\r\n function load() {\r\n vm.meterObject = ccMeterSelectorService.getMeterObject();\r\n\r\n loadGraph();\r\n }\r\n\r\n function loadGraph() {\r\n if (vm.meterObject.periodType == 'Year' && !vm.meterObject.isNetMeter) {\r\n vm.loadingSpinner = true;\r\n $timeout(function() {\r\n usageComparison();\r\n }, 1000);\r\n } else {\r\n getEnergyUsage();\r\n }\r\n }\r\n\r\n function loadInvoiceDataGraph() {\r\n vm.loaded = false;\r\n let graphArray = [];\r\n if (vm.meterObject.compareToPreviousYear) {\r\n graphArray = ccEnergyUsageDto.transformCompareInvoiceGraph(\r\n vm.usageComparisonList,\r\n vm.ConsolidatedUsageList,\r\n vm.meterObject,\r\n graphColors,\r\n );\r\n } else {\r\n graphArray = ccEnergyUsageDto.transformInvoiceGraph(\r\n vm.usageComparisonList,\r\n vm.weatherInfoArray,\r\n vm.meterObject,\r\n vm.invoiceListArray,\r\n graphColors,\r\n );\r\n }\r\n drawGraph(graphArray);\r\n vm.loaded = true;\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n // });\r\n }\r\n init();\r\n function loadUsageDataGraph() {\r\n vm.loaded = false;\r\n let graphArray = [];\r\n vm.energyUsageArray = vm.energyUsageArray.Series1\r\n ? vm.energyUsageArray\r\n : energyService.energyDataFail;\r\n\r\n if (vm.meterObject.compareToPreviousYear) {\r\n vm.compareEnergyUsageArray = vm.compareEnergyUsageArray.Series1\r\n ? vm.compareEnergyUsageArray\r\n : energyService.energyDataFail;\r\n graphArray = ccEnergyUsageDto.transformCompareEnergyUsage(\r\n vm.resultantArray,\r\n vm.compareEnergyUsageArray,\r\n vm.meterObject,\r\n graphColors,\r\n );\r\n } else {\r\n graphArray = ccEnergyUsageDto.transformEnergyUsage(\r\n vm.energyUsageArray,\r\n vm.weatherInfoArray,\r\n vm.meterObject,\r\n graphColors,\r\n );\r\n }\r\n\r\n drawGraph(graphArray);\r\n\r\n vm.loaded = true;\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n }\r\n\r\n function drawGraph(graphData) {\r\n google.charts.load(energyService.string.current, {\r\n packages: [energyService.string.corechart, 'controls'],\r\n });\r\n google.charts.setOnLoadCallback(drawAxisTickColors);\r\n\r\n let chartSeries = {\r\n 0: {\r\n visibleInLegend: false,\r\n tooltip: true,\r\n },\r\n 1: {\r\n type: energyService.string.line,\r\n visibleInLegend: false,\r\n lineDashStyle: [6, 4],\r\n color: graphColors.averageLine,\r\n tooltip: false,\r\n enableInteractivity: false,\r\n },\r\n };\r\n\r\n if (vm.meterObject.compareToPreviousYear && vm.meterObject.netMeter) {\r\n chartSeries = {\r\n 0: {\r\n visibleInLegend: false,\r\n tooltip: false,\r\n },\r\n 1: {\r\n color: 'transparent',\r\n enableInteractivity: false,\r\n visibleInLegend: false,\r\n },\r\n 2: {\r\n visibleInLegend: false,\r\n tooltip: false,\r\n },\r\n 3: {\r\n color: 'transparent',\r\n enableInteractivity: false,\r\n visibleInLegend: false,\r\n },\r\n 4: {\r\n visibleInLegend: false,\r\n tooltip: false,\r\n },\r\n 5: {\r\n color: 'transparent',\r\n enableInteractivity: false,\r\n visibleInLegend: false,\r\n },\r\n 6: {\r\n visibleInLegend: false,\r\n tooltip: true,\r\n },\r\n 7: {\r\n type: energyService.string.line,\r\n visibleInLegend: false,\r\n lineDashStyle: [6, 4],\r\n color: graphColors.averageLine,\r\n tooltip: false,\r\n enableInteractivity: false,\r\n },\r\n };\r\n } else if (\r\n vm.meterObject.compareToPreviousYear ||\r\n vm.meterObject.netMeter\r\n ) {\r\n chartSeries = {\r\n 0: {\r\n visibleInLegend: false,\r\n tooltip: false,\r\n },\r\n 1: {\r\n color: 'transparent',\r\n enableInteractivity: false,\r\n visibleInLegend: false,\r\n },\r\n 2: {\r\n visibleInLegend: false,\r\n tooltip: true,\r\n },\r\n 3: {\r\n type: energyService.string.line,\r\n visibleInLegend: false,\r\n lineDashStyle: [6, 4],\r\n color: graphColors.averageLine,\r\n tooltip: false,\r\n enableInteractivity: false,\r\n },\r\n };\r\n }\r\n\r\n function drawAxisTickColors() {\r\n vm.loadingSpinner = false;\r\n vm.meterObject.loadingSpinner = false;\r\n componentStateHandler.showComponent(vm);\r\n const data = google.visualization.arrayToDataTable(graphData);\r\n\r\n var options = {\r\n height: 480,\r\n chartArea: {\r\n width: '90%',\r\n height: '70%',\r\n left: '75',\r\n },\r\n displayAnnotations: true,\r\n annotations: {\r\n alwaysOutside: true,\r\n style: energyService.string.point,\r\n textStyle: {\r\n fontSize: 14,\r\n color: graphColors.temperatureText,\r\n },\r\n },\r\n bar: {\r\n groupWidth:\r\n vm.meterObject.compareToPreviousYear && vm.meterObject.netMeter\r\n ? '60'\r\n : vm.meterObject.compareToPreviousYear || vm.meterObject.netMeter\r\n ? '48'\r\n : vm.is_mobile &&\r\n (vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' ||\r\n vm.meterObject.intervalFrequency == 'quarterHourlyEnergyUse')\r\n ? '9'\r\n : '18',\r\n },\r\n tooltip: {\r\n ignoreBounds: false,\r\n isHtml: true,\r\n textStyle: {\r\n color: '#747474',\r\n fontSize: 16,\r\n },\r\n trigger: vm.meterObject.compareToPreviousYear ? 'none' : '',\r\n },\r\n series: chartSeries,\r\n hAxis: {\r\n format:\r\n vm.meterObject.periodType === 'Year' &&\r\n vm.meterObject.compareToPreviousYear\r\n ? 'MMM'\r\n : vm.meterObject.periodType === 'Year' &&\r\n !vm.meterObject.compareToPreviousYear\r\n ? \"MMM \\n''yy\"\r\n : vm.meterObject.periodType === 'billingCycle' ||\r\n vm.meterObject.periodType === 'Week'\r\n ? 'MMM \\ndd'\r\n : vm.meterObject.intervalFrequency == 'hourlyEnergyUse'\r\n ? 'h \\na'\r\n : 'h: mm \\na',\r\n gridlines: {\r\n color: '#ffffff',\r\n },\r\n textPosition: energyService.string.out,\r\n viewWindowMode: energyService.string.maximized,\r\n //showTextEvery: 1,\r\n slantedText: false,\r\n slantedTextAngle: 0,\r\n textStyle: {\r\n fontSize: 16,\r\n color: '#747474',\r\n bold: false,\r\n italic: false,\r\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif',\r\n },\r\n //ticks: vm.ticksOverride,\r\n },\r\n vAxis: {\r\n title:\r\n vm.meterObject.unitOfMeasure === energyService.unitOfMeasure.Dollar\r\n ? energyService.string.CostOfUnitsConsumed\r\n : vm.meterObject.unitOfMeasure,\r\n format:\r\n vm.meterObject.unitOfMeasure === energyService.unitOfMeasure.Dollar\r\n ? '$##'\r\n : '',\r\n gridlines: {\r\n color: graphColors.gridLines,\r\n },\r\n paddingRight: '75',\r\n marginRight: '75',\r\n textStyle: {\r\n fontSize: 14,\r\n color: '#747474',\r\n bold: false,\r\n italic: false,\r\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif',\r\n },\r\n viewWindow: {\r\n min: 0,\r\n },\r\n titleTextStyle: {\r\n fontSize: 16,\r\n color: '#747474',\r\n bold: false,\r\n italic: false,\r\n fontName: '\"NewsGothicBT-Roman\", Helvetica, Arial, sans-serif',\r\n },\r\n },\r\n };\r\n\r\n let graphColumnCount = vm.meterObject.netMeter ? 7 : 4;\r\n if (vm.meterObject.compareToPreviousYear) {\r\n graphColumnCount = vm.meterObject.netMeter ? 12 : 6;\r\n }\r\n\r\n const columnViewArray = [];\r\n i = 0;\r\n for (i = 0; i < graphColumnCount; i++) {\r\n columnViewArray.push(i);\r\n }\r\n columnViewArray.push({\r\n type: energyService.string.string,\r\n label: '',\r\n calc(d, r) {\r\n return vm.averageConsolidated;\r\n },\r\n });\r\n\r\n const viewWithKey = new google.visualization.DataView(data);\r\n viewWithKey.setColumns(columnViewArray);\r\n\r\n const columnDataArray = [];\r\n i = 0;\r\n for (i = 0; i < graphColumnCount; i++) {\r\n columnDataArray.push(i);\r\n }\r\n columnDataArray.push({\r\n type: energyService.string.number,\r\n calc(dt, row) {\r\n return vm.averageConsolidated;\r\n },\r\n });\r\n const dv = new google.visualization.DataView(data);\r\n dv.setColumns(columnDataArray);\r\n\r\n if (\r\n (vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse' ||\r\n vm.meterObject.intervalFrequency == 'quarterHourlyEnergyUse') &&\r\n !vm.is_mobile\r\n ) {\r\n vm.start =\r\n moment(vm.meterObject.startDate).format('MM/DD/YYYY') +\r\n ' 12:00:00 AM';\r\n vm.end =\r\n vm.meterObject.intervalFrequency == 'hourlyEnergyUse'\r\n ? moment(vm.meterObject.startDate).format('MM/DD/YYYY') +\r\n ' 10:00:00 PM'\r\n : vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse'\r\n ? moment(vm.meterObject.startDate).format('MM/DD/YYYY') +\r\n ' 05:30:00 PM'\r\n : moment(vm.meterObject.startDate).format('MM/DD/YYYY') +\r\n ' 07:30:00 AM';\r\n\r\n var chart = new google.visualization.ChartWrapper({\r\n chartType: 'ColumnChart',\r\n containerId: 'daily_container_count_lineChart',\r\n options: options,\r\n });\r\n\r\n var control = new google.visualization.ControlWrapper({\r\n controlType: 'ChartRangeFilter',\r\n containerId: 'control_div',\r\n options: {\r\n filterColumnIndex: 0,\r\n snapToData: false,\r\n ui: {\r\n chartOptions: {\r\n chartArea: {\r\n width: '90%',\r\n height: 15,\r\n backgroundColor: '#4C4C4C',\r\n },\r\n series: {\r\n 0: { color: 'transparent' },\r\n 1: { color: 'transparent' },\r\n },\r\n haxis: {\r\n baselineColor: 'none',\r\n },\r\n height: 15,\r\n },\r\n },\r\n },\r\n state: {\r\n range: {\r\n start: new Date(vm.start),\r\n end: new Date(vm.end),\r\n },\r\n },\r\n });\r\n\r\n google.visualization.events.addListener(\r\n control,\r\n 'statechange',\r\n function() {\r\n var state = control.getState();\r\n var view = new google.visualization.DataView(dv);\r\n view.setRows(\r\n view.getFilteredRows([\r\n {\r\n column: 0,\r\n minValue: state.range.start,\r\n maxValue: state.range.end,\r\n },\r\n ]),\r\n );\r\n if (\r\n new Date(vm.start).getTime() !== state.range.start.getTime() &&\r\n new Date(vm.end).getTime() !== state.range.end.getTime()\r\n ) {\r\n var view = new google.visualization.DataView(dv);\r\n vm.start = state.range.start;\r\n vm.end = state.range.end;\r\n view.setRows(\r\n view.getFilteredRows([\r\n {\r\n column: 0,\r\n minValue: state.range.start,\r\n maxValue: state.range.end,\r\n },\r\n ]),\r\n );\r\n } else {\r\n if (\r\n new Date(vm.start).getTime() !== state.range.start.getTime() &&\r\n new Date(vm.end).getTime() === state.range.end.getTime()\r\n ) {\r\n state.range.end =\r\n vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse'\r\n ? new Date(\r\n state.range.end.setHours(\r\n state.range.start.getHours() + 13,\r\n ),\r\n )\r\n : new Date(\r\n state.range.end.setHours(\r\n state.range.start.getHours() + 7,\r\n ),\r\n );\r\n } else if (\r\n new Date(vm.start).getTime() === state.range.start.getTime() &&\r\n new Date(vm.end).getTime() !== state.range.end.getTime()\r\n ) {\r\n state.range.start =\r\n vm.meterObject.intervalFrequency == 'halfHourlyEnergyUse'\r\n ? new Date(\r\n state.range.start.setHours(\r\n state.range.end.getHours() - 13,\r\n ),\r\n )\r\n : new Date(\r\n state.range.start.setHours(\r\n state.range.end.getHours() - 7,\r\n ),\r\n );\r\n } else {\r\n state.range.start = new Date(vm.start);\r\n state.range.end = new Date(vm.end);\r\n }\r\n var view = new google.visualization.DataView(dv);\r\n view.setRows(\r\n view.getFilteredRows([\r\n {\r\n column: 0,\r\n minValue: state.range.start,\r\n maxValue: state.range.end,\r\n },\r\n ]),\r\n );\r\n dashboard.draw(dv);\r\n }\r\n },\r\n );\r\n\r\n var dashboard = new google.visualization.Dashboard(\r\n document.getElementById('dashboard_div'),\r\n );\r\n dashboard.bind(control, chart);\r\n dashboard.draw(dv);\r\n $(window).resize(function() {\r\n dashboard.draw(dv);\r\n });\r\n } else {\r\n if (\r\n vm.meterObject.periodType != 'billingCycle' &&\r\n vm.meterObject.periodType != 'Day'\r\n ) {\r\n options.hAxis.ticks = vm.ticksOverride;\r\n }\r\n options.hAxis.showTextEvery =\r\n vm.meterObject.periodType == 'Day' ||\r\n vm.meterObject.periodType == 'billingCycle'\r\n ? 2\r\n : 1;\r\n if (vm.meterObject.netMeter) {\r\n options.focusTarget = 'category';\r\n }\r\n const container = document.getElementById(\r\n energyService.string.graphDiv,\r\n );\r\n const chart = new google.visualization.ColumnChart(container);\r\n\r\n chart.draw(dv, options);\r\n\r\n $(window).resize(function() {\r\n if ($(window).width() > 767) {\r\n chart.draw(dv, options);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","app.controller('ccEnergyUsageController', ccEnergyUsageController);\r\n\r\nccEnergyUsageController.$inject = [\r\n '$log',\r\n 'ccMeterSelectorService',\r\n 'ccEnergyUsageDto',\r\n 'accountSearchService',\r\n 'genericHelperService',\r\n 'getInvoiceListService',\r\n 'getInvoiceDetailsService',\r\n 'commonService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n '$window',\r\n '$rootScope',\r\n 'energyService',\r\n 'getUsageComparisionService',\r\n 'getMeterNumberService',\r\n 'commongaTaggingService',\r\n '$timeout',\r\n 'getHistoricUsageService',\r\n];\r\n\r\nfunction ccEnergyUsageController(\r\n $log,\r\n ccMeterSelectorService,\r\n ccEnergyUsageDto,\r\n accountSearchService,\r\n genericHelperService,\r\n getInvoiceListService,\r\n getInvoiceDetailsService,\r\n commonService,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n $window,\r\n $rootScope,\r\n energyService,\r\n getUsageComparisionService,\r\n getMeterNumberService,\r\n commongaTaggingService,\r\n $timeout,\r\n getHistoricUsageService,\r\n) {\r\n const vm = this;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n vm.meterText = '';\r\n vm.guid = '';\r\n vm.period = energyService.periodTypeOption.Year;\r\n vm.depthChange = 'year';\r\n vm.setValue = moment(\r\n `${moment().month() + 1}/01/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n vm.maxDate = new Date();\r\n vm.minDate = new Date('01/01/2020');\r\n vm.viewUsageDetails = false;\r\n vm.viewGraphOptions = false;\r\n vm.isCalendar = false;\r\n vm.meterObject = {};\r\n vm.accountSearchItems = [];\r\n vm.accountSearchArray = [];\r\n vm.invoiceListArray = [];\r\n vm.invoiceDetailsArray = [];\r\n vm.meterDetails = [];\r\n vm.currentUser = {};\r\n vm.dataToGet = {};\r\n vm.showLoader = false;\r\n vm.lighting = false;\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.viewCalendar = false;\r\n vm.showMinsView = false;\r\n vm.isMovedOut = false;\r\n vm.isBlankState = false;\r\n vm.disableCalendar = false;\r\n vm.isDownloadclicked = false;\r\n vm.showTable = false;\r\n vm.isFailState = false;\r\n vm.noInvoice = false;\r\n\r\n vm.selectPeriod = selectPeriod;\r\n vm.selectUnitOfMeasure = selectUnitOfMeasure;\r\n vm.selectMeter = selectMeter;\r\n vm.selectStartDate = selectStartDate;\r\n vm.selectEndDate = selectEndDate;\r\n vm.selectExport = selectExport;\r\n vm.selectPrint = selectPrint;\r\n vm.toggleCompareToPreviousYear = toggleCompareToPreviousYear;\r\n vm.toggleViewUsageDetails = toggleViewUsageDetails;\r\n vm.toggleBillCycle = toggleBillCycle;\r\n vm.toggleGraphOptions = toggleGraphOptions;\r\n vm.toggleShowMinutesView = toggleShowMinutesView;\r\n vm.toggleNetMeter = toggleNetMeter;\r\n vm.downloadMyData = downloadMyData;\r\n vm.showCalendar = showCalendar;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.usageLoading = false;\r\n vm.usageComparison = usageComparison;\r\n vm.showAllToggle = showAllToggle;\r\n vm.init = init;\r\n vm.isElecticMeter = true;\r\n const _kwValue = assetService.strings.VALUE;\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n vm.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n function showCalendar() {\r\n vm.viewCalendar = !vm.viewCalendar;\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n vm.meterObject.serviceType == 'Electric'\r\n ? arrayElements.push('subheadline:Electric Meter')\r\n : arrayElements.push('subheadline:Gas Meter');\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function additionalAttributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n $scope.$on('setDate', (e, d) => {\r\n vm.isCalendar = true;\r\n vm.viewCalendar = false;\r\n vm.setValue = d;\r\n vm.meterObject.showMinutesView = false;\r\n vm.meterObject.startDate =\r\n vm.period == 'Week'\r\n ? new Date(\r\n d.setDate(\r\n d.getDate() - d.getDay() - 1 + (d.getDay() - 1 === 0 ? -6 : 1),\r\n ),\r\n )\r\n : d;\r\n attributePush(\r\n `workFlow:${$('#hdn-date').attr('businessFunction')}`,\r\n `headline:${$('#hdn-date').attr('headLine')}`,\r\n `buttonText:${$('#hdn-date').attr('buttonText')}`,\r\n );\r\n setDateValue(d, vm.period);\r\n });\r\n function selectExport() {\r\n // export data;\r\n $rootScope.$broadcast('exportData', vm.meterObject);\r\n }\r\n\r\n function selectPrint() {\r\n $window.print();\r\n }\r\n function downloadMyData() {\r\n // download into xml\r\n vm.showLoader = true;\r\n if (!vm.meterObject.isDownloadclicked) {\r\n vm.meterObject.isDownloadclicked = true;\r\n $rootScope.$broadcast('downloadData', 'download');\r\n }\r\n }\r\n\r\n $scope.$on('resetLoadingSpinner', (index, value) => {\r\n vm.showLoader = value;\r\n });\r\n\r\n function setIntervalFrequency() {\r\n // update this matrix when we now all interval types\r\n let { periodType } = vm.meterObject;\r\n if (\r\n vm.period === 'Year' &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n periodType = energyService.periodType.Year; // possible change\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy; // possible change\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Months &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n periodType = energyService.periodType.BillingCycle;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy;\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Week &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n periodType = energyService.periodType.Week;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy;\r\n // vm.meterObject.startDate = new Date(tempDate.setDate(tempDate.getDate() - tempDate.getDay() - 1 + ((tempDate.getDay() - 1) === 0 ? -6 : 1)))\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Days &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n periodType = energyService.periodType.Day;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.hourlyEnergyUse;\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Hours &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n vm.meterObject.endDate = vm.meterObject.startDate;\r\n periodType = energyService.periodType.Day;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.hourlyEnergyUse;\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Min &&\r\n vm.meterObject.serviceType === energyService.serviceType.Electric\r\n ) {\r\n vm.meterObject.endDate = vm.meterObject.startDate;\r\n periodType = energyService.periodType.Day;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.quarterHourlyEnergyUse;\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Year &&\r\n vm.meterObject.serviceType === energyService.serviceType.Gas\r\n ) {\r\n periodType = energyService.periodType.Year; // possible change\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy; // possible change\r\n } else if (\r\n vm.period === energyService.periodTypeOption.Months &&\r\n vm.meterObject.serviceType === energyService.serviceType.Gas\r\n ) {\r\n periodType = energyService.periodType.BillingCycle; // possible change\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy; // possible change\r\n } else {\r\n periodType = energyService.periodType.Week;\r\n vm.meterObject.intervalFrequency =\r\n energyService.intervalFrequency.dailyEnergy;\r\n }\r\n\r\n if (vm.meterObject.isNetMeter && vm.period === 'Year') {\r\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\r\n }\r\n //vm.meterObject.loadingSpinner = false;\r\n tempObject = vm.meterObject;\r\n tempObject.periodType = periodType;\r\n ccMeterSelectorService.setMeterObject(tempObject);\r\n }\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function toggleViewUsageDetails() {\r\n pushDL(\r\n 'energy_usage',\r\n 'view-usage-table',\r\n 'usage-details' +\r\n '-|-' +\r\n `${vm.meterObject.serviceType}-meter`.toLowerCase(),\r\n );\r\n vm.loadingSpinner = true;\r\n $rootScope.download = true;\r\n getInvoiceList();\r\n }\r\n\r\n function selectStartDate() {\r\n setIntervalFrequency();\r\n }\r\n\r\n function selectEndDate() {\r\n setIntervalFrequency();\r\n }\r\n\r\n function toggleBillCycle() {\r\n vm.meterObject.billCycle = !vm.meterObject.billCycle;\r\n if (vm.meterObject.billCycle) {\r\n vm.meterObject.startDate = vm.meterObject.billStartDate;\r\n vm.meterObject.endDate = vm.meterObject.billEndDate;\r\n } else {\r\n vm.meterObject.endDate = new Date();\r\n vm.meterObject.endDate.setDate(1);\r\n vm.meterObject.endDate.setMonth(vm.meterObject.endDate.getMonth());\r\n vm.meterObject.startDate = new Date();\r\n vm.meterObject.startDate.setDate(1);\r\n vm.meterObject.startDate.setMonth(\r\n vm.meterObject.startDate.getMonth() - 1,\r\n );\r\n }\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n\r\n function toggleGraphOptions(setFilter) {\r\n vm.viewGraphOptions = !vm.viewGraphOptions;\r\n if (setFilter) {\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n }\r\n\r\n function selectMeter(meterSelected, fromLoad) {\r\n vm.meterObject.loadingSpinner = true;\r\n vm.meterObject.meterNumber = meterSelected.value.meterNumber;\r\n vm.meterObject.meterType = meterSelected.value.meterType;\r\n vm.meterObject.netMeter = false;\r\n vm.meterObject.serviceType = meterSelected.value.serviceType;\r\n vm.meterObject.unitOfMeasure =\r\n meterSelected.value.serviceType === energyService.serviceType.Gas\r\n ? energyService.unitOfMeasure.CCF\r\n : energyService.unitOfMeasure.kWh;\r\n vm.meterObject.periodType = energyService.periodType.Year;\r\n vm.meterObject.MoveOutDate = meterSelected.value.MoveOutDate;\r\n vm.isMovedOut = vm.meterObject.MoveOutDate < new Date();\r\n vm.period = energyService.periodTypeOption.Year;\r\n vm.meterText = meterSelected.text;\r\n vm.showTable = false;\r\n vm.isShowAll = undefined;\r\n vm.getMinDate = meterSelected.value.activeDate;\r\n vm.viewUsageDetails =\r\n new Date(vm.getMinDate).getTime() != new Date().getTime();\r\n vm.meterObject.division =\r\n meterSelected.value.serviceType === energyService.serviceType.Gas\r\n ? '02'\r\n : '01';\r\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\r\n vm.meterObject.endDate = moment(\r\n `${moment().month() + 1}/${moment().format('DD')}/${moment().year()}`,\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n vm.meterType =\r\n vm.meterObject.serviceType == 'Electric' ? 'Electric Meter' : 'Gas Meter';\r\n\r\n vm.isElecticMeter = vm.meterObject.serviceType == 'Electric' ? true : false;\r\n\r\n if (!fromLoad) {\r\n additionalAttributePush(\r\n `workFlow:${$('#hdn-meter').attr('businessFunction')}`,\r\n `headline:${$('#hdn-meter').attr('headLine')}`,\r\n `subheadline:${$('#hdn-meter').attr('subheadLine')}`,\r\n `buttonText:${vm.meterType}`,\r\n );\r\n }\r\n getMeterDetails();\r\n }\r\n function selectPeriod(period) {\r\n ResetBlankStateValues();\r\n vm.meterObject.netMeter = false;\r\n vm.meterObject.showMinutesView = false;\r\n vm.viewCalendar = false;\r\n vm.isCalendar = false;\r\n vm.labelCalendar = period == 'Day' ? 'Day Selection' : 'Week Selection';\r\n vm.period = period;\r\n vm.meterObject.periodType = period;\r\n vm.meterObject.compareToPreviousYear = false;\r\n vm.meterObject.unitOfMeasure =\r\n vm.meterObject.serviceType === energyService.serviceType.Gas\r\n ? 'CCF'\r\n : 'kWh';\r\n vm.invoiceArray = _.orderBy(\r\n vm.usageComparisonList,\r\n ['BillDate'],\r\n ['desc', 'asc'],\r\n );\r\n if (\r\n (vm.invoiceArray.length > 0 &&\r\n (period == 'Year' || period == 'Months')) ||\r\n (new Date(vm.getMinDate) != new Date() &&\r\n (period == 'Day' || period == 'Week'))\r\n ) {\r\n if (vm.isMovedOut) {\r\n var date =\r\n period == 'Year' || period == 'Months'\r\n ? vm.defaultEndBillingDate\r\n ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY'))\r\n : new Date(vm.usageComparisonList[0].BillingEndDate)\r\n : vm.meterObject.MoveOutDate;\r\n if (period == 'Day' || period == 'Week')\r\n vm.setValue = vm.meterObject.MoveOutDate;\r\n } else {\r\n var date =\r\n period == 'Day' || period == 'Week'\r\n ? new Date(\r\n moment(\r\n `${moment().month() +\r\n 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n )\r\n : period == 'Year'\r\n ? vm.defaultEndBillingDate\r\n ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY'))\r\n : new Date(vm.usageComparisonList[0].BillingEndDate)\r\n : period == 'Months'\r\n ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY'))\r\n : new Date();\r\n vm.setValue =\r\n period == 'Day' || period == 'Week'\r\n ? new Date(\r\n moment(\r\n `${moment().month() +\r\n 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n )\r\n : period == 'Year'\r\n ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY'))\r\n : period == 'Months'\r\n ? new Date(moment(vm.defaultEndBillingDate).format('MM/DD/YYYY'))\r\n : new Date();\r\n }\r\n vm.depthChange =\r\n period == 'Year' || period == 'Months' ? 'year' : 'Month';\r\n if (period == 'Day' || period == 'Week') setMinMax(vm.period, date);\r\n\r\n setDateValue(date, vm.period);\r\n } else {\r\n showBlankState();\r\n }\r\n }\r\n $scope.$on('setCalendarDate', (e, date) => {\r\n vm.defaultEndBillingDate = date;\r\n if (vm.isMovedOut) {\r\n vm.setValue =\r\n vm.period == 'Year' || vm.period == 'Months'\r\n ? date\r\n : vm.meterObject.MoveOutDate;\r\n } else {\r\n vm.setValue =\r\n vm.period == 'Year' || vm.period == 'Months'\r\n ? date\r\n : new Date(\r\n moment(\r\n `${moment().month() + 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n );\r\n }\r\n setMinMax(vm.period, date);\r\n vm.meterObject.isMinMaxSet = true;\r\n });\r\n function showBlankState() {\r\n switch (vm.meterObject.periodType) {\r\n case 'Year':\r\n if (vm.usageComparisonList.length == 0) {\r\n vm.meterObject.isBlankState = true;\r\n vm.meterObject.disableCalendar = true;\r\n }\r\n break;\r\n case 'Months':\r\n if (vm.usageComparisonList.length == 0) {\r\n vm.meterObject.isBlankState = true;\r\n vm.meterObject.disableCalendar = true;\r\n }\r\n break;\r\n case 'Week':\r\n if (new Date(vm.getMinDate) == new Date()) {\r\n vm.meterObject.isBlankState = true;\r\n vm.meterObject.disableCalendar = true;\r\n }\r\n break;\r\n case 'Day':\r\n if (new Date(vm.getMinDate) == new Date()) {\r\n vm.meterObject.isBlankState = true;\r\n vm.meterObject.disableCalendar = true;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n function ResetBlankStateValues() {\r\n vm.meterObject.isBlankState = false;\r\n vm.meterObject.disableCalendar = false;\r\n }\r\n function setDateValue(date, period) {\r\n ResetBlankStateValues();\r\n if (period == 'Year') {\r\n const getEndDate = new Date(date); //vm.usageComparisonList.filter(data => moment(data.BillDate).format('MMMM') == moment(date).format('MMMM') && moment(data.BillDate).format('YYYY') == moment(date).format('YYYY'));\r\n\r\n vm.meterObject.startDate = moment(\r\n moment(getEndDate, 'MM/DD/YYYY').subtract(13, 'months'),\r\n ).format('YYYY-MM-DDTHH:mm:ss'); //moment(`${(new Date(getEndDate[0].BillingStartDate).getMonth() == 0 ? 1 : new Date(getEndDate[0].BillingStartDate).getMonth())}/01/${date.getFullYear() - 1}`, 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\r\n vm.meterObject.endDate = moment(getEndDate).format('YYYY-MM-DDTHH:mm:ss'); //(moment(getEndDate[0].BillDate).format('MM') == getEndDate[0].Month) ? moment(getEndDate[0].BillDate).format('YYYY-MM-DDTHH:mm:ss') : moment(`${(new Date(getEndDate[0].BillDate).getMonth() + 1)}/01/${new Date(getEndDate[0].BillDate).getFullYear()}`, 'MM/DD/YYYY').format('YYYY-MM-DDTHH:mm:ss');\r\n\r\n if (vm.meterObject.endDate == 'Invalid date') {\r\n vm.meterObject.endDate = moment(new Date()).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n );\r\n }\r\n\r\n if (\r\n vm.meterObject.MoveOutDate < new Date() &&\r\n moment(date).subtract(12, 'months') < moment().subtract(12, 'months')\r\n ) {\r\n if (vm.getMinDate > moment().subtract(24, 'months')) {\r\n date = vm.getMinDate;\r\n vm.meterObject.startDate = moment(\r\n `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`,\r\n 'MM/D/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n } else {\r\n vm.meterObject.startDate = moment(\r\n `${date.getMonth() + 1}/01/${date.getFullYear() - 1}`,\r\n 'MM/D/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n } else if (vm.getMinDate > moment().subtract(24, 'months')) {\r\n date = vm.getMinDate;\r\n vm.meterObject.startDate = moment(\r\n `${date.getMonth() + 1}/01/${date.getFullYear()}`,\r\n 'MM/D/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n } else {\r\n vm.meterObject.startDate = vm.meterObject.isNetMeter\r\n ? moment(\r\n `${moment(date).format('MM')}/01/${new Date(date).getFullYear() -\r\n 1}`,\r\n 'MM/DD/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss')\r\n : moment(date)\r\n .subtract(14, 'months')\r\n .format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n } else if (period == 'Week') {\r\n const startDate = new Date(\r\n date.setDate(\r\n date.getDate() -\r\n date.getDay() -\r\n 1 +\r\n (date.getDay() - 1 === 0 ? 1 : 1),\r\n ),\r\n );\r\n const startDateSuffix = english_ordinal_suffix(startDate);\r\n const endDate = new Date(\r\n date.setDate(date.getDate() - date.getDay() + 6),\r\n );\r\n const endDateSuffix = english_ordinal_suffix(endDate);\r\n const textValue = `${startDate.toLocaleString('en-us', {\r\n month: 'short',\r\n })} ${startDateSuffix} - ${endDate.toLocaleString('en-us', {\r\n month: 'short',\r\n })} ${endDateSuffix}, ${date.getFullYear()}`;\r\n document.getElementById('inputCalendar').value = textValue;\r\n\r\n vm.meterObject.startDate = new Date(\r\n date.setDate(\r\n date.getDate() -\r\n date.getDay() -\r\n 1 +\r\n (date.getDay() - 1 === 0 ? -6 : 1),\r\n ),\r\n );\r\n vm.meterObject.endDate = new Date(\r\n date.setDate(date.getDate() - date.getDay() + 6),\r\n );\r\n } else if (period == 'Months') {\r\n var dateForMonths = [];\r\n if (vm.isCalendar) {\r\n var dateForMonths = vm.usageComparisonList.filter(\r\n data =>\r\n moment(data.BillDate).format('MMMM') ==\r\n date.toLocaleString('en-us', { month: 'long' }) &&\r\n moment(data.BillDate).format('YYYY') ==\r\n date.toLocaleString('en-us', { year: 'numeric' }),\r\n );\r\n } else {\r\n var dateForMonths = vm.usageComparisonList.filter(\r\n data =>\r\n moment(data.BillDate).format('MMMM') ==\r\n moment(\r\n `${moment(date).month() + 1}/01/${moment(date).year()}`,\r\n ).format('MMMM') &&\r\n moment(data.BillDate).format('YYYY') ==\r\n date.toLocaleString('en-us', { year: 'numeric' }),\r\n );\r\n }\r\n if (dateForMonths.length > 0) {\r\n vm.meterObject.startDate = new Date(\r\n moment(dateForMonths[0].BillingStartDate).utc(),\r\n );\r\n vm.meterObject.endDate = new Date(\r\n moment(dateForMonths[0].BillingEndDate).utc(),\r\n );\r\n } else {\r\n vm.meterObject.isBlankState = true;\r\n }\r\n } else {\r\n const crrentDateSuffix = english_ordinal_suffix(date);\r\n const currentYear = date.getFullYear();\r\n const currentMonth = date.toLocaleString('en-us', { month: 'long' });\r\n document.getElementById(\r\n 'inputCalendar',\r\n ).value = `${currentMonth} ${crrentDateSuffix}, ${currentYear}`;\r\n vm.meterObject.startDate = date;\r\n vm.meterObject.endDate = date;\r\n }\r\n\r\n setIntervalFrequency();\r\n }\r\n function setMinMax(period, date) {\r\n vm.period = period;\r\n vm.date = date;\r\n vm.invoiceArray = _.orderBy(\r\n vm.usageComparisonList,\r\n ['BillDate'],\r\n ['desc', 'asc'],\r\n );\r\n\r\n if (period == 'Week' || period == 'Day') {\r\n vm.minDate =\r\n new Date(moment(vm.getMinDate).add(24, 'months')) >\r\n new Date(\r\n moment(\r\n `${moment().month() + 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n )\r\n ? vm.getMinDate\r\n : new Date(\r\n moment(\r\n `${moment().month() + 1}/${moment().date()}/${moment().year() -\r\n 2}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n );\r\n // vm.invoiceArray.length > 0 ? new Date(moment(vm.invoiceArray[(vm.invoiceArray.length) - 1].BillingStartDate).utc()) : vm.getMinDate;\r\n vm.maxDate = vm.isMovedOut\r\n ? vm.meterObject.MoveOutDate\r\n : new Date(\r\n moment(\r\n `${moment().month() + 1}/${moment().date()}/${moment().year()}`,\r\n 'MM/DD/YYYY',\r\n )\r\n .subtract(1, 'days')\r\n .utc(),\r\n );\r\n } else if (period == 'Year') {\r\n vm.maxDate = new Date(moment(date));\r\n vm.minDate =\r\n new Date(moment(vm.getMinDate).add(24, 'months')) > new Date()\r\n ? vm.getMinDate\r\n : new Date(moment(new Date(), 'MM/DD/YYYY').subtract(24, 'months'));\r\n } else {\r\n vm.maxDate = new Date(moment(vm.invoiceArray[0].BillDate));\r\n vm.minDate = new Date(\r\n moment(vm.invoiceArray[0].BillDate, 'MM/DD/YYYY').subtract(\r\n 24,\r\n 'months',\r\n ),\r\n );\r\n }\r\n }\r\n function english_ordinal_suffix(dt) {\r\n const formattedDate =\r\n dt.getDate() +\r\n (dt.getDate() % 10 == 1 && dt.getDate() != 11\r\n ? 'st'\r\n : dt.getDate() % 10 == 2 && dt.getDate() != 12\r\n ? 'nd'\r\n : dt.getDate() % 10 == 3 && dt.getDate() != 13\r\n ? 'rd'\r\n : 'th');\r\n return formattedDate;\r\n }\r\n function selectUnitOfMeasure(unit) {\r\n vm.meterObject.compareToPreviousYear = false;\r\n if (unit === energyService.unitOfMeasure.Dollar) {\r\n vm.meterObject.periodType = energyService.periodType.Year;\r\n vm.period = energyService.periodTypeOption.Year;\r\n vm.meterObject.unitOfMeasure = unit;\r\n selectPeriod(vm.period);\r\n } else {\r\n vm.meterObject.unitOfMeasure = unit;\r\n setIntervalFrequency();\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n }\r\n\r\n function toggleCompareToPreviousYear() {\r\n vm.meterObject.compareToPreviousYear = !vm.meterObject\r\n .compareToPreviousYear;\r\n const tempArg = Array.prototype.slice.call(arguments);\r\n tempArg[0] = `workFlow:${tempArg[0]}`;\r\n tempArg[1] = `headline:${tempArg[1]}`;\r\n tempArg[2] = `addedSpec:${tempArg[2]}`;\r\n tempArg[3] = `buttonText:${\r\n vm.meterObject.compareToPreviousYear ? 'On' : 'off'\r\n }`;\r\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\r\n vm.meterObject.periodType = energyService.periodType.Year;\r\n vm.period = energyService.periodTypeOption.Year;\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n function toggleShowMinutesView() {\r\n vm.meterObject.showMinutesView = !vm.meterObject.showMinutesView;\r\n if (vm.meterObject.showMinutesView) {\r\n vm.meterObject.intervalFrequency =\r\n vm.checkMeter[0].MeterInterval == '30'\r\n ? 'halfHourlyEnergyUse'\r\n : vm.checkMeter[0].MeterInterval == '15'\r\n ? 'quarterHourlyEnergyUse'\r\n : 'hourlyEnergyUse';\r\n } else {\r\n vm.meterObject.intervalFrequency = 'hourlyEnergyUse';\r\n }\r\n const tempArg = Array.prototype.slice.call(arguments);\r\n tempArg[0] = `workFlow:${tempArg[0]}`;\r\n tempArg[1] = `headline:${tempArg[1]}`;\r\n tempArg[2] = `addedSpec:${\r\n vm.checkMeter[0].MeterInterval == '30' ? tempArg[3] : tempArg[2]\r\n }`;\r\n tempArg[3] = `buttonText:${vm.meterObject.showMinutesView ? 'On' : 'off'}`;\r\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n function toggleNetMeter() {\r\n vm.meterObject.netMeter = !vm.meterObject.netMeter;\r\n if (vm.meterObject.isNetMeter) {\r\n vm.meterObject.intervalFrequency = 'billingCycleEnergyUse';\r\n }\r\n const tempArg = Array.prototype.slice.call(arguments);\r\n tempArg[0] = `workFlow:${tempArg[0]}`;\r\n tempArg[1] = `headline:${tempArg[1]}`;\r\n tempArg[2] = `addedSpec:${tempArg[2]}`;\r\n tempArg[3] = `buttonText:${vm.meterObject.netMeter ? 'On' : 'off'}`;\r\n attributePush(tempArg[0], tempArg[1], tempArg[2], tempArg[3]);\r\n ccMeterSelectorService.setMeterObject(vm.meterObject);\r\n }\r\n\r\n function getAccountList() {\r\n const params = {\r\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\r\n };\r\n // return accountSearchService.sitecore.cacheAccountSearch(params).then((result) => {\r\n const result = $rootScope.accountdetails;\r\n if (result) {\r\n const dataTemp = [];\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(\r\n itm => {\r\n itm.PropToInst.results.forEach(o => dataTemp.push(o));\r\n },\r\n );\r\n vm.accountSearchData = _.map(dataTemp, o => ({\r\n meterNumber: o.MeterNumber,\r\n meterType: o.MeterType,\r\n netMeter: o.IsSmartGridMeterInd,\r\n activeDate: new Date(o.ActiveDate),\r\n activeStatus:\r\n o.MoveOutDate && Date.parse(o.MoveOutDate) > new Date().getTime()\r\n ? '(Active)'\r\n : '(Closed)',\r\n MoveOutDate: new Date(o.MoveOutDate),\r\n serviceType:\r\n o.Division == '02'\r\n ? energyService.serviceType.Gas\r\n : energyService.serviceType.Electric,\r\n }));\r\n const values = vm.accountSearchData;\r\n const lookup = values.reduce((a, e) => {\r\n a[e.meterNumber] = ++a[e.meterNumber] || 0;\r\n return a;\r\n }, {});\r\n const tempresult = values.filter(e => lookup[e.meterNumber]);\r\n if (tempresult.length > 0) {\r\n const arrayresult = tempresult.reduce((obj, item) => {\r\n obj[item.meterNumber]\r\n ? obj[item.meterNumber].activeDate > item.activeDate\r\n ? (obj[item.meterNumber].activeDate = item.activeDate)\r\n : obj[item.meterNumber].activeDate\r\n : (obj[item.meterNumber] = { ...item });\r\n obj[item.meterNumber]\r\n ? obj[item.meterNumber].MoveOutDate > item.MoveOutDate\r\n ? obj[item.meterNumber].MoveOutDate\r\n : (obj[item.meterNumber].MoveOutDate = item.MoveOutDate)\r\n : (obj[item.meterNumber] = { ...item });\r\n obj[item.meterNumber]\r\n ? obj[item.meterNumber].activeStatus == item.activeStatus\r\n ? obj[item.meterNumber].activeStatus\r\n : (obj[item.meterNumber].activeStatus = '(Active)')\r\n : (obj[item.meterNumber] = { ...item });\r\n return obj;\r\n }, {});\r\n vm.arraySearchList = Object.values(arrayresult);\r\n let getOtherData = vm.accountSearchData.filter(\r\n e => !lookup[e.meterNumber],\r\n );\r\n getOtherData.forEach(meter => {\r\n vm.arraySearchList.push(meter);\r\n });\r\n } else {\r\n vm.arraySearchList = vm.accountSearchData;\r\n }\r\n vm.accountSearchArray = [];\r\n vm.arraySearchList.forEach(o => {\r\n if (o.meterNumber) {\r\n vm.accountSearchArray.push({\r\n value: {\r\n meterNumber: o.meterNumber,\r\n meterType: o.meterType,\r\n netMeter: o.netMeter,\r\n serviceType: o.serviceType,\r\n activeDate: o.activeDate,\r\n MoveOutDate: o.MoveOutDate,\r\n status: o.activeStatus,\r\n imageUrl:\r\n o.serviceType === energyService.serviceType.Gas\r\n ? vm.gasIcon\r\n : o.serviceType === energyService.serviceType.Electric\r\n ? vm.electricIcon\r\n : '',\r\n },\r\n text: `${o.serviceType} Meter - ${o.meterNumber} ${o.activeStatus}`,\r\n });\r\n }\r\n });\r\n vm.accountSearchItems = genericHelperService.createDropdownList(\r\n vm.accountSearchArray,\r\n );\r\n if (vm.accountSearchItems.length > 1) {\r\n vm.accountSearchItems.sort(function(a, b) {\r\n return a.value.serviceType === b.value.serviceType\r\n ? a.value.status === '(Active)'\r\n ? -1\r\n : 1\r\n : a.value.serviceType === energyService.serviceType.Gas\r\n ? 1\r\n : -1;\r\n });\r\n }\r\n vm.accountSearchList = vm.accountSearchItems.filter(\r\n itm =>\r\n parseInt(\r\n (new Date() - new Date(itm.value.MoveOutDate)) /\r\n (1000 * 60 * 60 * 24),\r\n 10,\r\n ) < 730 ||\r\n (itm.value.MoveOutDate &&\r\n Date.parse(itm.value.MoveOutDate) > new Date().getTime()),\r\n );\r\n let defaultItem = vm.accountSearchList.filter(\r\n itm =>\r\n itm.value.serviceType === energyService.serviceType.Electric &&\r\n itm.value.meterType === 'AMI',\r\n );\r\n if (defaultItem.length == 0) {\r\n defaultItem = vm.accountSearchList.filter(\r\n itm => itm.value.serviceType === energyService.serviceType.Electric,\r\n );\r\n }\r\n if (defaultItem.length == 0) {\r\n defaultItem = vm.accountSearchList.filter(\r\n itm => itm.value.serviceType === energyService.serviceType.Gas,\r\n );\r\n }\r\n selectMeter(defaultItem[0], true);\r\n } else {\r\n console.log(error);\r\n }\r\n // });\r\n }\r\n function historicUsage() {\r\n vm.request = {\r\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\r\n meterSerialNumber: vm.meterObject.meterNumber,\r\n };\r\n return getHistoricUsageService.sitecore.getHistoricUsage(vm.request).then(\r\n result => {\r\n const data = result.d.EnergyReqResNav.results;\r\n vm.usageComparisonList = _.map(data, o => ({\r\n BillDate: moment(o.BillingEndDate).format('MM/DD/YYYY'),\r\n BillingEndDate: moment(o.BillingEndDate).format('MM/DD/YYYY'),\r\n BillingStartDate: moment(o.BillingStartDate).format('MM/DD/YYYY'),\r\n }));\r\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\r\n vm.usageEndDate = data[0].BillingEndDate;\r\n //vm.meterObject.loadingSpinner = false;\r\n selectPeriod('Year');\r\n },\r\n error => {\r\n vm.isFailState = true;\r\n vm.meterObject.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n function usageComparison() {\r\n vm.dataToGet.accountId = _globalSelectedAccount.accountNum;\r\n if (vm.meterObject.installationNumber) {\r\n vm.dataToGet.propertyName = assetService.urlTokens.installation;\r\n vm.dataToGet.propertyValue = vm.meterObject.installationNumber;\r\n } else {\r\n vm.dataToGet.propertyName = assetService.urlTokens.meterNumber;\r\n vm.dataToGet.propertyValue = vm.meterObject.meterNumber;\r\n }\r\n if (vm.meterObject.division === assetService.divisions.ELEC) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.meterNumber = vm.meterObject.meterNumber;\r\n vm.dataToGet.meterType = vm.meterObject.meterType;\r\n vm.dataToGet.fromDate = moment(\r\n `${moment().month() + 1}/01/${moment().year() - 2}`,\r\n 'MM/DD/YYYY',\r\n ).format('YYYY-MM-DDTHH:mm:ss');\r\n vm.dataToGet.toDate = moment(vm.defaultEndBillingDate).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n );\r\n return getUsageComparisionService.sitecore\r\n .getUsageComparision(vm.dataToGet)\r\n .then(\r\n result => {\r\n const data =\r\n result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav\r\n .results[0].PremiseToInstln_Nav.results[0].InstlnToUsgMonth_Nav\r\n .results;\r\n vm.usageComparisonList = ccEnergyUsageDto.transformUsageList(data);\r\n if (vm.usageComparisonList.length > 0) {\r\n vm.usageDetailsList = _.map(vm.usageComparisonList, details => ({\r\n BillingDate: new Date(details.BillingEndDate).getTime(),\r\n BillingDays: details.BillingDays,\r\n BillDate: details.BillDate,\r\n ReadType:\r\n details.ReadType === '03'\r\n ? 'Estimated'\r\n : details.ReadType === '01'\r\n ? 'Actual'\r\n : '',\r\n Usage: parseFloat(details.Usage).toFixed(2),\r\n Usage: parseFloat(details.Usage).toFixed(2),\r\n AvgUsg: parseFloat(details.AvgUsg).toFixed(2),\r\n }));\r\n\r\n vm.meterObject.invoiceListArray = vm.usageComparisonList;\r\n }\r\n //vm.meterObject.loadingSpinner = false;\r\n selectPeriod('Months');\r\n },\r\n error => {\r\n vm.isFailState = true;\r\n vm.meterObject.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n function showAllToggle() {\r\n vm.isShowAll = false;\r\n if (vm.detailsArraytable.length < 15) {\r\n getInvoiceList();\r\n }\r\n }\r\n\r\n function getInvoiceList() {\r\n const newInvoiceDate =\r\n !vm.isShowAll && vm.isShowAll != undefined\r\n ? vm.detailsArraytable[vm.detailsArraytable.length - 1].billDate\r\n : null;\r\n const params = {\r\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\r\n businessPartner: vm.meterObject.businessPartnerId,\r\n invoiceCount: !vm.isShowAll && vm.isShowAll != undefined ? '11' : '14',\r\n isDashboard: !vm.isShowAll && vm.isShowAll != undefined ? false : true,\r\n fromDate:\r\n !vm.isShowAll && vm.isShowAll != undefined\r\n ? `\\/Date(${new Date(\r\n moment(\r\n moment.utc(newInvoiceDate, 'MM-DD-YYYY').subtract(12, 'months'),\r\n ),\r\n ).getTime()})\\/`\r\n : null,\r\n toDate:\r\n !vm.isShowAll && vm.isShowAll != undefined\r\n ? `\\/Date(${moment.utc(newInvoiceDate).valueOf()})\\/`\r\n : null,\r\n };\r\n return getInvoiceListService.sitecore\r\n .getInvoiceList(params)\r\n .then(result => {\r\n if (result && result?.d?.Inp_Req) {\r\n const data = result.d.Inp_Req.results[0].Account_Invoice.results;\r\n if (data.length > 0) {\r\n vm.invoiceListArray = ccEnergyUsageDto.transformInvoiceList(data);\r\n vm.invoiceArray = _.orderBy(\r\n vm.invoiceListArray,\r\n ['billDate'],\r\n ['desc', 'asc'],\r\n );\r\n if (!vm.isShowAll && vm.isShowAll != undefined) {\r\n vm.invoiceArray = vm.invoiceArray.slice(\r\n 1,\r\n vm.invoiceArray.length,\r\n );\r\n }\r\n vm.ticksOverride = [];\r\n data.forEach(o => {\r\n vm.ticksOverride.push(new Date(o.BillEndDate));\r\n });\r\n const promiseQueue = [];\r\n vm.invoiceDetailsArray = [];\r\n\r\n Array.prototype.forEach.call(vm.invoiceArray, invoice => {\r\n promiseQueue.push(getInvoiceDetails(invoice.invoiceId));\r\n });\r\n\r\n commonService.executePromises(promiseQueue).then(() => {\r\n vm.newInvoiceArray = [];\r\n if (!vm.isShowAll && vm.isShowAll != undefined) {\r\n vm.newInvoiceArray = _.orderBy(\r\n vm.invoiceDetailsArray,\r\n ['invDate'],\r\n ['desc', 'asc'],\r\n );\r\n vm.detailsArraytable = vm.detailsArraytable.concat(\r\n vm.newInvoiceArray,\r\n );\r\n vm.updatedArrayTable = vm.detailsArraytable;\r\n } else {\r\n vm.detailsArraytable = _.orderBy(\r\n vm.invoiceDetailsArray,\r\n ['invDate'],\r\n ['desc', 'asc'],\r\n );\r\n vm.isShowAll = vm.detailsArraytable.length > 13;\r\n vm.updatedArrayTable = [...vm.detailsArraytable];\r\n if (vm.detailsArraytable.length > 13) {\r\n vm.updatedArrayTable.splice(\r\n vm.updatedArrayTable.length - 1,\r\n 1,\r\n );\r\n } else {\r\n vm.updatedArrayTable = vm.detailsArraytable;\r\n }\r\n }\r\n vm.showTable = true;\r\n vm.loadingSpinner = false;\r\n });\r\n } else {\r\n vm.noInvoice = true;\r\n $rootScope.download = false;\r\n vm.loadingSpinner = false;\r\n }\r\n } else {\r\n console.log(error);\r\n vm.meterObject.loadingSpinner = false;\r\n vm.isFailState = true;\r\n $rootScope.download = false;\r\n vm.loadingSpinner = false;\r\n }\r\n });\r\n }\r\n\r\n function getInvoiceDetails(invoiceId) {\r\n const params = {\r\n contractAccountId: ccMeterSelectorService.getContractAccountId(),\r\n invoiceId,\r\n };\r\n return getInvoiceDetailsService.sitecore\r\n .getInvoiceDetails(params)\r\n .then(result => {\r\n if (result) {\r\n if (\r\n result.d.results[0].InvId != '' ||\r\n result.d.results[0].InvDate != null\r\n ) {\r\n vm.invoiceDetailsArray.push(\r\n ccEnergyUsageDto.transformInvoiceDetails(result.d.results)[0],\r\n );\r\n }\r\n } else {\r\n vm.isFailState = true;\r\n vm.meterObject.loadingSpinner = false;\r\n console.log(error);\r\n }\r\n });\r\n }\r\n function getMeterDetails() {\r\n const params = {\r\n contractAccount: ccMeterSelectorService.getContractAccountId(),\r\n };\r\n return getMeterNumberService.sitecore\r\n .getMeterNumber(params)\r\n .then(result => {\r\n if (result) {\r\n vm.meterDetails =\r\n result?.d?.Multiple_CA_Nav?.results[0].CAToMeter_Nav.results;\r\n\r\n if (vm.meterDetails.length < 1) {\r\n vm.isBlankState = true;\r\n vm.meterObject.loadingSpinner = false;\r\n }\r\n\r\n vm.checkMeter = vm.meterDetails.filter(item => {\r\n if (item.MeterNumber.includes(vm.meterObject.meterNumber))\r\n return item;\r\n });\r\n vm.showMinsView = !!(\r\n vm.checkMeter[0].MeterInterval == '30' ||\r\n vm.checkMeter[0].MeterInterval == '15'\r\n );\r\n vm.meterObject.isNetMeter = vm.netMeter =\r\n vm.checkMeter[0].NetMeterFlg == 'X';\r\n vm.MeterInterval = vm.checkMeter[0].MeterInterval;\r\n historicUsage();\r\n } else {\r\n vm.isFailState = true;\r\n vm.meterObject.loadingSpinner = false;\r\n console.log(error);\r\n }\r\n });\r\n }\r\n\r\n function load() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo.hasOwnProperty(energyService.string.accountSelected)\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n ccMeterSelectorService.setContractAccountId(\r\n globalSelectedAccount.accountNum,\r\n );\r\n }\r\n if (_globalSelectedAccount.meterNumber === null) {\r\n vm.lighting = true;\r\n } else {\r\n vm.lighting = false;\r\n }\r\n getRole();\r\n vm.meterObject.businessPartnerId = globalSelectedAccount.bpNumber\r\n ? globalSelectedAccount.bpNumber\r\n : '';\r\n vm.meterObject.isMinMaxSet = false;\r\n getAccountList();\r\n $(window).click(e => {\r\n if (\r\n (e.target.classList.length == 0 && vm.viewCalendar) ||\r\n (e.target.classList.length > 0 &&\r\n !e.target.classList[0].includes('sui-') &&\r\n !e.target.classList[0].includes('week-day') &&\r\n !e.target.classList[0].includes('caret') &&\r\n !e.target.classList[0].includes('out-of-range-days') &&\r\n vm.viewCalendar)\r\n ) {\r\n $('.week-day .caret').trigger('click');\r\n }\r\n });\r\n }\r\n\r\n //toggleViewUsageDetails();\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n load();\r\n });\r\n\r\n function init(gasIcon, electricIcon, guid) {\r\n vm.gasIcon = gasIcon;\r\n vm.electricIcon = electricIcon;\r\n vm.guid = guid;\r\n vm.meterObject = ccMeterSelectorService.getMeterObject();\r\n vm.meterObject.loadingSpinner = true;\r\n if (assetService.apiConfig.useLocalHost) {\r\n load();\r\n }\r\n }\r\n}\r\n","app.controller('InstallmentPlansScreen', InstallmentPlansScreen);\r\n\r\nInstallmentPlansScreen.$inject = [\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'cookieService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction InstallmentPlansScreen(\r\n $scope,\r\n $state,\r\n assetService,\r\n cookieService,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.init = init; \r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n function load() {\r\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_PLANS);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n const isValidation = cookieService.getCookie('payment-assistance-validation');\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = `${window.location.protocol}/${window.location.hostname}/my-account/payment-assistance-programs/`;\r\n }\r\n }\r\n}\r\n","app.controller('InstallmentPlans', InstallmentPlans);\r\n\r\nInstallmentPlans.$inject = ['assetService', '$state', '$scope', '$rootScope','sessionStorageService','assetService','broadcastService'];\r\n\r\nfunction InstallmentPlans(assetService, $state, $scope, $rootScope, sessionStorageService, assetService,broadcastService) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.init = init;\r\n vm.onCancel = onCancel;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.steps = [\r\n assetService.installmentPlansStepsName.INSTALLMENT_TYPE,\r\n assetService.installmentPlansStepsName.REVIEW_AND_SUBMIT,\r\n ];\r\n vm.actualStep = 0;\r\n vm.cyclePath = [\r\n {\r\n path: assetService.installmentPlansRouteState.INSTALLMENT_TYPE,\r\n change: true,\r\n pathAlt: '',\r\n },\r\n {\r\n path: assetService.installmentPlansRouteState.REVIEW_AND_SUBMIT,\r\n change: true,\r\n pathAlt: '',\r\n mainBtn: 'ENROLL',\r\n },\r\n ];\r\n vm.actualPath = 0;\r\n vm.mainBtnActivate = true;\r\n vm.buttonLoad = true;\r\n vm.IPFailure = false;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n const securityDepositflag = sessionStorageService.get(assetService.storageKeys.paymentAssistance.securityDepositflag);\r\n if(securityDepositflag==='X'){\r\n broadcastService.failedStateNotificationTriggered(true);\r\n } \r\n else{\r\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_TYPE);\r\n }\r\n }\r\n\r\n function onCancel(path) {\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n } \r\n\r\n $scope.$on(assetService.events.ipenrollmentfailed, () => {\r\n vm.IPFailure = $rootScope.IPEnrollmentFailed;\r\n });\r\n $scope.$on(assetService.events.trackNextComponent, () =>\r\n $rootScope.$broadcast(assetService.events.manualNextComponent));\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('CCAutoPayAddAccountController', CCAutoPayAddAccountController);\r\n\r\nCCAutoPayAddAccountController.$inject = [\r\n '$log',\r\n '$rootScope',\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'ccAutoPayAssetService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n '$stateParams',\r\n 'broadcastService',\r\n 'genericHelperService',\r\n '$window',\r\n 'manageBankAccountsForPrepaidService',\r\n '$state',\r\n 'getLoggedInUserDetailsService',\r\n 'getProductRecommendationsCAREService',\r\n 'careFeedbackService',\r\n 'modalService',\r\n '$timeout',\r\n];\r\n\r\nfunction CCAutoPayAddAccountController(\r\n $log,\r\n $rootScope,\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n ccAutoPayAssetService,\r\n enrollInBillingAndPaymentProgramsService,\r\n $stateParams,\r\n broadcastService,\r\n genericHelperService,\r\n $window,\r\n manageBankAccountsForPrepaidService,\r\n $state,\r\n getLoggedInUserDetailsService,\r\n getProductRecommendationsCAREService,\r\n careFeedbackService,\r\n modalService,\r\n $timeout,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _accountIdGenerated = null;\r\n let _bankAccountsOriginal = null;\r\n const _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\r\n const _bankDescription = ccAutoPayAssetService.strings.bankDescription;\r\n let _businessPartnerId = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n let _selectedAddressData = null;\r\n let _enrollmentFailed = false;\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n vm.statusIsProcessing = false;\r\n vm.serviceErrorCode = '';\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n vm.showCPIMessage = false;\r\n vm.CPIMessage = '';\r\n /**\r\n * Gloabl Vars\r\n */\r\n vm.accountSelected = null;\r\n vm.bankAccount = null;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.dropdowns = {\r\n bankAccounts: null,\r\n };\r\n vm.form = {\r\n addBankAccountForm: {\r\n formInstance: null,\r\n nickname: null,\r\n rountingNumber: null,\r\n accountNumber: null,\r\n accNumberConfirm: null,\r\n isProcessing: false,\r\n },\r\n };\r\n vm.currentUser = {};\r\n vm.orgBP = '';\r\n vm.bankAccountPresent = false;\r\n vm.buttonDisable = true;\r\n vm.guid = '';\r\n let SAPdueBalance;\r\n let SAPdueDate;\r\n $rootScope.validate = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n vm.cancelBtn = cancelBtn;\r\n vm.enroll = enroll;\r\n vm.toggleAutoPayAgreement = toggleAutoPayAgreement;\r\n vm.nicknameCheck = nicknameCheck;\r\n vm.nameError = nameError;\r\n vm.accountCheck = accountCheck;\r\n vm.accountError = accountError;\r\n vm.confirmAccCheck = confirmAccCheck;\r\n vm.confirmAccError = confirmAccError;\r\n vm.accMaxLimit = undefined;\r\n vm.nicknameLimit = undefined;\r\n /**\r\n * Event listeners\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n $scope.getLimits = function(accMaxLimit, nicknameLimit) {\r\n vm.accMaxLimit = accMaxLimit;\r\n vm.nicknameLimit = nicknameLimit;\r\n };\r\n\r\n function nicknameCheck() {\r\n const nameLength = vm.form.addBankAccountForm.nickname\r\n ? vm.form.addBankAccountForm.nickname.length\r\n : 0;\r\n if (nameLength >= vm.nicknameLimit) {\r\n console.log(vm.nicknameLimit);\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function nameError() {\r\n const nameLength = vm.form.addBankAccountForm.nickname\r\n ? vm.form.addBankAccountForm.nickname.length\r\n : 0;\r\n if (nameLength > vm.nicknameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function accountCheck() {\r\n console.log(vm.accountNumber);\r\n const accLength = vm.form.addBankAccountForm.accountNumber\r\n ? vm.form.addBankAccountForm.accountNumber.length\r\n : 0;\r\n if (accLength >= vm.accMaxLimit) {\r\n console.log(vm.accMaxLimit);\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function accountError() {\r\n const accLength = vm.form.addBankAccountForm.accountNumber\r\n ? vm.form.addBankAccountForm.accountNumber.length\r\n : 0;\r\n if (accLength > vm.accMaxLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function confirmAccCheck() {\r\n const accCLength = vm.form.addBankAccountForm.accNumberConfirm\r\n ? vm.form.addBankAccountForm.accNumberConfirm.length\r\n : 0;\r\n if (accCLength >= vm.accMaxLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function confirmAccError() {\r\n const accCLength = vm.form.addBankAccountForm.accNumberConfirm\r\n ? vm.form.addBankAccountForm.accNumberConfirm.length\r\n : 0;\r\n if (accCLength > vm.accMaxLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function addNewBankAccount(data) {\r\n $window.scrollTo(0, 0);\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(data)\r\n .then(\r\n result => {\r\n const manageBankAcc_NAV = result.d.ManageBankAcc_NAV;\r\n if (manageBankAcc_NAV.Type === 'S') {\r\n _accountIdGenerated = manageBankAcc_NAV.BankId;\r\n broadcastService.loadingSpinner(true);\r\n } else if (\r\n manageBankAcc_NAV.MessageNum === '732' ||\r\n manageBankAcc_NAV.MessageNum === '739' ||\r\n manageBankAcc_NAV.MessageNum === '734' ||\r\n manageBankAcc_NAV.MessageNum === '278' ||\r\n manageBankAcc_NAV.MessageNum === '429' ||\r\n manageBankAcc_NAV.MessageNum === '270'\r\n ) {\r\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\r\n vm.ACIValidationFailed = true;\r\n broadcastService.loadingSpinner(false);\r\n if (vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'MessageText',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'auto-pay-|-add-bank-account',\r\n );\r\n }, 2000);\r\n }\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n function toggleAutoPayAgreement() {\r\n $rootScope.validate = true;\r\n if (vm.autoPayAgreement) {\r\n vm.buttonDisable = false;\r\n } else {\r\n vm.buttonDisable = true;\r\n }\r\n }\r\n\r\n function cancelBtn() {\r\n if (vm.form.addBankAccountForm.formInstance.$dirty || vm.autoPayAgreement) {\r\n modalService.cancelModal();\r\n } else {\r\n broadcastService.cancelAutoPay();\r\n }\r\n }\r\n\r\n function enroll() {\r\n $rootScope.validate = true;\r\n if (!vm.form.addBankAccountForm.formInstance.$invalid) {\r\n broadcastService.loadingSpinner(true);\r\n // vm.serviceErrorCode = serviceErrorCode;\r\n addNewBankAccount({\r\n businessPartnerId: vm.orgBP ? vm.orgBP : _businessPartnerId,\r\n bankDescription: vm.form.addBankAccountForm.nickname,\r\n accountNumber: vm.form.addBankAccountForm.accountNumber,\r\n routingNumber: vm.form.addBankAccountForm.rountingNumber,\r\n accountType: vm.selectAccountType,\r\n action:\r\n ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid.ADD,\r\n requestedBy: vm.currentUser.emailId,\r\n }).then(\r\n () => {\r\n if (_accountIdGenerated) {\r\n enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n contractAccountId:\r\n _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n requestedBy: vm.currentUser.emailId,\r\n extensionSet: [\r\n {\r\n RefObject: _DIRDEB,\r\n RefFieldName: 'CPI_MESSAGE',\r\n RefFieldValue: `Amount ${SAPdueBalance} Date ${SAPdueDate}`,\r\n },\r\n {\r\n RefObject: _DIRDEB,\r\n RefFieldName: 'TERMS',\r\n RefFieldValue: vm.autoPayAgreement ? 'X' : '',\r\n },\r\n ],\r\n bankId: _accountIdGenerated,\r\n })\r\n .then(\r\n result => {\r\n $window.scrollTo(0, 0);\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0]\r\n .Type === ccAutoPayAssetService.strings.S\r\n ) {\r\n // State success\r\n sessionStorageService.set(\r\n assetService.storageKeys.enrollmentFailed,\r\n {\r\n enrollmentFailed: _enrollmentFailed,\r\n },\r\n );\r\n if (_enrollmentFailed !== true) {\r\n const requestCare = {\r\n accountNumber:\r\n _selectedAddressData.accountSelected.accountNum,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName:\r\n assetService.billingAndPaymentProgramsCodes.AUTPAY,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n }\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell.success,\r\n );\r\n vm.form.addBankAccountForm.isProcessing = false;\r\n } else {\r\n _enrollmentFailed = true;\r\n sessionStorageService.set(\r\n assetService.storageKeys.enrollmentFailed,\r\n {\r\n enrollmentFailed: _enrollmentFailed,\r\n errorcode:\r\n result.d.ReqToResNav.results[0].ProgramToMessage\r\n .results[0].MessageNum,\r\n },\r\n );\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell.success,\r\n );\r\n vm.form.addBankAccountForm.isProcessing = false;\r\n }\r\n },\r\n error => {\r\n vm.form.addBankAccountForm.isProcessing = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n // Search the progName in the getProductsRecomendations response\r\n // if it is found, call to DELETE_PROGRAM from sitecore\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId &&\r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n broadcastService.loadingSpinner(true);\r\n const autoPayDetails = sessionStorageService.get(\r\n assetService.storageKeys.accountAutoPayDetails,\r\n );\r\n SAPdueBalance = autoPayDetails.BalanceDue;\r\n SAPdueDate = autoPayDetails.DueDateStr;\r\n vm.statusIsProcessing = false;\r\n _selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n const isPrepaid = sessionStorageService.get(\r\n assetService.storageKeys.isPrepaid,\r\n );\r\n\r\n if (\r\n autoPayDetails.StatusCode === '02' ||\r\n autoPayDetails.StatusCode === '03'\r\n ) {\r\n vm.showCPIMessage = true;\r\n vm.CPIMessage = autoPayDetails.CpiMessage;\r\n }\r\n\r\n if (isPrepaid) {\r\n if (\r\n window.location.pathname ===\r\n '/my-account/billing-and-payment-programs/auto-pay'\r\n ) {\r\n window.location.href = 'my-account/Dashboard';\r\n }\r\n }\r\n\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n vm.orgBP = sessionStorageService.get(\r\n assetService.storageKeys.organizationBP,\r\n );\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n _businessPartnerId =\r\n relatedBP || _selectedAddressData.accountSelected.primaryBp;\r\n $window.scrollTo(0, 0);\r\n broadcastService.loadingSpinner(false);\r\n setTimeout(() => {\r\n vm.form.addBankAccountForm.formInstance.$setPristine();\r\n }, 1000);\r\n pushVPV(\r\n '/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/new-enrollment/screen',\r\n );\r\n pushDL('auto_pay', 'intent', 'kpi');\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n\r\n function init(accountTypeArray) {\r\n $rootScope.validate = false;\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCCancelModalController', CCCancelModalController);\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nCCCancelModalController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n 'assetService',\r\n 'ccAutoPayAssetService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction CCCancelModalController(\r\n $scope,\r\n $rootScope,\r\n $state,\r\n assetService,\r\n ccAutoPayAssetService,\r\n sessionStorageService,\r\n broadcastService,\r\n $modalInstance,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n vm.guid = '';\r\n vm.dppPlan = '';\r\n vm.planDesc = '';\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n vm.redirect = redirect;\r\n vm.closeModal = closeModal;\r\n\r\n function redirect(path) {\r\n vm.guid = angular.element('#guid').val();\r\n if (path === '/my-account/payment-assistance-programs') {\r\n vm.dppPlan = $rootScope.SelectedPlanDP;\r\n vm.planDesc = $rootScope.SelectedPlanDesc;\r\n if (Number(vm.dppPlan) === 0) {\r\n pushDL(\r\n 'payment-assistance-options',\r\n 'cancel-|-arrears',\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n } else {\r\n pushDL(\r\n 'payment-assistance-options',\r\n `cancel-|-down-payment-${vm.planDesc.replace('%', '')}`,\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n }\r\n } else if (path === '/my-account/billing-and-payment-programs') {\r\n if ($rootScope.dirdebenrolled) {\r\n pushDL(\r\n 'cancel-workflow',\r\n 'yes-cancel' + '-|-' + '/manage-auto-pay',\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n } else {\r\n pushDL(\r\n 'cancel-workflow',\r\n 'yes-cancel' + '-|-' + '/auto-pay',\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n }\r\n }\r\n window.location.href = path;\r\n }\r\n\r\n function closeModal() {\r\n vm.guid = angular.element('#guid').val();\r\n if ($rootScope.dirdebenrolled) {\r\n pushDL(\r\n 'cancel-workflow',\r\n 'never-mind' + '-|-' + '/manage-auto-pay',\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n } else {\r\n pushDL(\r\n 'cancel-workflow',\r\n 'never-mind' + '-|-' + '/auto-pay',\r\n 'are-you-sure-you-want-to-cancel',\r\n );\r\n }\r\n $modalInstance.close();\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n pushVPV(\r\n '/vpv/de/modal/cancel-workflow/load/are-you-sure-you-want-to-cancel',\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCAutoPayLanding', CCAutoPayLanding);\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nCCAutoPayLanding.$inject = [\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'ccAutoPayAssetService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n '$rootScope',\r\n '$window',\r\n];\r\n\r\nfunction CCAutoPayLanding(\r\n $scope,\r\n $state,\r\n assetService,\r\n ccAutoPayAssetService,\r\n sessionStorageService,\r\n broadcastService,\r\n $rootScope,\r\n $window,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n vm.cpiMessage = '';\r\n vm.dueDate = null;\r\n\r\n vm.BalanceDue = null;\r\n vm.guid = '';\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n vm.nextPage = nextPage;\r\n vm.cancelBtn = cancelBtn;\r\n vm.init = init;\r\n\r\n function nextPage() {\r\n if (vm.bankAccountsOriginal.length > 0) {\r\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayPaymentMethodController);\r\n } else {\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell\r\n .CCAutoPayAddAccountController,\r\n );\r\n } \r\n }\r\n\r\n function cancelBtn() {\r\n broadcastService.cancelAutoPay();\r\n }\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n broadcastService.loadingSpinner(true);\r\n $window.scrollTo(0, 0);\r\n vm.guid = angular.element('#guid').val();\r\n pushVPV('/vpv/de/page/autopay/load/auto-pay/auto-pay-will-not-draft-before-current-balance-due/na/new-enrollment');\r\n pushDL(\r\n 'auto_pay_error',\r\n 'not-set' +\r\n '-|-' +\r\n $rootScope.dataLayerFormat('auto pay will not draft before current balance is due') +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.AutoPayEnrollmentEligibilityCheck}`,\r\n 'auto-pay-|-auto-pay',\r\n );\r\n vm.bankAccountsOriginal = $rootScope.autoPaySAPData;\r\n const cpidetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\r\n vm.cpiMessage = cpidetails.CpiMessage;\r\n broadcastService.loadingSpinner(false);\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n load();\r\n }\r\n}","app.controller(\r\n 'CCAutoPayPaymentMethodController',\r\n CCAutoPayPaymentMethodController,\r\n);\r\n\r\nCCAutoPayPaymentMethodController.$inject = [\r\n '$log',\r\n '$rootScope',\r\n '$scope',\r\n 'assetService',\r\n 'getPrepaidDetailsService',\r\n 'sessionStorageService',\r\n 'genericHelperService',\r\n 'ccAutoPayAssetService',\r\n 'CareDeleteProductService',\r\n 'broadcastService',\r\n '$state',\r\n '$window',\r\n '$stateParams',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'getProductRecommendationsCAREService',\r\n 'commongaTaggingService',\r\n 'careFeedbackService',\r\n 'modalService',\r\n];\r\n\r\nfunction CCAutoPayPaymentMethodController(\r\n $log,\r\n $rootScope,\r\n $scope,\r\n assetService,\r\n getPrepaidDetailsService,\r\n sessionStorageService,\r\n genericHelperService,\r\n ccAutoPayAssetService,\r\n CareDeleteProductService,\r\n broadcastService,\r\n $state,\r\n $window,\r\n $stateParams,\r\n enrollInBillingAndPaymentProgramsService,\r\n getProductRecommendationsCAREService,\r\n commongaTaggingService,\r\n careFeedbackService,\r\n modalService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n const vm = this;\r\n let _bankAccountsOriginal = null;\r\n const _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\r\n const _bankDescription = ccAutoPayAssetService.strings.bankDescription;\r\n let _businessPartnerId = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n const _kwValue = assetService.strings.VALUE;\r\n let _selectedAddressData = null;\r\n let _selectedEmail = null;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n let _enrollmentFailed = false;\r\n const NUM_OF_ASTERISK = 5;\r\n /**\r\n * Global Vars\r\n */\r\n vm.accountSelected = null;\r\n vm.bankAccount = null;\r\n vm.dropdowns = {\r\n bankAccounts: null,\r\n };\r\n vm.primaryButtonEnable = false;\r\n vm.selectAccountType = null;\r\n vm.accountType = [];\r\n $rootScope.isCareComp = false;\r\n vm.orgBP = '';\r\n vm.showCPIMessage = false;\r\n vm.CPIMessage = '';\r\n vm.autoPayAgreement = false;\r\n vm.prepaidData = null;\r\n vm.newBankAdded = false;\r\n vm.newBankAccountId = null;\r\n vm.bankChanged = false;\r\n vm.guid = '';\r\n vm.previousBank = '';\r\n let SAPdueBalance;\r\n let SAPdueDate;\r\n /**\r\n * Function Definitions\r\n */\r\n vm.init = init;\r\n vm.cancelBtn = cancelBtn;\r\n vm.enroll = enroll;\r\n vm.selectAccount = selectAccount;\r\n vm.hideAccount = hideAccount;\r\n vm.goToAddBankAccount = goToAddBankAccount;\r\n vm.toggleAutoPayAgreement = toggleAutoPayAgreement;\r\n vm.reload = reload;\r\n /**\r\n * Function Declarations\r\n */\r\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, () => {\r\n vm.newBankAdded = true;\r\n getBankAccountsSAP();\r\n });\r\n\r\n function getBankAccountsSAP() {\r\n $window.scrollTo(0, 0);\r\n broadcastService.loadingSpinner(true);\r\n return getPrepaidDetailsService.sitecore\r\n .getPrepaidDetails(vm.prepaidData)\r\n .then(\r\n (result) => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n vm.newBankAccountId = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n );\r\n reload();\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function reload() {\r\n load();\r\n }\r\n\r\n function hideAccount(value) {\r\n let convertedValue = value;\r\n const stringLength = convertedValue.length;\r\n const visibleDigits = 4;\r\n if (stringLength > visibleDigits) {\r\n convertedValue = convertedValue.slice(-visibleDigits);\r\n }\r\n convertedValue = `*****${convertedValue}`;\r\n return convertedValue;\r\n }\r\n\r\n function toggleAutoPayAgreement() {\r\n vm.primaryButtonEnable = vm.autoPayAgreement;\r\n }\r\n\r\n function cancelBtn() {\r\n if (vm.bankChanged || vm.newBankAccountId || vm.autoPayAgreement) {\r\n modalService.cancelModal();\r\n } else {\r\n broadcastService.cancelAutoPay();\r\n }\r\n }\r\n\r\n function enroll(event) {\r\n vm.primaryButtonEnable = false;\r\n broadcastService.loadingSpinner(true);\r\n $window.scrollTo(0, 0);\r\n enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n bankId: vm.bankAccount,\r\n // routingNo: vm.accountSelected.rountingNumber,\r\n // bankAccountNo: vm.accountSelected.accountNumber,\r\n // bankName: vm.accountSelected.nickname,\r\n requestedBy: _selectedEmail.primaryEmail,\r\n extensionSet: [{\r\n \"RefObject\" : _DIRDEB,\r\n \"RefFieldName\" : \"CPI_MESSAGE\",\r\n \"RefFieldValue\" : `Amount ${ SAPdueBalance } Date ${ SAPdueDate}`,\r\n },{\r\n \"RefObject\" : _DIRDEB,\r\n \"RefFieldName\" : \"TERMS\",\r\n \"RefFieldValue\" : vm.autoPayAgreement ? \"X\" : ''\r\n }],\r\n })\r\n .then(\r\n (result) => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type ===\r\n ccAutoPayAssetService.strings.E\r\n ) {\r\n _enrollmentFailed = true;\r\n }\r\n sessionStorageService.set(assetService.storageKeys.enrollmentFailed, {\r\n enrollmentFailed: _enrollmentFailed,\r\n errorcode:\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0]\r\n .MessageNum,\r\n });\r\n if (_enrollmentFailed !== true) {\r\n const requestCare = {\r\n accountNumber: _selectedAddressData.accountSelected.accountNum,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName: assetService.billingAndPaymentProgramsCodes.AUTPAY,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n }\r\n broadcastService.headerSwitch('Full');\r\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\r\n //vm.primaryButtonEnable = true;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function selectAccount(optionSelected) {\r\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\r\n goToAddBankAccount();\r\n findAccountAndSelectIt(vm.previousBank);\r\n } else {\r\n vm.bankChanged = true;\r\n vm.previousBank = optionSelected.value;\r\n findAccountAndSelectIt(optionSelected.value);\r\n }\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n // Search the progName in the getProductsRecomendations response\r\n // if it is found, call to DELETE_PROGRAM from sitecore\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId &&\r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function goToAddBankAccount() {\r\n modalService.manageAutoPayAddBankAccountModal();\r\n }\r\n\r\n function findAccountAndSelectIt(bankAccountId) {\r\n const accountFound = _.find(\r\n _bankAccountsOriginal,\r\n account => account[_BankAccountId] === bankAccountId,\r\n );\r\n if (accountFound) {\r\n vm.accountSelected = {\r\n accountId: accountFound.BankAccountId,\r\n nickname: accountFound.BankDescription,\r\n rountingNumber: accountFound.BankRoutingNumber,\r\n accountNumber: accountFound.BankAccountNumber,\r\n accountType: accountFound.BankAccountType,\r\n };\r\n vm.accountType.forEach((item) => {\r\n if (item.value === accountFound.BankAccountType) {\r\n vm.accountSelected.accountType = item.text;\r\n }\r\n });\r\n }\r\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.bankAccounts,\r\n ccAutoPayAssetService.strings.value,\r\n vm.accountSelected.accountId,\r\n );\r\n }\r\n\r\n function setModels() {\r\n if (!vm.newBankAdded) {\r\n vm.primaryButtonEnable = false;\r\n vm.bankAccount = _bankAccountsOriginal[0].BankAccountId;\r\n vm.previousBank = vm.bankAccount;\r\n } else {\r\n _bankAccountsOriginal.forEach((element) => {\r\n if (element.BankAccountId === vm.newBankAccountId) {\r\n vm.bankAccount = element.BankAccountId;\r\n vm.previousBank = vm.bankAccount;\r\n }\r\n });\r\n }\r\n setDropdowns();\r\n findAccountAndSelectIt(vm.bankAccount);\r\n }\r\n\r\n function addAsterisk(bankAccountNum, numOfAsterisk) {\r\n // remove all * prefix\r\n const LAST_DIGITS = 4;\r\n const result = bankAccountNum.substr(bankAccountNum.length - LAST_DIGITS, LAST_DIGITS);\r\n return '*'.repeat(numOfAsterisk) + result;\r\n }\r\n\r\n function setDropdowns() {\r\n vm.dropdowns.bankAccounts = _bankAccountsOriginal.map(bankAccount => ({\r\n value: bankAccount[_BankAccountId],\r\n text: bankAccount[_bankDescription]\r\n ? `${\r\n bankAccount[_bankDescription]\r\n } - ${addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)}`\r\n : `Account - ${addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)}`,\r\n }));\r\n vm.dropdowns.bankAccounts.push({\r\n text: ccAutoPayAssetService.strings.add_Account,\r\n value: ccAutoPayAssetService.strings.addAccount,\r\n });\r\n }\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n broadcastService.loadingSpinner(true);\r\n $window.scrollTo(0, 0);\r\n vm.guid = angular.element('#guid').val();\r\n const autoPayDetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\r\n _selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n SAPdueBalance = autoPayDetails.BalanceDue;\r\n SAPdueDate = autoPayDetails.DueDateStr;\r\n _selectedEmail = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n\r\n const isPrepaid = sessionStorageService.get(\r\n assetService.storageKeys.isPrepaid,\r\n );\r\n\r\n vm.orgBP = sessionStorageService.get(\r\n assetService.storageKeys.organizationBP,\r\n );\r\n\r\n if (isPrepaid) {\r\n if (\r\n window.location.pathname ===\r\n '/my-account/billing-and-payment-programs/auto-pay'\r\n ) {\r\n window.location.href = 'my-account/Dashboard';\r\n }\r\n }\r\n\r\n if (\r\n autoPayDetails.StatusCode === '02' ||\r\n autoPayDetails.StatusCode === '03'\r\n ) {\r\n vm.showCPIMessage = true;\r\n vm.CPIMessage = autoPayDetails.CpiMessage;\r\n }\r\n\r\n const { accountSelected } = _selectedAddressData;\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n _businessPartnerId = relatedBP || accountSelected.primaryBp;\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.prepaidData = {\r\n businessPartnerId: vm.orgBP ? vm.orgBP : _businessPartnerId,\r\n contractAccountId: accountSelected.accountNum,\r\n };\r\n\r\n if (!vm.newBankAdded) {\r\n _bankAccountsOriginal = $rootScope.autoPaySAPData;\r\n }\r\n\r\n setModels();\r\n broadcastService.loadingSpinner(false);\r\n if (!vm.newBankAccountId) {\r\n pushVPV('/vpv/de/page/autopay/load/auto-pay/get-enrolled-in-auto-pay/na/new-enrollment');\r\n pushDL('auto_pay', 'intent', 'kpi');\r\n }\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init(accountTypeArray) {\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n }\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCAutoPayShell', CCAutoPayShell);\r\n\r\nCCAutoPayShell.$inject = [\r\n '$log',\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'ccAutoPayAssetService',\r\n 'sessionStorageService',\r\n 'autopayenrollmenteligibilitycheckservice',\r\n 'getPrepaidDetailsService',\r\n '$rootScope',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n];\r\n\r\nfunction CCAutoPayShell(\r\n $log,\r\n $scope,\r\n $state,\r\n assetService,\r\n ccAutoPayAssetService,\r\n sessionStorageService,\r\n autopayenrollmenteligibilitycheckservice,\r\n getPrepaidDetailsService,\r\n $rootScope,\r\n getAccountEnrollmentEligibilityStatusService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n vm.bankAccountsOriginal = null;\r\n $rootScope.autoPaySAPData = null;\r\n vm.orgBP = null;\r\n vm.statusAutopay = '';\r\n /**\r\n * function Declarations\r\n */\r\n vm.init = init;\r\n vm.getPrepaidDetails = getPrepaidDetails;\r\n vm.eligibilityCheck = eligibilityCheck;\r\n vm.getAccountEnrollmentEligibilityStatus = getAccountEnrollmentEligibilityStatus;\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.loadingSpinner, (index, value) => {\r\n vm.loadingSpinner = value;\r\n });\r\n\r\n $scope.$on(assetService.events.cancelAutoPay, () => {\r\n window.location.href = vm.urls.billingAndPaymentPrograms;\r\n });\r\n\r\n function getAccountEnrollmentEligibilityStatus(data) {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(data)\r\n .then(\r\n (result) => {\r\n vm.statusAutopay = _.filter(\r\n result.d.Inp_Prog.results[0].Prog_Res.results,\r\n item => item.ProgName === 'DIRDEB',\r\n );\r\n if (vm.statusAutopay[0].EligibilityStatus === ccAutoPayAssetService.strings.Enrolled) {\r\n window.location.href = '/my-account/billing-and-payment-programs';\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function getPrepaidDetails(businessPartnerId, contractAccountId) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(businessPartnerId, contractAccountId).then(\r\n (result) => {\r\n vm.bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n return vm.bankAccountsOriginal;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function eligibilityCheck(data) {\r\n return autopayenrollmenteligibilitycheckservice.sitecore\r\n .autoPayEnrollmentEligibilityCheck(data)\r\n .then(\r\n (result) => {\r\n vm.eligibilityDetails = result.d.Accounts.results[0].BalanceInfo;\r\n vm.cpiMessage = vm.eligibilityDetails.CpiMessage;\r\n sessionStorageService.set(assetService.storageKeys.accountAutoPayDetails, vm.eligibilityDetails);\r\n },\r\n (error) => {\r\n vm.loadingSpinner = false;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function load() {\r\n delete $rootScope.autopayBankData;\r\n $rootScope.dirdebenrolled = false;\r\n vm.loadingSpinner = true;\r\n const _selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.orgBP = sessionStorageService.get(\r\n assetService.storageKeys.organizationBP,\r\n );\r\n const { accountSelected } = _selectedAddressData;\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n vm.businessPartnerId = relatedBP || accountSelected.primaryBp;\r\n const data = accountSelected.accountNum;\r\n const prepaidData = {\r\n businessPartnerId: vm.orgBP ? vm.orgBP : vm.businessPartnerId,\r\n contractAccountId: accountSelected.accountNum,\r\n };\r\n const paramData = {\r\n contractAccountId: accountSelected.accountNum\r\n };\r\n getAccountEnrollmentEligibilityStatus(paramData);\r\n eligibilityCheck(data).then(() => {\r\n if (vm.eligibilityDetails.StatusCode === '01') {\r\n $state.go(ccAutoPayAssetService.tracks.ccAutoPayShell.success);\r\n } else if (\r\n vm.eligibilityDetails.StatusCode === '03' ||\r\n vm.eligibilityDetails.StatusCode === '05' ||\r\n vm.eligibilityDetails.StatusCode === '04' ||\r\n vm.eligibilityDetails.StatusCode === '02'\r\n ) {\r\n getPrepaidDetails(prepaidData).then(() => {\r\n $rootScope.autoPaySAPData = vm.bankAccountsOriginal;\r\n if (vm.eligibilityDetails.StatusCode === '02') {\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell.CCAutoPayLanding,\r\n );\r\n } else if (vm.bankAccountsOriginal.length > 0) {\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell\r\n .CCAutoPayPaymentMethodController,\r\n );\r\n } else {\r\n $state.go(\r\n ccAutoPayAssetService.tracks.ccAutoPayShell\r\n .CCAutoPayAddAccountController,\r\n );\r\n }\r\n });\r\n }\r\n vm.loadingSpinner = false;\r\n });\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n const selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n if (selectedAddressData) {\r\n load();\r\n }\r\n }\r\n\r\n init();\r\n}","/* eslint-disable no-use-before-define */\r\napp.controller('CCAutoPaySuccessController', CCAutoPaySuccessController);\r\n\r\nCCAutoPaySuccessController.$inject = [\r\n 'broadcastService',\r\n 'getDirectDebitDetailsService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'commongaTaggingService',\r\n '$scope',\r\n '$timeout',\r\n '$rootScope',\r\n '$window',\r\n];\r\n\r\nfunction CCAutoPaySuccessController(\r\n broadcastService,\r\n getDirectDebitDetailsService,\r\n sessionStorageService,\r\n assetService,\r\n commongaTaggingService,\r\n $scope,\r\n $timeout,\r\n $rootScope,\r\n $window,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _selectedAddressData = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.nextBillingMonth = null;\r\n vm.failure = false;\r\n vm.highCPI = false;\r\n vm.highCPIMessage = false;\r\n vm.acctNickName = '';\r\n vm.acctNo = '';\r\n vm.acctAddress = '';\r\n vm.guid = '';\r\n vm.showCPIMessage = false;\r\n vm.successMessage = false;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n vm.onManage = onManage;\r\n vm.onDashboard = onDashboard;\r\n vm.payNow = payNow;\r\n vm.cancelBtn = cancelBtn;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n function onManage() {\r\n redirect(vm.urls.manageAutoPay);\r\n }\r\n\r\n function onDashboard() {\r\n redirect(vm.urls.dashboard);\r\n }\r\n function payNow() {\r\n pushVPV('/vpv/de/page/auto-pay/load/auto-pay/account-past-due/na/new-enrollment/pay-now');\r\n pushDL(\r\n 'auto_pay',\r\n 'pay-now-|-/autopay/pay-now',\r\n 'past-due-balance-must-be-paid-in-full',\r\n );\r\n redirect(vm.urls.payNow);\r\n }\r\n\r\n function cancelBtn() {\r\n broadcastService.cancelAutoPay();\r\n }\r\n\r\n function redirect(url) {\r\n window.location.href = url;\r\n }\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.guid = angular.element('#guid').val();\r\n broadcastService.loadingSpinner(true);\r\n const { accountSelected } = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const autoPayDetails = sessionStorageService.get(assetService.storageKeys.accountAutoPayDetails);\r\n vm.cpiMessage = autoPayDetails.CpiMessage;\r\n vm.acctNickName = accountSelected.nickname;\r\n vm.acctAddress = accountSelected.address;\r\n vm.acctNo = accountSelected.accountNum;\r\n\r\n\r\n if (autoPayDetails.StatusCode === '01') {\r\n pushVPV('/vpv/de/page/auto-pay/error/auto-pay/account-past-due/na/new-enrollment');\r\n pushDL(\r\n 'auto_pay_error',\r\n 'not-set' +\r\n '-|-' +\r\n $rootScope.dataLayerFormat('past due balance must be paid before enrolling in auto pay') +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.AutoPayEnrollmentEligibilityCheck}`,\r\n 'auto-pay-|-auto-pay',\r\n );\r\n vm.highCPI = true;\r\n broadcastService.headerSwitch('Full');\r\n if (autoPayDetails.CpiMessagepriority === '1000') {\r\n vm.highCPIMessage = true;\r\n } else {\r\n vm.highCPIMessage = false;\r\n }\r\n } else {\r\n if (autoPayDetails.StatusCode === '02' || autoPayDetails.StatusCode === '03') {\r\n vm.dueDate = moment(autoPayDetails.DueDateStr).format('MM/DD/YYYY');\r\n vm.dueBalance = autoPayDetails.BalanceDue;\r\n vm.successMessage = true;\r\n if (autoPayDetails.StatusCode === '02') {\r\n vm.showCPIMessage = true;\r\n }\r\n }\r\n vm.highCPI = false;\r\n }\r\n if (autoPayDetails.StatusCode !== '01') {\r\n pushVPV('/vpv/de/page/auto-pay/success/auto-pay/you-are-enrolled-in-auto-pay/na/new-enrollment');\r\n pushDL('auto-pay', 'success', 'kpi');\r\n const errorObject = sessionStorageService.get(assetService.storageKeys.enrollmentFailed);\r\n if (errorObject) {\r\n vm.failure = errorObject.enrollmentFailed;\r\n }\r\n }\r\n\r\n broadcastService.headerSwitch('Full');\r\n broadcastService.loadingSpinner(false);\r\n }\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'InviteUserController',\r\n InviteUserController,\r\n);\r\n\r\nInviteUserController.$inject = [\r\n '$scope',\r\n '$sce',\r\n 'currentManagerFactory',\r\n 'commonService',\r\n 'apiConfigService',\r\n 'genericHelperService',\r\n 'TableHelperService',\r\n 'FPInviteUserFactory',\r\n 'assetService',\r\n 'sessionStorageService'\r\n];\r\n\r\nfunction InviteUserController(\r\n $scope,\r\n $sce,\r\n currentManagerFactory,\r\n commonService,\r\n apiConfigService,\r\n genericHelperService,\r\n tableHelperService,\r\n FPInviteUserFactory,\r\n assetService,\r\n sessionStorageService\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _url = null;\r\n let _urlUser = null;\r\n let globalSelectedAccount = {};\r\n\r\n /**\r\n * Global Vars\r\n */\r\n let vm = this;\r\n vm.title = 'Invite User';\r\n vm.tableData = [];\r\n\r\n vm.userTableData = [];\r\n vm.userTableRoles = ['Manager', 'Viewer', 'Admin'];\r\n\r\n vm.allSelected = {\r\n id: -1,\r\n status: null,\r\n };\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n /*\r\n * Function Declarations\r\n */\r\n /* --------------Function Declarations-----------------------*/\r\n let init = init;\r\n let setModels = setModels;\r\n vm.showHide = showHide;\r\n vm.sortArrow = '';\r\n\r\n /* --------------$on functions-----------------------*/\r\n $scope.$on('CheckBox-Selected', (event, index) => {\r\n tableHelperService.checkBoxSelected(vm.userTableData, vm.allSelected, index)\r\n });\r\n\r\n $scope.$on('setDateValue', (event, data) => {\r\n vm.userTableData.forEach((element) => {\r\n element.endDate = element.endDateModel ? element.endDateModel : element.endDate;\r\n });\r\n });\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n let setTableFormat = function () {\r\n vm.tableData = genericHelperService.notReferencesArrayObjects(vm.Roles.roles);\r\n };\r\n\r\n let userSetTableFormat = function () {\r\n vm.userTableData = genericHelperService.notReferencesArrayObjects(vm.NewUser.roles);\r\n\r\n vm.userTableRoles = genericHelperService.arrayToDrop(vm.userTableRoles, null, null);\r\n };\r\n\r\n vm.sortTable = function () {\r\n vm.sortArrow = tableHelperService.sortingTableData(vm.userTableData, 'account', vm.sortArrow);\r\n };\r\n\r\n vm.dropChannel = function () {\r\n vm.userTableData.forEach((element) => {\r\n element.role = element.roleModel ? element.roleModel : element.role;\r\n });\r\n };\r\n\r\n function load() {\r\n _url = apiConfigService.developUrls.getDefaultRolesUrl('');\r\n _urlUser = apiConfigService.developUrls.getDefaultNewUserUrl('');\r\n\r\n let promises = [getRoles(), getNewUser(), getRole()];\r\n\r\n commonService.executePromises(promises).then(function () {\r\n setTableFormat();\r\n userSetTableFormat();\r\n });\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case (assetService.roles.owner):\r\n vm.ownerRole = true;\r\n break;\r\n case (assetService.roles.admin):\r\n vm.adminRole = true;\r\n break;\r\n case (assetService.roles.viewer):\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n function getRoles() {\r\n return FPInviteUserFactory.getServiceUser(_url).then(\r\n function (result) {\r\n vm.Roles = result;\r\n },\r\n function(error) {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n function getNewUser() {\r\n return FPInviteUserFactory.getServiceNewUser(_urlUser).then(\r\n function (result) {\r\n vm.NewUser = result;\r\n },\r\n function (error) {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n }\r\n\r\n function showHide() {\r\n vm.show = vm.show ? false : true;\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n init = function () {\r\n let globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('AddManageBankAccount', AddManageBankAccount);\r\n\r\nAddManageBankAccount.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'manageBankAccountsForPrepaidService',\r\n '$modalInstance',\r\n 'broadcastService',\r\n '$interval',\r\n '$timeout',\r\n 'getBankIdUsageService',\r\n 'componentStateHandler',\r\n '$window',\r\n];\r\n\r\nfunction AddManageBankAccount(\r\n $rootScope,\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n manageBankAccountsForPrepaidService,\r\n $modalInstance,\r\n broadcastService,\r\n $interval,\r\n $timeout,\r\n getBankIdUsageService,\r\n componentStateHandler,\r\n $window,\r\n) {\r\n /* --------------Gloabl Vars-----------------------*/\r\n const vm = this;\r\n $rootScope.apiValidation = false;\r\n vm.accountConfirmNumber = '';\r\n vm.accountNickname = '';\r\n vm.accountNumber = '';\r\n vm.accountRouting = '';\r\n vm.accountType = [];\r\n vm.loadingSpinner = false;\r\n vm.showNameError = false;\r\n vm.selectAccountType = null;\r\n vm.ACIValidationErr = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.accNameEmpty = false;\r\n vm.accRoutingEmpty = false;\r\n vm.accNumEmpty = false;\r\n vm.accConfirmNumEmpty = false;\r\n vm.accTypeEmpty = false;\r\n vm.bankAccountAddResponse = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.addBankDetails = addBankDetails;\r\n vm.checkNickname = checkNickname;\r\n vm.noNameError = noNameError;\r\n vm.checkAcctNum = checkAcctNum;\r\n vm.noAccError = noAccError;\r\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\r\n vm.noConfirmAccError = noConfirmAccError;\r\n vm.loader = false;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n const selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n const orgBPpresent = sessionStorageService.get(\r\n assetService.storageKeys.orgBPpresent,\r\n );\r\n pushVPV(\r\n '/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/add-bank-account',\r\n );\r\n\r\n if (orgBPpresent) {\r\n vm.businessPartnerId = orgBP;\r\n } else {\r\n vm.businessPartnerId = relatedBP;\r\n }\r\n\r\n vm.userEmailId = selectedAddressData.userEmail;\r\n vm.contractAccNum = selectedAddressData.accountSelected.accountNum;\r\n vm.getAccLimit = sessionStorageService.get('AccountNumberLimit');\r\n vm.getNameLimit = sessionStorageService.get('NicknameLimit');\r\n }\r\n\r\n function checkNickname() {\r\n const nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\r\n if (nameLength >= vm.getNameLimit) {\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function noNameError() {\r\n const nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\r\n if (nameLength > vm.getNameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function checkAcctNum() {\r\n const accLength = vm.accountNumber ? vm.accountNumber.length : 0;\r\n if (accLength >= vm.getAccLimit) {\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function noAccError() {\r\n const accLength = vm.accountNumber ? vm.accountNumber.length : 0;\r\n if (accLength > vm.getAccLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function checkConfirmAcctNum() {\r\n const accCLength = vm.accountConfirmNumber\r\n ? vm.accountConfirmNumber.length\r\n : 0;\r\n if (accCLength >= vm.getAccLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function noConfirmAccError() {\r\n const accCLength = vm.accountConfirmNumber\r\n ? vm.accountConfirmNumber.length\r\n : 0;\r\n if (accCLength > vm.getAccLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function addBankDetails() {\r\n vm.accNameEmpty = vm.accountNickname ? false : true;\r\n vm.accRoutingEmpty = vm.accountRouting ? false : true;\r\n vm.accNumEmpty = vm.accountNumber ? false : true;\r\n vm.accConfirmNumEmpty = vm.accountConfirmNumber ? false : true;\r\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\r\n\r\n if (\r\n !vm.accNameEmpty &&\r\n !vm.accRoutingEmpty &&\r\n !vm.accNumEmpty &&\r\n !vm.accConfirmNumEmpty &&\r\n !vm.accTypeEmpty\r\n ) {\r\n vm.loader = true;\r\n const newBankData = {\r\n businessPartnerId: vm.businessPartnerId,\r\n accountNumber: vm.accountNumber,\r\n bankDescription: vm.accountNickname,\r\n routingNumber: vm.accountRouting,\r\n accountType: vm.selectAccountType,\r\n requestedBy: vm.userEmailId,\r\n action: assetService.serviceActions.manageBankAccountsForPrepaid.ADD,\r\n };\r\n addNewBankAccount(newBankData).then(() => {\r\n if (vm.bankAccountAddResponse.ReplyCode === 'SUCCESS') {\r\n vm.bankAddedSuccess = true;\r\n $modalInstance.close();\r\n $window.scrollTo(0, 0);\r\n $rootScope.$broadcast(assetService.events.reloadAfterAddBankAccount);\r\n } else if (\r\n vm.bankAccountAddResponse.MessageNum === '732' ||\r\n vm.bankAccountAddResponse.MessageNum === '739' ||\r\n vm.bankAccountAddResponse.MessageNum === '734' ||\r\n vm.bankAccountAddResponse.MessageNum === '278' ||\r\n vm.bankAccountAddResponse.MessageNum === '429' ||\r\n vm.bankAccountAddResponse.MessageNum === '270'\r\n ) {\r\n vm.showErrorMessage = true;\r\n vm.loader = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function addNewBankAccount(data) {\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(data)\r\n .then(\r\n result => {\r\n vm.bankAccountAddResponse = result.d.ManageBankAcc_NAV;\r\n vm.ACIValidationFailed = false;\r\n vm.loadingSpinner = false;\r\n if (\r\n result &&\r\n result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S\r\n ) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount\r\n .toastNotificationMessageAdd,\r\n 'Bank Account Succesfully added.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-accounts/success/manage-bank-accounts/bank-account-successfully-added',\r\n );\r\n }\r\n },\r\n error => {\r\n vm.bankAccountAddResponse = error;\r\n vm.ACIValidationFailed = true;\r\n vm.loadingSpinner = false;\r\n if (\r\n error.MessageNum === '732' ||\r\n error.MessageNum === '739' ||\r\n error.MessageNum === '734' ||\r\n error.MessageNum === '278' ||\r\n error.MessageNum === '429' ||\r\n error.MessageNum === '270'\r\n ) {\r\n vm.ACIValidationErr = error.Message;\r\n vm.ACIMessageNum = error.MessageNum;\r\n } else {\r\n vm.ACIValidationFailed = false;\r\n $modalInstance.close();\r\n }\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-accounts/error/add-bank-accounts/bank-account-cannot-be-added-at-this-time',\r\n );\r\n pushDL(\r\n 'manage-bank-account_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.ACIValidationErr) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'add-bank-account',\r\n );\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n const accountTypeArrayValue = [\r\n { CHK: 'Personal Checking' },\r\n { SAV: 'Personal Savings' },\r\n { BCK: 'Business Checking' },\r\n { BSV: 'Business Savings' },\r\n ];\r\n if (accountTypeArrayValue) {\r\n const accounts = _.map(accountTypeArrayValue, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('EditBankAccountNickname', EditBankAccountNickname);\r\nEditBankAccountNickname.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'manageBankAccountsForPrepaidService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'modalParameters',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\nfunction EditBankAccountNickname(\r\n $log,\r\n assetService,\r\n sessionStorageService,\r\n $modalInstance,\r\n manageBankAccountsForPrepaidService,\r\n $rootScope,\r\n commongaTaggingService,\r\n modalParameters,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n vm.bpNumber = modalParameters.bpNumber;\r\n vm.bankAccountId = modalParameters.bankAccountId;\r\n vm.accountNumber = modalParameters.accountNumber;\r\n vm.routingNumber = modalParameters.routingNumber;\r\n vm.accountNickname = modalParameters.nickname;\r\n vm.accNameEmpty = false;\r\n vm.loader = false;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.editBankNickname = editBankNickname;\r\n vm.checkNickname = checkNickname;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n function checkNickname() {\r\n let nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\r\n if (nameLength >= vm.getNameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n vm.accNameEmpty = nameLength == 0 ? true : false;\r\n }\r\n\r\n function editBankNickname() {\r\n vm.accNameEmpty = vm.accountNickname ? false : true;\r\n if (vm.accountNickname) {\r\n vm.loader = true;\r\n const newParamData = {\r\n businessPartnerId: vm.bpNumber,\r\n bankAccountId: vm.bankAccountId,\r\n bankDescription: vm.accountNickname,\r\n action: assetService.serviceActions.manageBankAccountsForPrepaid.EDIT,\r\n RoutingNumber: vm.routingNumber,\r\n };\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(newParamData)\r\n .then(\r\n result => {\r\n if (\r\n result &&\r\n result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S\r\n ) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount\r\n .toastNotificationMessage,\r\n 'Nickname successfully saved.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount\r\n .toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n $modalInstance.close();\r\n $rootScope.$broadcast(\r\n assetService.events.reloadManagebankAccount,\r\n );\r\n pushVPV(\r\n '/vpv/de/toast-notification/manage-bank-account/success/nickname-successfully-changed',\r\n );\r\n } else {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message:\r\n 'Nickname cannot be saved at this time. Please try again.',\r\n pageTitle: 'manage bank accounts',\r\n });\r\n $modalInstance.close();\r\n vm.ACIValidationErr = result.d.ManageBankAcc_NAV.Message;\r\n vm.ACIMessageNum = result.d.ManageBankAcc_NAV.MessageNum;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-accounts/error/rename-nickname/nickname-cannot-be-saved-at-this-time',\r\n );\r\n pushDL(\r\n 'manage-bank-account_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.ACIValidationErr) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'rename-nickname',\r\n );\r\n }\r\n },\r\n error => {\r\n $modalInstance.close();\r\n vm.ACIValidationErr = error.Message;\r\n vm.ACIMessageNum = error.MessageNum;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-accounts/error/rename-nickname/nickname-cannot-be-saved-at-this-time',\r\n );\r\n pushDL(\r\n 'manage-bank-account_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.ACIValidationErr) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'rename-nickname',\r\n );\r\n },\r\n );\r\n }\r\n }\r\n\r\n function load() {\r\n vm.getNameLimit = sessionStorageService.get('NicknameLimit');\r\n pushVPV(\r\n '/vpv/de/modal/manage-bank-account/load/rename-bank-account-nickname',\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('DeleteBankAccount', DeleteBankAccount);\r\nDeleteBankAccount.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'manageBankAccountsForPrepaidService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'modalParameters',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\nfunction DeleteBankAccount(\r\n $log,\r\n assetService,\r\n sessionStorageService,\r\n $modalInstance,\r\n manageBankAccountsForPrepaidService,\r\n $rootScope,\r\n commongaTaggingService,\r\n modalParameters,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n vm.bankAccountDetails = {};\r\n vm.bpNumber = modalParameters.bpNumber;\r\n vm.bankAccountId = modalParameters.bankAccountId;\r\n vm.bankAccountDetails.accountNumber = modalParameters.accountNumber;\r\n vm.bankAccountDetails.nickname = modalParameters.nickname;\r\n vm.bankAccountDetails.bankInfoAccountDetails =\r\n modalParameters.bankInfoAccountDetails;\r\n vm.bankAccountDetails.showChevron = modalParameters.showChevron;\r\n vm.loader = false;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function deleteAccount(event) {\r\n vm.loader = true;\r\n if (event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n }\r\n const newParamData = {\r\n businessPartnerId: vm.bpNumber,\r\n bankAccountId: vm.bankAccountId,\r\n action: assetService.serviceActions.manageBankAccountsForPrepaid.DELETE,\r\n };\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(newParamData)\r\n .then(\r\n result => {\r\n if (\r\n result &&\r\n result.d.ManageBankAcc_NAV.Type === assetService.replyCodes.S\r\n ) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount\r\n .toastNotificationMessage,\r\n 'Bank account successfully deleted.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n $modalInstance.close();\r\n $rootScope.$broadcast(assetService.events.reloadManagebankAccount);\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-account/success/bank-account-successfully-deleted',\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount\r\n .toastNotificationMessage,\r\n 'Bank account cannot be deleted at this time. Please try again.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n $modalInstance.close();\r\n $rootScope.$broadcast(assetService.events.reloadManagebankAccount);\r\n vm.ACIValidationErr = result.d.ManageBankAcc_NAV.Message;\r\n vm.ACIMessageNum = result.d.ManageBankAcc_NAV.MessageNum;\r\n pushVPV(\r\n '/vpv/de/toast/manage-bank-accounts/error/delete-bank-accounts/bank-account-cannot-be-deleted-at-this-time',\r\n );\r\n pushDL(\r\n 'manage-bank-account_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.ACIValidationErr) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'delete-bank-account',\r\n );\r\n }\r\n },\r\n error => {\r\n $modalInstance.close();\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n pushVPV(\r\n '/vpv/de/modal/manage-bank-account/load/are-you-sure-you-want-to-delete-this-bank-account',\r\n );\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.deleteAccount = deleteAccount;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('ManageBankAccountController', ManageBankAccountController);\r\n\r\nManageBankAccountController.$inject = [\r\n '$location',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'getLoggedInUserDetailsService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'getBankIdUsageService',\r\n 'getDeepLinkedPrimaryBPService',\r\n 'ccGetUserAccountsService',\r\n 'componentStateHandler',\r\n 'accountSearchService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ManageBankAccountController(\r\n $location,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n getLoggedInUserDetailsService,\r\n modalService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n getBankIdUsageService,\r\n getDeepLinkedPrimaryBPService,\r\n ccGetUserAccountsService,\r\n componentStateHandler,\r\n accountSearchService,\r\n commongaTaggingService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let globalSelectedAccount;\r\n let data;\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.fromDeleteAccount = false;\r\n vm.fromAddBankAccount = false;\r\n vm.showToast = false;\r\n vm.showChevronDetails = false;\r\n vm.loadingSpinner = true;\r\n vm.propertyCount = 0;\r\n vm.customerName = '';\r\n vm.data = [];\r\n vm.activeDetails = [];\r\n vm.accountType = [];\r\n vm.accountTypeDetails = [];\r\n vm.bankInfoAccountDetails = [];\r\n vm.toastData = {\r\n messageOption: '', // vm.sessionData.messageOption;\r\n option: '', // vm.sessionData.option;\r\n show: '',\r\n };\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n vm.message1 = 'Property';\r\n vm.message2 = 'Properties';\r\n vm.primaryBp = '';\r\n vm.orgBPpresent = false;\r\n vm.isShowMoreVisible = false;\r\n vm.remainingAccs = [];\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n vm.bankMobileData = {};\r\n vm.orgBP = null;\r\n /*\r\n * Function Declarations\r\n */\r\n /* --------------Function Declarations-----------------------*/\r\n vm.init = init;\r\n vm.deleteBankAccount = deleteBankAccount;\r\n vm.editBankNickname = editBankNickname;\r\n vm.activateDetails = activateDetails;\r\n vm.bankInfoDetails = bankInfoDetails;\r\n vm.closeToast = closeToast;\r\n vm.addManageBankAccount = addManageBankAccount;\r\n vm.viewAll = viewAll;\r\n vm.showVPVChevron = showVPVChevron;\r\n\r\n /* --------------$on functions-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n let setModels = function() {};\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function editBankNickname(index) {\r\n modalService.editNickName({\r\n bpNumber: vm.primaryBp,\r\n bankAccountId: vm.data[index].bankAccountId,\r\n accountNumber: vm.data[index].accountNumber,\r\n routingNumber: vm.data[index].routingNumber,\r\n nickname: vm.data[index].nickname,\r\n });\r\n }\r\n\r\n function deleteBankAccount(index) {\r\n const bankDetails = vm.data[index];\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageBankAccount.bankAccountDetails,\r\n bankDetails,\r\n );\r\n bankInfoDetails(vm.data[index]);\r\n bankInfoDetails(vm.data[index]);\r\n modalService.deleteBankAccount({\r\n bpNumber: vm.primaryBp,\r\n bankAccountId: vm.data[index].bankAccountId,\r\n accountNumber: vm.data[index].accountNumber,\r\n nickname: vm.data[index].nickname,\r\n bankInfoAccountDetails: vm.bankInfoAccountDetails,\r\n showChevron: vm.data[index].showChevron,\r\n });\r\n }\r\n\r\n function addManageBankAccount() {\r\n modalService.addManageBankAccount();\r\n }\r\n\r\n function activateDetails() {\r\n vm.loadingSpinner = true;\r\n if (vm.temp) {\r\n if (vm.temp.length < 11) {\r\n pushVPV(\r\n '/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/saved-bank-accounts/under-ten-accounts',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/saved-bank-accounts/over-ten-accounts',\r\n );\r\n }\r\n bankAccountIds = [];\r\n vm.temp.forEach(item => {\r\n const bankDetails = {\r\n BankAccountID: item.bankAccountId,\r\n BankIDToCA_NAV: {\r\n results: [\r\n {\r\n CAToPayments_NAV: {\r\n results: [{}],\r\n },\r\n },\r\n ],\r\n },\r\n BankIDToMsg_NAV: {},\r\n };\r\n bankAccountIds.push(bankDetails);\r\n });\r\n }\r\n getBankIdUsageService.sitecore\r\n .getBankIdUsage({\r\n businessPartnerId: globalSelectedAccount.primaryBp,\r\n bankIdDetails: bankAccountIds,\r\n })\r\n .then(\r\n result => {\r\n if (result && result.d.BPToBankID_NAV.results) {\r\n result.d.BPToBankID_NAV.results.forEach(item => {\r\n if (item.BankIDToCA_NAV.results.length > 0) {\r\n if (vm.temp) {\r\n vm.temp.forEach(data => {\r\n if (\r\n item.BankAccountID === data.bankAccountId &&\r\n item.BankIDToCA_NAV.results.length > 0\r\n ) {\r\n data.showChevron = true;\r\n }\r\n });\r\n }\r\n item.active = false;\r\n vm.accountTypeDetails.push(item);\r\n }\r\n });\r\n }\r\n componentStateHandler.showComponent(vm);\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n function showVPVChevron() {\r\n pushDL('manage-bank-account', 'expansion', 'manage-bank-account');\r\n }\r\n\r\n function bankInfoDetails(bankItem) {\r\n vm.data.forEach(item => {\r\n item.active = item != bankItem ? false : bankItem.active;\r\n });\r\n\r\n if (vm.accountTypeDetails) {\r\n if (!bankItem.active) {\r\n vm.accountTypeDetails.forEach(data => {\r\n if (\r\n data.BankAccountID === bankItem.bankAccountId &&\r\n data.BankAccountID.length === bankItem.bankAccountId.length\r\n ) {\r\n vm.bankInfoAccountDetails = data.BankIDToCA_NAV.results;\r\n vm.propertyCount = 0;\r\n vm.bankInfoAccountDetails.forEach(item => {\r\n if (item.Experience === 'LANL') {\r\n item.showLandlord = true;\r\n item.showResidential = false;\r\n vm.propertyCount += 1;\r\n item.landlordMessage =\r\n vm.propertyCount == 1 ? vm.message1 : vm.message2;\r\n } else {\r\n item.showResidential = true;\r\n item.showLandlord = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n bankItem.active = !bankItem.active;\r\n }\r\n vm.bankMobileData[bankItem.bankAccountId] = vm.bankInfoAccountDetails;\r\n }\r\n\r\n function load() {\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n businessPartnerId: $location.search().businessPartnerId, // Get Primary Bp\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n } else {\r\n data = {\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n };\r\n }\r\n\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.customerName = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.customername,\r\n );\r\n if (\r\n globalAccountInfo &&\r\n globalAccountInfo.hasOwnProperty('accountSelected')\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n } else {\r\n globalSelectedAccount = {};\r\n }\r\n getOrgBPFromAccountSearch(getDeepLinkedPrimaryBP);\r\n }\r\n\r\n function viewAll() {\r\n vm.isShowMoreVisible = true;\r\n showAll(true);\r\n }\r\n\r\n function showAll(type) {\r\n vm.isShowMoreVisible = vm.temp.length > 10 && !type ? false : true;\r\n vm.remainingAccounts = vm.temp.length > 10 ? vm.temp.length - 10 : 0;\r\n let tempLength = vm.temp.length;\r\n vm.remainingAccs = vm.temp.slice(vm.data.length, tempLength);\r\n if (vm.afterTen > 0) {\r\n vm.showTen = vm.remainingAccs.slice(0, vm.remainingAccs.length);\r\n } else {\r\n vm.showTen = vm.remainingAccs.slice(0, 10);\r\n }\r\n if (vm.isShowMoreVisible == true && type == true) {\r\n vm.data = vm.data.concat(vm.showTen);\r\n vm.afterTen = vm.temp.length - vm.data.length;\r\n if (vm.afterTen > 0) {\r\n vm.isShowMoreVisible = false;\r\n }\r\n vm.afterTen = 0;\r\n }\r\n }\r\n\r\n function getDeepLinkedPrimaryBP() {\r\n getDeepLinkedPrimaryBPService.sitecore\r\n .getDeepLinkedPrimaryBP()\r\n .then(result => {\r\n if (result && result.trim()) {\r\n vm.primaryBp = result;\r\n globalSelectedAccount = {\r\n ...globalSelectedAccount,\r\n primaryBp: result,\r\n };\r\n accountSearch(result);\r\n } else if (vm.orgBPpresent) {\r\n primaryBp = vm.primaryBp = vm.orgBP;\r\n globalSelectedAccount = {\r\n ...globalSelectedAccount,\r\n primaryBp,\r\n };\r\n getPrepaidDetails(globalSelectedAccount);\r\n } else {\r\n getPrimaryBPFromUserAccounts().then(\r\n primaryBp => {\r\n vm.primaryBp = primaryBp;\r\n globalSelectedAccount = {\r\n ...globalSelectedAccount,\r\n primaryBp,\r\n };\r\n getPrepaidDetails(globalSelectedAccount);\r\n },\r\n () => getPrepaidDetails(globalSelectedAccount),\r\n );\r\n }\r\n });\r\n }\r\n\r\n function getPrimaryBPFromUserAccounts() {\r\n return ccGetUserAccountsService\r\n .getUserAccounts(data)\r\n .then(results => results.bpData.primaryBp);\r\n }\r\n\r\n function getOrgBPFromAccountSearch() {\r\n return accountSearchService.sitecore\r\n .accountSearch({\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n dataSource: assetService.strings.ISU,\r\n })\r\n .then(\r\n results => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\r\n vm.orgName =\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\r\n if (vm.orgName) {\r\n vm.orgBPpresent = true;\r\n vm.orgBP =\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\r\n }\r\n sessionStorageService.set(assetService.storageKeys.orgBP, vm.orgBP);\r\n sessionStorageService.set(\r\n assetService.storageKeys.orgBPpresent,\r\n vm.orgBPpresent,\r\n );\r\n }\r\n if (getDeepLinkedPrimaryBP) {\r\n getDeepLinkedPrimaryBP();\r\n }\r\n },\r\n error => {\r\n if (getDeepLinkedPrimaryBP) {\r\n getDeepLinkedPrimaryBP();\r\n }\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function accountSearch() {\r\n return accountSearchService.sitecore\r\n .accountSearch({\r\n businessPartnerId: primaryBp,\r\n dataSource: assetService.strings.ISU,\r\n })\r\n .then(results => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\r\n vm.customerName = `${bpData.BpFirstName} ${bpData.BpLastName}`;\r\n getPrepaidDetails({ businessPartnerId: primaryBp });\r\n }\r\n });\r\n }\r\n\r\n function getPrepaidDetails(value) {\r\n vm.loadingSpinner = true;\r\n getPrepaidDetailsService.sitecore\r\n .getPrepaidDetails({\r\n businessPartnerId: value.primaryBp,\r\n contractAccountId: value.accountNum,\r\n })\r\n .then(\r\n result => {\r\n vm.data = [];\r\n vm.temp = [];\r\n if (\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results.length > 0\r\n ) {\r\n const plans = _.map(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n item => ({\r\n bankAccountId: item.BankAccountId,\r\n accountNumber: item.BankAccountNumber,\r\n routingNumber: item.BankRoutingNumber,\r\n nickname: item.BankDescription,\r\n accountType: item.BankAccountType,\r\n active: false,\r\n showChevron: false,\r\n }),\r\n );\r\n vm.temp = plans;\r\n vm.data = vm.temp.slice(0, 10);\r\n //vm.data = plans;\r\n if (vm.accountType && vm.temp) {\r\n activateDetails();\r\n vm.accountType.forEach(item => {\r\n vm.temp.forEach(dataItem => {\r\n if (item.value === dataItem.accountType) {\r\n dataItem.accountType = item.text;\r\n }\r\n });\r\n });\r\n }\r\n showAll(false);\r\n }\r\n componentStateHandler.showComponent(vm);\r\n },\r\n error => {\r\n vm.data = [];\r\n vm.isShowMoreVisible = true;\r\n vm.loadingSpinner = false;\r\n pushVPV(\r\n '/vpv/de/page/manage-bank-accounts/load/manage-bank-accounts/empty-state',\r\n );\r\n },\r\n );\r\n }\r\n\r\n function closeToast() {\r\n vm.toastData.show = 'fade-out';\r\n vm.showToast = false;\r\n }\r\n\r\n $scope.$on(assetService.events.reloadManagebankAccount, () => {\r\n vm.loadingSpinner = true;\r\n vm.fromDeleteAccount = true;\r\n vm.fromAddBankAccount = false;\r\n init(vm.bankAccountType, vm.accountNumLimit, vm.nickNameLimit);\r\n if (vm.toastData.option == 'success' || vm.toastData.option == 'error') {\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.toastData.show = 'fade-out';\r\n vm.showToast = false;\r\n }, 6000);\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.reloadAfterAddBankAccount, () => {\r\n vm.loadingSpinner = true;\r\n vm.fromAddBankAccount = true;\r\n vm.fromDeleteAccount = false;\r\n init(vm.bankAccountType, vm.accountNumLimit, vm.nickNameLimit);\r\n if (vm.toastData.option == 'success' || vm.toastData.option == 'error') {\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.toastData.show = 'fade-out';\r\n vm.showToast = false;\r\n }, 6000);\r\n }\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(accountTypeArray, accountNumberLimit, accountNicknameLimit) {\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n }\r\n vm.bankAccountType = accountTypeArray;\r\n vm.accountNumLimit = accountNumberLimit;\r\n sessionStorageService.set('AccountNumberLimit', vm.accountNumLimit);\r\n vm.nickNameLimit = accountNicknameLimit;\r\n sessionStorageService.set('NicknameLimit', vm.nickNameLimit);\r\n\r\n if (vm.fromDeleteAccount) {\r\n vm.showToast = true;\r\n vm.toastData.option = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n );\r\n vm.toastData.messageOption = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotificationMessage,\r\n );\r\n vm.toastData.show = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotificationtime,\r\n );\r\n }\r\n\r\n if (vm.fromAddBankAccount) {\r\n vm.showToast = true;\r\n vm.toastData.option = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotification,\r\n );\r\n vm.toastData.messageOption = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotificationMessageAdd,\r\n );\r\n vm.toastData.show = sessionStorageService.get(\r\n assetService.storageKeys.manageBankAccount.toastNotificationtime,\r\n );\r\n }\r\n\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n if (results) {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n }\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('manageAutoPayMain', manageAutoPayMain);\r\n\r\nmanageAutoPayMain.$inject = [\r\n '$state',\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'ccAutoPayAssetService',\r\n '$rootScope',\r\n];\r\n\r\nfunction manageAutoPayMain(\r\n $state,\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n ccAutoPayAssetService,\r\n $rootScope,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _selectedAddressData = null;\r\n let _startedFromWatcher = false;\r\n let _startedFromScope = false;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n vm.cpiInfo = {};\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\r\n if (_selectedAddressData.accountSelected.role === assetService.roles.admin) {\r\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenroll);\r\n } else if (_selectedAddressData.accountSelected.role === assetService.roles.owner) {\r\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPay);\r\n } else {\r\n window.location.href = $scope.urls.billingAndPaymentsLandingPage;\r\n }\r\n }\r\n\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n delete $rootScope.autopayBankData;\r\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\r\n if (_selectedAddressData && !_startedFromWatcher) {\r\n _startedFromScope = true;\r\n load();\r\n }\r\n }\r\n\r\n $scope.$on(ccAutoPayAssetService.events.globalSwitcherAccount, () => {\r\n if (!_startedFromScope) {\r\n _startedFromWatcher = true;\r\n load();\r\n }\r\n });\r\n}","app.controller('manageAutoPayUnenrollSuccess', manageAutoPayUnenrollSuccess);\r\n\r\nmanageAutoPayUnenrollSuccess.$inject = [\r\n 'commongaTaggingService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'assetService',\r\n '$rootScope',\r\n '$window',\r\n];\r\n\r\nfunction manageAutoPayUnenrollSuccess(\r\n commongaTaggingService,\r\n sessionStorageService,\r\n broadcastService,\r\n assetService,\r\n $rootScope,\r\n $window,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n vm.cpiInfo = {};\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.cpiInfo = $rootScope.cpiInfo;\r\n broadcastService.headerSwitch('Full');\r\n pushVPV('/vpv/de/page/auto-pay/success/auto-pay/you’ve-unenrolled-from-auto-pay/na/manage');\r\n }\r\n\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('manageAutoPayUnenroll', manageAutoPayUnenroll);\r\n\r\nmanageAutoPayUnenroll.$inject = [\r\n '$log',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'ccAutoPayAssetService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'sessionStorageService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'broadcastService',\r\n 'commongaTaggingService',\r\n '$rootScope'\r\n];\r\n\r\nfunction manageAutoPayUnenroll(\r\n $log,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n ccAutoPayAssetService,\r\n enrollInBillingAndPaymentProgramsService,\r\n sessionStorageService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n broadcastService,\r\n commongaTaggingService,\r\n $rootScope\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _accountSelected = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n let _selectedAddressData = null;\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n let _selectedEmail = null;\r\n vm.viewShow = true;\r\n $rootScope.BnPpageError = false;\r\n /**\r\n * Global Vars\r\n */\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.previous = previous;\r\n vm.deEnroll = deEnroll;\r\n vm.nextBillingMonth = null;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function deEnroll(event) {\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n let data = {\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n action: assetService.serviceActions.deEnrollFromProgram.DE_ENROLL,\r\n requestedBy: _selectedEmail.primaryEmail,};\r\n if(_accountSelected)\r\n {\r\n data = {\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n action: assetService.serviceActions.deEnrollFromProgram.DE_ENROLL,\r\n routingNo: _accountSelected.rountingNumber,\r\n bankAccountNo: _accountSelected.accountNumber,\r\n bankName: _accountSelected.nickname,\r\n requestedBy: _selectedEmail.primaryEmail,\r\n }\r\n }\r\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(data)\r\n .then((result) => {\r\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\r\n broadcastService.headerSwitch('Full');\r\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenrollSuccess);\r\n } else {\r\n // Toast alert goes here.\r\n }\r\n },(error) => {\r\n $rootScope.BnPpageError = true;\r\n vm.viewShow = false;\r\n });\r\n }\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function previous() {\r\n $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPay);\r\n }\r\n\r\n function load() {\r\n _selectedAddressData = sessionStorageService.get(ccAutoPayAssetService.storageKeys.selectedAddressData);\r\n _selectedEmail = sessionStorageService.get(ccAutoPayAssetService.storageKeys.globalAccounts.info);\r\n getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n }).then((result) => {\r\n const enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\r\n const enrolled = ccAutoPayAssetService.strings.Enrolled;\r\n\r\n // It's enrolled into AutoPay SAP\r\n const enrollSAPData = _.find(\r\n enrolledPrograms,\r\n program => program.ProgName === ccAutoPayAssetService.strings.DIRDEB\r\n && program.EligibilityStatus === enrolled,\r\n );\r\n\r\n\r\n if (enrollSAPData) {\r\n _accountSelected = {\r\n accountId: enrollSAPData.BankAccountId,\r\n accountNumber: enrollSAPData.BankAccountNumber,\r\n nickname: enrollSAPData.BankAccountName,\r\n rountingNumber: enrollSAPData.RoutingNumber,\r\n };\r\n vm.nextBillingMonth = enrollSAPData.EnrolledDate\r\n ? moment(enrollSAPData.EnrolledDate).format('MM/DD/YYYY')\r\n : 'XX/XX/XXXX';\r\n\r\n sessionStorageService.set(\r\n 'nextBillingMonth',\r\n vm.nextBillingMonth,\r\n );\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('manageAutoPay', manageAutoPay);\r\n\r\nmanageAutoPay.$inject = [\r\n '$log',\r\n '$scope',\r\n '$state',\r\n 'ccAutoPayAssetService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'modalService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n '$rootScope',\r\n 'broadcastService',\r\n 'assetService',\r\n 'accountSearchService',\r\n 'commonService',\r\n 'autopayenrollmenteligibilitycheckservice',\r\n '$window',\r\n];\r\n\r\nfunction manageAutoPay(\r\n $log,\r\n $scope,\r\n $state,\r\n ccAutoPayAssetService,\r\n genericHelperService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n modalService,\r\n enrollInBillingAndPaymentProgramsService,\r\n $rootScope,\r\n broadcastService,\r\n assetService,\r\n accountSearchService,\r\n commonService,\r\n autopayenrollmenteligibilitycheckservice,\r\n $window,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\r\n const _bankDescription = ccAutoPayAssetService.strings.bankDescription;\r\n let _bankAccountsOriginal = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n let _newBankAccountIdGenerated = null;\r\n let _selectedAddressData = null;\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n const _UPDATE = ccAutoPayAssetService.strings.UPDATE;\r\n const NUM_OF_ASTERISK = 5;\r\n let _selectedEmail = null;\r\n /**\r\n * Global Vars\r\n */\r\n $rootScope.dirdebenrolled = false;\r\n vm.showModal = showModal;\r\n vm.loadingSpinner = true;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.defaultBankAccount = null;\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n let SAPdueBalance;\r\n let SAPdueDate;\r\n vm.accountSelected = {\r\n accountId: null,\r\n accountNumber: null,\r\n nickname: null,\r\n rountingNumber: null,\r\n accountType: null,\r\n };\r\n vm.delegateUserAccountDetails = {\r\n accountId: null,\r\n accountNumber: null,\r\n nickname: null,\r\n rountingNumber: null,\r\n accountType: null,\r\n };\r\n vm.accountWasNotSelected = true;\r\n vm.enrolledInKubra = false;\r\n vm.dropdowns = {\r\n bankAccounts: null,\r\n };\r\n vm.form = {\r\n manageAutoPayForm: null,\r\n bankAccount: null,\r\n paymentDate: null,\r\n daysBeforePaymentDate: null,\r\n maximumPaymentAmount: null,\r\n maximumPaymentAmountCheckbox: false,\r\n };\r\n vm.loaded = false;\r\n vm.isBPACancel = false;\r\n vm.orgBPpresent = false;\r\n vm.autoPayAgreementCheck = false;\r\n vm.cpiMessage = '';\r\n vm.lowCpiMessage = false;\r\n vm.highCpiMessage = false;\r\n vm.pastDue = false;\r\n vm.dueInFuture = false;\r\n vm.showAgreement = false;\r\n vm.error = false;\r\n vm.initCalled = false;\r\n vm.previousBank = '';\r\n vm.errorTrue = false;\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, () => {\r\n _newBankAccountIdGenerated = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n );\r\n vm.initCalled = false;\r\n reload();\r\n });\r\n\r\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, () => {\r\n _newBankAccountIdGenerated = null;\r\n reload();\r\n });\r\n $scope.$on(ccAutoPayAssetService.events.modalUnenrollClosed, () => {\r\n vm.error = true;\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n vm.addBankAccount = addBankAccount;\r\n vm.cancel = cancel;\r\n vm.save = save;\r\n vm.selectAccount = selectAccount;\r\n vm.unenrollFromAutoPay = unenrollFromAutoPay;\r\n vm.hideAccount = hideAccount;\r\n vm.getOrgBPFromAccountSearch = getOrgBPFromAccountSearch;\r\n vm.toggleAgreement = toggleAgreement;\r\n vm.backToPrograms = backToPrograms;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function hideAccount(value) {\r\n let convertedValue = value;\r\n if (convertedValue && !isNaN(convertedValue)) {\r\n const stringLength = convertedValue.length;\r\n const visibleDigits = 4;\r\n if (stringLength > visibleDigits) {\r\n convertedValue = convertedValue.slice(-visibleDigits);\r\n }\r\n convertedValue = `*****${convertedValue}`;\r\n }\r\n return convertedValue;\r\n }\r\n\r\n function addBankAccount() {\r\n modalService.manageAutoPayAddBankAccountModal();\r\n }\r\n\r\n function findAccountAndSelectIt(bankID) {\r\n const accountFound = _.find(\r\n _bankAccountsOriginal,\r\n account => account[_BankAccountId] === bankID,\r\n );\r\n\r\n if (accountFound) {\r\n const accountDetails = {\r\n accountId: accountFound.BankAccountId,\r\n nickname: accountFound.BankDescription,\r\n rountingNumber: accountFound.BankRoutingNumber,\r\n accountNumber: accountFound.BankAccountNumber,\r\n accountType: accountFound.BankAccountType,\r\n };\r\n vm.accountType.forEach(item => {\r\n if (item.value === accountFound.BankAccountType) {\r\n accountDetails.accountType = item.text;\r\n }\r\n });\r\n if (vm.roleBase && vm.roleBase.adminRole) {\r\n vm.delegateUserAccountDetails = accountDetails;\r\n } else {\r\n vm.accountSelected = accountDetails;\r\n }\r\n vm.showAgreement = true;\r\n }\r\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.bankAccounts,\r\n ccAutoPayAssetService.strings.value,\r\n vm.accountSelected.accountId,\r\n );\r\n\r\n return accountFound;\r\n }\r\n\r\n function getOrgBPFromAccountSearch() {\r\n return accountSearchService.sitecore\r\n .accountSearch({\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n dataSource: assetService.strings.ISU,\r\n })\r\n .then((results) => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\r\n vm.orgName = results.d.ReqToHResNav.results[0].HResToBp.results[0].OrgName;\r\n if (vm.orgName) {\r\n vm.orgBPpresent = true;\r\n vm.orgBP = results.d.ReqToHResNav.results[0].HResToBp.results[0].BpNumber;\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function getBankAccountsSAP(requestFields) {\r\n return getPrepaidDetailsService.sitecore\r\n .getPrepaidDetails({\r\n businessPartnerId: requestFields.businessPartnerId,\r\n contractAccountId: requestFields.contractAccountId,\r\n })\r\n .then(\r\n (result) => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n return _bankAccountsOriginal;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function showModal() {\r\n modalService.updateDelegateUserBankAccount();\r\n }\r\n\r\n function reload() {\r\n vm.loaded = false;\r\n vm.loadingSpinner = true;\r\n load();\r\n }\r\n\r\n // function below cancels autopay management and send back to B&P Programs LP\r\n function cancel(redirectUrl) {\r\n if (vm.showAgreement) modalService.cancelModal(); // agreement appears when user interacts\r\n else window.location.href = redirectUrl;\r\n }\r\n\r\n function backToPrograms(redirectUrl) {\r\n window.location.href = redirectUrl;\r\n }\r\n\r\n function save() {\r\n vm.loadingSpinner = true;\r\n broadcastService.headerSwitch('Full');\r\n vm.pastDue = false;\r\n // Update details for SAP\r\n return enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n action: _UPDATE,\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n bankId: vm.accountSelected.accountId,\r\n requestedBy: _selectedEmail.primaryEmail,\r\n extensionSet: [{\r\n \"RefObject\" : _DIRDEB,\r\n \"RefFieldName\" : \"CPI_MESSAGE\",\r\n \"RefFieldValue\" : `Amount ${ SAPdueBalance } Date ${ SAPdueDate}`,\r\n },{\r\n \"RefObject\" : _DIRDEB,\r\n \"RefFieldName\" : \"TERMS\",\r\n \"RefFieldValue\" : vm.autoPayAgreementCheck ? \"X\" : ''\r\n }],\r\n })\r\n .then(\r\n (result) => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0]\r\n .ReplyCode === _SUCCESS\r\n ) {\r\n pushVPV('/vpv/de/page/auto-pay/success/manage-auto-pay/auto-pay-payment-method-updated/na/manage');\r\n $window.scrollTo(0, 0);\r\n $state.go(\r\n ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPaySuccess,\r\n );\r\n }\r\n },\r\n (error) => {\r\n vm.error = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function selectAccount(optionSelected) {\r\n vm.form.manageAutoPayForm.$setDirty();\r\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\r\n addBankAccount();\r\n findAccountAndSelectIt(vm.previousBank);\r\n } else {\r\n vm.previousBank = vm.form.bankAccount;\r\n findAccountAndSelectIt(vm.form.bankAccount);\r\n $rootScope.mainBtnActivate = false;\r\n }\r\n }\r\n\r\n function toggleAgreement() {\r\n vm.accountWasNotSelected = !vm.autoPayAgreementCheck;\r\n }\r\n\r\n function unenrollFromAutoPay() {\r\n modalService.unenrollAutoPay(vm.accountSelected);\r\n // broadcastService.headerSwitch('Simple');\r\n // $state.go(ccAutoPayAssetService.tracks.manageAutoPay.manageAutoPayUnenroll);\r\n }\r\n\r\n function setModels() {\r\n if (_newBankAccountIdGenerated) {\r\n vm.form.bankAccount = _newBankAccountIdGenerated;\r\n vm.previousBank = vm.form.bankAccount;\r\n findAccountAndSelectIt(vm.form.bankAccount);\r\n } else {\r\n vm.form.bankAccount = vm.accountSelected.accountId;\r\n vm.previousBank = vm.form.bankAccount;\r\n }\r\n }\r\n\r\n function addAsterisk(bankAccountNum, numOfAsterisk) {\r\n // remove all * prefix\r\n const LAST_DIGITS = 4;\r\n const result = bankAccountNum.substr(bankAccountNum.length - LAST_DIGITS, LAST_DIGITS);\r\n return '*'.repeat(numOfAsterisk) + result;\r\n }\r\n\r\n function setDropdowns() {\r\n if (_bankAccountsOriginal && _bankAccountsOriginal.length > 0) {\r\n vm.dropdowns.bankAccounts = _bankAccountsOriginal.map(bankAccount => ({\r\n value: bankAccount[_BankAccountId],\r\n text: bankAccount[_bankDescription]\r\n ? `${bankAccount[_bankDescription]} - ${addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)}`\r\n : `Account - ${addAsterisk(bankAccount.BankAccountNumber, NUM_OF_ASTERISK)}`,\r\n }));\r\n\r\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.bankAccounts,\r\n ccAutoPayAssetService.strings.value,\r\n _newBankAccountIdGenerated || vm.accountSelected.accountId,\r\n );\r\n\r\n vm.dropdowns.bankAccounts.push({\r\n text: 'Add Bank Account',\r\n value: ccAutoPayAssetService.strings.addAccount,\r\n });\r\n\r\n vm.showDrops = true;\r\n } else {\r\n vm.showDrops = false;\r\n }\r\n }\r\n\r\n function getCpiMessage(data) {\r\n return autopayenrollmenteligibilitycheckservice.sitecore\r\n .autoPayEnrollmentEligibilityCheck(data)\r\n .then(\r\n result => ({\r\n cpiMessage: result.d.Accounts.results[0].BalanceInfo.CpiMessage,\r\n cpiMessagePriority: result.d.Accounts.results[0].BalanceInfo.CpiMessagepriority,\r\n statusCode: result.d.Accounts.results[0].BalanceInfo.StatusCode,\r\n dueBalance: result.d.Accounts.results[0].BalanceInfo.BalanceDue,\r\n dueDate: result.d.Accounts.results[0].BalanceInfo.DueDateStr,\r\n }),\r\n (error) => {\r\n vm.loadingSpinner = false;\r\n vm.errorTrue = true;\r\n },\r\n );\r\n }\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n _selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n vm.isBPACancel =\r\n sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment,\r\n ) == 'billingAndPaymentAcivity';\r\n\r\n broadcastService.headerSwitch('Simple');\r\n\r\n _selectedEmail = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.globalAccounts.info,\r\n );\r\n\r\n getOrgBPFromAccountSearch().then((response) => {\r\n commonService.executePromises([\r\n getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus(\r\n {\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n },\r\n ),\r\n getBankAccountsSAP({\r\n businessPartnerId:\r\n vm.orgBPpresent === true ? vm.orgBP : _selectedAddressData.primaryBp,\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n }).then((result) => {\r\n setModels();\r\n setDropdowns();\r\n }),\r\n getCpiMessage(_selectedAddressData.accountSelected.accountNum),\r\n ]).then((results) => {\r\n const [\r\n result,\r\n bankAccResponse,\r\n {\r\n cpiMessage, cpiMessagePriority, statusCode, dueBalance, dueDate \r\n },\r\n ] = results;\r\n const enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\r\n const enrolled = ccAutoPayAssetService.strings.Enrolled;\r\n\r\n // cpi\r\n SAPdueBalance = dueBalance;\r\n SAPdueDate = dueDate;\r\n vm.cpiMessage = cpiMessage;\r\n vm.lowCpiMessage = cpiMessagePriority === '2000';\r\n vm.highCpiMessage = cpiMessagePriority === '1000';\r\n vm.pastDue = statusCode === '01';\r\n vm.dueInFuture = statusCode === '02' || statusCode === '03';\r\n\r\n if (vm.pastDue) {\r\n broadcastService.headerSwitch('Full');\r\n pushVPV('/vpv/de/page/auto-pay/load/manage-auto-pay/account-past-due/na/manage');\r\n } else if (!_newBankAccountIdGenerated) {\r\n pushVPV('/vpv/de/page/manage-auto-pay/load/auto-pay/change-payment-method/na/manage');\r\n }\r\n $scope.$parent.vm.cpiInfo = {\r\n statusCode,\r\n cpiMessagePriority,\r\n dueBalance,\r\n dueDate: moment(dueDate).format('MM/DD/YYYY'),\r\n sapdueDate: moment(dueDate).format('MM-DD-YYYY'),\r\n cpiMessage,\r\n };\r\n\r\n $rootScope.cpiInfo = $scope.$parent.vm.cpiInfo;\r\n \r\n\r\n // It's enrolled into AutoPay SAP\r\n let enrollSAPData = _.find(\r\n enrolledPrograms,\r\n program =>\r\n program.ProgName === ccAutoPayAssetService.strings.DIRDEB,\r\n );\r\n if (enrollSAPData.EligibilityStatus === 'Eligible') {\r\n window.location.href = '/my-account/billing-and-payment-programs';\r\n } else {\r\n enrollSAPData = enrollSAPData.EligibilityStatus === enrolled\r\n ? enrollSAPData\r\n : null;\r\n\r\n if (!_newBankAccountIdGenerated && enrollSAPData) {\r\n vm.accountSelected = {\r\n accountId: enrollSAPData.BankAccountId,\r\n accountNumber: enrollSAPData.BankAccountNumber,\r\n nickname: enrollSAPData.BankAccountName,\r\n rountingNumber: enrollSAPData.RoutingNumber,\r\n accountType: enrollSAPData.BankAccountType,\r\n };\r\n vm.accountType.forEach((item) => {\r\n if (item.value === enrollSAPData.BankAccountType) {\r\n vm.accountSelected.accountType = item.text;\r\n }\r\n });\r\n\r\n vm.accountWasNotSelected = true;\r\n $rootScope.dirdebenrolled = true;\r\n setModels();\r\n setDropdowns();\r\n }\r\n vm.loadingSpinner = false;\r\n vm.loaded = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init(accountTypeArray) {\r\n vm.loadingSpinner = true;\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n if (\r\n window.location.pathname ===\r\n '/my-account/billing-and-payment-programs/auto-pay/manage-auto-pay' &&\r\n vm.roleBase.viewerRole\r\n ) {\r\n window.location.href = '/my-account/billing-and-payment-programs';\r\n }\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n vm.initCalled = true;\r\n }\r\n if (vm.initCalled) {\r\n load();\r\n } else {\r\n vm.loaded = true;\r\n vm.loadingSpinner = false;\r\n }\r\n }\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'ccServiceOrderDetailController',\r\n ccServiceOrderDetailController,\r\n);\r\n\r\nccServiceOrderDetailController.$inject = [\r\n 'assetService',\r\n 'commonService',\r\n 'genericHelperService',\r\n 'getServiceOrderDetailsService',\r\n 'sessionStorageService',\r\n 'updateServiceOrderService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$window',\r\n 'manageOrderService',\r\n 'commongaTaggingService',\r\n '$timeout',\r\n 'errorHandlingService',\r\n 'accountSearchService',\r\n '$log',\r\n];\r\n\r\nfunction ccServiceOrderDetailController(\r\n assetService,\r\n commonService,\r\n genericHelperService,\r\n getServiceOrderDetailsService,\r\n sessionStorageService,\r\n updateServiceOrderService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $window,\r\n manageOrderService,\r\n commongaTaggingService,\r\n $timeout,\r\n errorHandlingService,\r\n accountSearchService,\r\n $log,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const success = assetService.replyCodes.SUCCESS;\r\n vm.isResponseSuccess = true;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n status: null,\r\n order_number: null,\r\n phoneNumber: null,\r\n meterNumber: null,\r\n email: null,\r\n scheduled_time: null,\r\n completed_time: null,\r\n scheduled_date: null,\r\n phoneNumberToEdit: null,\r\n };\r\n vm.loadingSpinner = true;\r\n vm.loaded = false;\r\n vm.getServiceOrderDetails = {};\r\n vm.sessionStorage = {};\r\n vm.updateServiceOrder = {\r\n reply: null,\r\n };\r\n vm.modalLoadingSpinner = false;\r\n vm.toastData = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n };\r\n\r\n vm.enableUpdateButton = false;\r\n /* Function Definitions */\r\n vm.phoneNumberChange = phoneNumberChange;\r\n vm.telFormat = telFormat;\r\n vm.saveData = saveData;\r\n vm.openModal = openModal;\r\n vm.goBack = goBack;\r\n vm.init = init;\r\n vm.contactUs = contactUs;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.populateGATagging = populateGATagging;\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n };\r\n vm.closeToast = closeToast;\r\n\r\n /* Function Declarations */\r\n\r\n function goBack() {\r\n $rootScope.fromGoBackLink = true;\r\n $state.go(\r\n manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_LIST,\r\n );\r\n }\r\n\r\n function telFormat(phone) {\r\n return genericHelperService.telFormat(phone);\r\n }\r\n\r\n function convertTime(time) {\r\n if (time) {\r\n return moment(time, 'HHmmss').format('HH:mm A');\r\n }\r\n return '';\r\n }\r\n\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n if($(\".contactUsBtn:visible\").length == 1) {\r\n arrayElements[2] = \"subheadline:\" + vm.data.description;\r\n }\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function saveData(\r\n workflow,\r\n headline,\r\n buttonText,\r\n toastWorkflow,\r\n toastAddedSpec,\r\n toastButtonText,\r\n ) {\r\n vm.modalLoadingSpinner = true;\r\n attributePush(\r\n `workFlow:${workflow}`,\r\n `headline:${headline}`,\r\n `buttonText:${buttonText}`,\r\n );\r\n const dataToPost = {\r\n action: assetService.serviceActions.updateServiceOrder.UPDATE_SO,\r\n orderNumber: vm.data.order_number,\r\n requestedPhone: removeFormat(vm.data.phoneNumberToEdit),\r\n remarks: {\r\n results: [\r\n {\r\n Remark: '',\r\n },\r\n ],\r\n },\r\n };\r\n\r\n updateServiceOrder(dataToPost).then(() => {\r\n const timeOutValue = 6000;\r\n if (vm.updateServiceOrder.reply === success) {\r\n vm.loaded = false;\r\n vm.data.phoneNumber = vm.data.phoneNumberToEdit;\r\n angular.element('.modal').modal('hide');\r\n vm.toastData.option = 'success';\r\n vm.toastData.messageOption = 'Success! Phone number Updated.';\r\n vm.modalLoadingSpinner = true;\r\n vm.toastData.show = true;\r\n $timeout(() => {\r\n vm.toastData.show = false;\r\n }, timeOutValue);\r\n attributePush(\r\n `workFlow:${toastWorkflow}`,\r\n `addedSpec:${toastAddedSpec}`,\r\n `buttonText:${toastButtonText}`,\r\n `headline:${vm.toastData.option}`,\r\n `subheadline:${vm.toastData.messageOption}`,\r\n );\r\n virtualPagePush(\r\n 'manage-service-requests',\r\n 'edit-contact-phone-number',\r\n 'update',\r\n 'success',\r\n );\r\n\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'service-orders',\r\n vm.toastData.messageOption,\r\n 'impression',\r\n vm.toastData.option,\r\n );\r\n } else {\r\n angular.element('.modal').modal('hide');\r\n vm.toastData.option = 'error';\r\n vm.toastData.messageOption = 'Error! Sorry an error occurred';\r\n vm.modalLoadingSpinner = true;\r\n vm.toastData.show = true;\r\n \r\n attributePush(\r\n `workFlow:${toastWorkflow}`,\r\n `addedSpec:${toastAddedSpec}`,\r\n `buttonText:${toastButtonText}`,\r\n `headline:${vm.toastData.option}`,\r\n `subheadline:${vm.toastData.messageOption}`,\r\n );\r\n virtualPagePush(\r\n 'manage-service-requests',\r\n 'edit-contact-phone-number',\r\n 'update',\r\n 'error',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'service-orders',\r\n vm.toastData.messageOption,\r\n 'impression',\r\n vm.toastData.option,\r\n );\r\n }\r\n });\r\n }\r\n\r\n function updateServiceOrder(data) {\r\n vm.updateServiceOrder.reply = null;\r\n return updateServiceOrderService.sitecore.updateServiceOrder(data).then(\r\n result => {\r\n vm.updateServiceOrder.reply = result.d.ReplyCode;\r\n },\r\n error => {\r\n angular.element('.modal').modal('hide');\r\n errorHandlingService.getException(error);\r\n },\r\n );\r\n }\r\n\r\n function phoneNumberChange() {\r\n vm.enableUpdateButton = false;\r\n const phoneNumberLength = 10;\r\n let enteredPhoneNumber = removeFormat(\r\n angular.element(document.querySelector('#phone_number')).val(),\r\n );\r\n let oldPhoneNumber = removeFormat(vm.data.phoneNumber);\r\n if (\r\n enteredPhoneNumber.length >= phoneNumberLength &&\r\n enteredPhoneNumber !== oldPhoneNumber\r\n ) {\r\n vm.enableUpdateButton = true;\r\n }\r\n }\r\n\r\n function removeFormat(phoneValue) {\r\n const formattedVal = phoneValue\r\n .replace('(', '')\r\n .replace(' ', '')\r\n .replace(')', '')\r\n .replace('-', '')\r\n .replace('_', '');\r\n return formattedVal;\r\n }\r\n\r\n function setModels() {\r\n vm.data.order_number = vm.getServiceOrderDetails.OrderNumber;\r\n vm.data.phoneNumber = telFormat(\r\n vm.getServiceOrderDetails.PrimaryContNumber,\r\n );\r\n vm.data.phoneNumberToEdit = telFormat(\r\n vm.getServiceOrderDetails.PrimaryContNumber,\r\n );\r\n vm.data.meterNumber = vm.getServiceOrderDetails.EquipmentNumber || '';\r\n vm.data.email = vm.getServiceOrderDetails.EmailId || '';\r\n vm.data.completionDate = vm.getServiceOrderDetails.CompletionDate || '';\r\n vm.data.description = vm.getServiceOrderDetails.OrderTypeDescription || '';\r\n vm.data.status =\r\n getStatus(vm.getServiceOrderDetails.Status) ||\r\n vm.getServiceOrderDetails.Status;\r\n vm.data.scheduled_date = moment(\r\n vm.getServiceOrderDetails.ScheduleDate,\r\n ).utc().format('MM/DD/YYYY');\r\n vm.data.scheduled_time = convertTime(\r\n vm.getServiceOrderDetails.ScheduleTime,\r\n );\r\n vm.data.completed_time = convertTime(\r\n vm.getServiceOrderDetails.CompletionTime,\r\n );\r\n if (vm.data.email === '' || vm.data.phoneNumber === '') {\r\n getEmailAndPhoneNumber();\r\n } else {\r\n GATTagging();\r\n }\r\n }\r\n\r\n function getEmailAndPhoneNumber() {\r\n let globalSelectedAccount;\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n return accountSearchService.sitecore\r\n .accountSearch({ businessPartnerId: globalSelectedAccount.primaryBp })\r\n .then(\r\n result => {\r\n if (result.d.ReqToMesNav.results[0].Type !== 'E') {\r\n const accountSearchResponse =\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0];\r\n if (vm.data.email === '') {\r\n const primaryEmail = accountSearchResponse.BpToEm.results.filter(\r\n elem => elem.Primary,\r\n );\r\n vm.data.email = primaryEmail[0].EmailAddress;\r\n }\r\n if (vm.data.phoneNumber === '') {\r\n const primaryPhone = accountSearchResponse.BpToPh.results.filter(\r\n elem => elem.Primary,\r\n );\r\n vm.data.phoneNumber = primaryPhone[0].PhoneNumber;\r\n }\r\n GATTagging();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function GATTagging() {\r\n vm.loaded = true;\r\n\r\n let addedSpec = 'page-load';\r\n let editDescrition = 'edit';\r\n if (vm.data.status === 'Completed' || vm.data.status === 'Cancelled') {\r\n addedSpec = 'read-only';\r\n editDescrition = '';\r\n } else if (vm.data.status === 'Incomplete') {\r\n addedSpec = 'error';\r\n editDescrition = '';\r\n }\r\n\r\n virtualPagePush(\r\n 'manage-service-requests',\r\n 'manage-service-requests',\r\n vm.data.description,\r\n vm.data.status,\r\n editDescrition,\r\n addedSpec,\r\n 'not-set',\r\n );\r\n }\r\n function contactUs() {\r\n attributePush(\r\n `workFlow:${vm.taggingElements.workflow}`,\r\n `headline:${vm.taggingElements.headline}`,\r\n `subheadline:${vm.taggingElements.subHeadline}`,\r\n `buttonText:${vm.taggingElements.buttonText}`,\r\n `addedSpec:${vm.taggingElements.addedSpec}`,\r\n );\r\n }\r\n\r\n function getStatus(type) {\r\n const serviceOrderStatus = sessionStorageService.get(\r\n assetService.storageKeys.manageServiceOrder.statusList,\r\n );\r\n return _.get(serviceOrderStatus, type);\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n goBack();\r\n });\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n vm.loadingSpinner = true;\r\n vm.data.order_number = $rootScope.orderNumberFromManageService;\r\n const dataPost = {\r\n orderNumber: vm.data.order_number,\r\n };\r\n\r\n const promises = [getServiceOrderDetails(dataPost)];\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n vm.loadingSpinner = false;\r\n });\r\n\r\n function getServiceOrderDetails(data) {\r\n return getServiceOrderDetailsService.sitecore\r\n .getServiceOrderDetailsService(data)\r\n .then(\r\n result => {\r\n vm.getServiceOrderDetails =\r\n result.d.results[0].serviceorderdetailtores_nav;\r\n vm.isResponseSuccess =\r\n vm.getServiceOrderDetails.Message.ReplyCode === success;\r\n },\r\n error => {\r\n if (error) {\r\n vm.loadingSpinner = false;\r\n vm.isResponseSuccess = false;\r\n errorHandlingService.getException(error);\r\n }\r\n },\r\n );\r\n }\r\n }\r\n\r\n function openModal() {\r\n vm.modalLoadingSpinner = false;\r\n vm.enableUpdateButton = false;\r\n vm.data.phoneNumberToEdit = vm.data.phoneNumber;\r\n }\r\n function populateGATagging(workflow, headline, subHeadline, addedSpec) {\r\n vm.taggingElements.workflow = workflow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subHeadline;\r\n vm.taggingElements.buttonText = workflow;\r\n vm.taggingElements.addedSpec = addedSpec;\r\n }\r\n function init() {\r\n load();\r\n }\r\n\r\n function closeToast() {\r\n vm.toastData.show = '';\r\n }\r\n\r\n $scope.closeModal = function() {\r\n angular.element('.modal').modal('hide');\r\n };\r\n init();\r\n}\r\n","app.controller('ccServiceOrderListController', ccServiceOrderListController);\r\n\r\nccServiceOrderListController.$inject = [\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'getServiceOrderService',\r\n 'commonService',\r\n 'commongaTaggingService',\r\n 'manageOrderService',\r\n 'errorHandlingService',\r\n];\r\n\r\nfunction ccServiceOrderListController(\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n getServiceOrderService,\r\n commonService,\r\n commongaTaggingService,\r\n manageOrderService,\r\n errorHandlingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n vm.init = init;\r\n vm.numberOfServiceOrders = '';\r\n vm.data = [];\r\n vm.dataShown = [];\r\n vm.sortAsc = false;\r\n vm.sortStatusAsc = false;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.sortByColumn = sortByColumn;\r\n vm.showStatusSort = false;\r\n vm.showDateSort = true;\r\n vm.showMore = showMore;\r\n vm.editClicked = editClicked;\r\n vm.listIndex = manageOrderService.strings.LIST_INDEX;\r\n vm.isShowMore = true;\r\n vm.loadingSpinner = true;\r\n vm.isResponseSuccess = true;\r\n const success = assetService.replyCodes.SUCCESS;\r\n const zero = 0;\r\n let currentContractAccountNumber;\r\n /* ---------------Initialization-------------------*/\r\n\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n $(document).on('click touchstart tap', event => {\r\n const $target = $(event.target);\r\n if (\r\n !$target.closest('.info-tooltip').length &&\r\n $('.tooltip').is(':visible')\r\n ) {\r\n $('[data-toggle=\"tooltip\"], .tooltip').tooltip('hide');\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n });\r\n\r\n function load() {\r\n vm.loaded = false;\r\n const noOfYearsPrevious = 5;\r\n const data = {\r\n businessPartner: globalSelectedAccount.primaryBp,\r\n startDate: moment()\r\n .subtract(noOfYearsPrevious, 'years')\r\n .format('YYYY-MM-DDTHH:mm:ss'),\r\n endDate: '2099-01-01T00:00:00',\r\n };\r\n\r\n currentContractAccountNumber = globalSelectedAccount.accountNum;\r\n\r\n const promises = [getServiceOrder(data)];\r\n if (!vm.loaded) {\r\n commonService.executePromises(promises).then(() => {\r\n vm.loaded = true;\r\n });\r\n }\r\n\r\n function getServiceOrder(dataToPost) {\r\n return getServiceOrderService.sitecore\r\n .getServiceOrderService(dataToPost)\r\n .then(\r\n result => {\r\n const dataArray = result.d.SOHeaderToItem_NAV.results.map(\r\n rootItem =>\r\n rootItem.SOItemToSO_NAV.results.map(item => ({\r\n date: moment(item.ScheduleDate).utc().format('MM/DD/YYYY'),\r\n orderNumber: item.OrderNumber,\r\n orderType: item.OrderType,\r\n description: item.OrderTypeDescription,\r\n status: getStatus(item.Status) || item.Status,\r\n contractAccount: rootItem.ContractAccount,\r\n })),\r\n );\r\n const dataValue = [];\r\n dataArray.forEach(element => {\r\n // check for selected contract account\r\n element.forEach(elem => {\r\n if (elem.contractAccount === currentContractAccountNumber) {\r\n dataValue.push(elem);\r\n }\r\n });\r\n });\r\n vm.numberOfServiceOrders = dataValue.length;\r\n vm.isResponseSuccess =\r\n vm.numberOfServiceOrders > zero && result.d.ReplyCode === success;\r\n vm.data = dataValue;\r\n getData();\r\n },\r\n error => {\r\n vm.isResponseSuccess = false;\r\n errorHandlingService.getException(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function sortByColumn(value) {\r\n vm.showStatusSort = false;\r\n vm.showDateSort = false;\r\n if (value === 'date') {\r\n vm.sortAsc = !vm.sortAsc;\r\n vm.showDateSort = true;\r\n } else {\r\n vm.sortStatusAsc = !vm.sortStatusAsc;\r\n vm.showStatusSort = true;\r\n }\r\n\r\n sorting(value);\r\n }\r\n\r\n function sorting(sortType) {\r\n if (sortType === 'date') {\r\n vm.dataShown = vm.dataShown.sort((prev, next) => {\r\n if (vm.sortAsc) {\r\n return new Date(prev.date) - new Date(next.date);\r\n }\r\n return new Date(next.date) - new Date(prev.date);\r\n });\r\n } else {\r\n vm.dataShown = vm.dataShown.sort((prev, next) => {\r\n if (vm.sortStatusAsc) {\r\n return prev.status\r\n .toLowerCase()\r\n .localeCompare(next.status.toLowerCase());\r\n }\r\n return next.status\r\n .toLowerCase()\r\n .localeCompare(prev.status.toLowerCase());\r\n });\r\n }\r\n }\r\n\r\n function editClicked(\r\n orderNumber,\r\n status,\r\n workflow,\r\n headline,\r\n buttontext,\r\n addedSpec,\r\n ) {\r\n attributePush(\r\n `workFlow:${workflow}`,\r\n `addedSpec:${addedSpec}`,\r\n `buttonText:${buttontext}`,\r\n `headline:${headline}`,\r\n `addedEvent:${status}`,\r\n );\r\n virtualPagePush(\r\n 'manage-service-requests',\r\n 'manage-service-requests',\r\n addedSpec,\r\n status,\r\n 'view',\r\n );\r\n $rootScope.orderNumberFromManageService = orderNumber;\r\n $state.go(\r\n manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_DETAIL,\r\n );\r\n }\r\n\r\n function getStatus(type) {\r\n const serviceOrderStatus = sessionStorageService.get(\r\n assetService.storageKeys.manageServiceOrder.statusList,\r\n );\r\n return _.get(serviceOrderStatus, type);\r\n }\r\n\r\n function showMore() {\r\n vm.listIndex += manageOrderService.strings.LIST_INDEX;\r\n getData();\r\n }\r\n\r\n function getData() {\r\n vm.dataShown = vm.data.filter((object, index) => index < vm.listIndex);\r\n vm.isShowMore = vm.listIndex < vm.data.length;\r\n sorting('date');\r\n }\r\n\r\n function init() {\r\n if ($rootScope.fromGoBackLink) {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n Object.prototype.hasOwnProperty.call(\r\n globalAccountInfo,\r\n 'accountSelected',\r\n )\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n $rootScope.fromGoBackLink = false;\r\n load();\r\n }\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('ccServiceOrderMainController', ccServiceOrderMainController);\r\nccServiceOrderMainController.$inject = [\r\n '$state',\r\n 'manageOrderService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n];\r\nfunction ccServiceOrderMainController(\r\n $state,\r\n manageOrderService,\r\n sessionStorageService,\r\n assetService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n vm.init = init;\r\n vm.loadingSpinner = true;\r\n\r\n /* Function declarations */\r\n\r\n /* Function definitions */\r\n\r\n function load() {\r\n $state.go(\r\n manageOrderService.manageServiceOrderRouteState.SERVICE_ORDER_LIST,\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(status) {\r\n const serviceOrderStatusList = Object.assign({}, ...status);\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageServiceOrder.statusList,\r\n serviceOrderStatusList,\r\n );\r\n load();\r\n }\r\n}\r\n","app.controller(\r\n 'manageProductServicesController',\r\n manageProductServicesController,\r\n);\r\nmanageProductServicesController.$inject = [\r\n '$rootScope',\r\n '$window',\r\n '$log',\r\n '$location',\r\n '$scope',\r\n '$state',\r\n '$filter',\r\n '$sce',\r\n 'assetService',\r\n 'commonService',\r\n 'getEnrollmentsService',\r\n 'getProductDetailsService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'ccProductAndServicesAssetService',\r\n 'getLoggedInUserDetailsService',\r\n 'ccGetUserAccountsService',\r\n 'commongaTaggingService',\r\n 'getCardDetailsService',\r\n 'updateCardDetailsService',\r\n 'getDeepLinkedPrimaryBPService',\r\n 'getUpdateCardDetailsService',\r\n 'ccGetUserAccountsService',\r\n 'responseNotificationsService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction manageProductServicesController(\r\n $rootScope,\r\n $window,\r\n $log,\r\n $location,\r\n $scope,\r\n $state,\r\n $filter,\r\n $sce,\r\n assetService,\r\n commonService,\r\n getEnrollmentsService,\r\n getProductDetailsService,\r\n modalService,\r\n sessionStorageService,\r\n ccProductAndServicesAssetService,\r\n getLoggedInUserDetailsService,\r\n getUserAccountsService,\r\n commongaTaggingService,\r\n getCardDetailsService,\r\n updateCardDetailsService,\r\n getDeepLinkedPrimaryBPService,\r\n getUpdateCardDetailsService,\r\n ccGetUserAccountsService,\r\n responseNotificationsService,\r\n broadcastService,\r\n) {\r\n /* -----------------------Scope Vars---------------------------*/\r\n const vm = this;\r\n const accessRightString = assetService.strings.ACCESSRIGHT;\r\n const allowedString = assetService.strings.ALLOWED;\r\n const digitalString = assetService.strings.DIGITAL;\r\n const cancelString = assetService.strings.CANCEL;\r\n const cancelledString = assetService.strings.CANCELLED;\r\n const pendingString = assetService.strings.PENDING;\r\n const rejectedString = assetService.strings.REJECTED;\r\n const unEnrolledString = assetService.strings.UNENROLLED;\r\n const billingSetupString = assetService.strings.BILLING_SETUP;\r\n\r\n let enrollments = {};\r\n // let groupsArray = {};\r\n // let productDefinitions = null;\r\n const upgradeString = assetService.strings.UPGRADE;\r\n const _originUrl = window.location.origin;\r\n const _originHref = window.location.href;\r\n const _urlProductsAndServicesDetails = `${ccProductAndServicesAssetService.strings.SHELL_URL}?state=${ccProductAndServicesAssetService.pages.productDetails}&productCode=`;\r\n const _url = `${location.origin}/my-account/products-and-services/manage-products-and-services`;\r\n let productCode = '';\r\n /* -----------------------Global Vars---------------------------*/\r\n vm.bpNotFound = 'BusinessPartner not found';\r\n vm.kwCancel = 'CANCELLED';\r\n vm.kwEnroll = 'ENROLLED';\r\n vm.kwPending = 'PENDING';\r\n vm.regulated = 'REGULATED';\r\n vm.recurring = 'RECURRING';\r\n vm.nonRegulated = 'NON_REGULATED';\r\n vm.billingTimeString = 'monthly';\r\n vm.kwCreditCard = 'CREDIT_CARD';\r\n vm.kwISUBilling = 'ISU_BILLING';\r\n vm.kwLegacyBilling = 'LEGACY_BILLING';\r\n vm.kwUpgrade = 'UPGRADE';\r\n vm.superAdminRole = '002';\r\n vm.ownerRole = '014';\r\n vm.viewerRole = '012';\r\n vm.noRole = '0';\r\n vm.dateGroups = {};\r\n vm.enrollments = [];\r\n vm.enrollmentData = {};\r\n vm.enrollmentsObj = {};\r\n vm.managePSSpinner = true;\r\n vm.noData = false;\r\n vm.switch = 1;\r\n vm.showNoContent = false;\r\n vm.cardDetailsForCA = {};\r\n vm.allCardsDataForBp = {};\r\n vm.cardIdForCA = {};\r\n vm.dropdownaccounts = {};\r\n vm.dropdownaccountKeys = [];\r\n vm.showallaccountData = [];\r\n vm.totalAccounts = 1;\r\n vm.showaccount='';\r\n vm.showDropdown = false;\r\n vm.selectedCAforSpeedPay = '';\r\n vm.selectedBP = '';\r\n vm.nonAuthBp = undefined;\r\n vm.invalidDate = 'Invalid date';\r\n vm.nonAuthEnrollmentCode = undefined;\r\n vm.isEnergywiseProduct = false;\r\n $rootScope.cancelServiceFailedProduct = \"\";\r\n let _globalAccountsStorage = null;\r\n vm.toggle = [];\r\n\r\n /* --------------Watchers-----------------------*/\r\n $scope.$on('UDEnrollment', () => {\r\n getEnrollments();\r\n });\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.updateCancel = updateCancel;\r\n vm.updateUpgrade = updateUpgrade;\r\n vm.showSpeedPayMessage = showSpeedPayMessage;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.IsEnergywiseProduct = IsEnergywiseProduct;\r\n vm.IsCreditBaseProgram = IsCreditBaseProgram;\r\n vm.dropdownClicked = dropdownClicked;\r\n vm.changeAccount = changeAccount;\r\n vm.getDropdownAccounts = getDropdownAccounts;\r\n vm.showallaccounts = showallaccounts;\r\n vm.PnSRedirect = PnsRedirect;\r\n vm.checkBillGat = checkBillGat;\r\n vm.speedpayGAT = speedpayGAT;\r\n vm.generateProductGAT = generateProductGAT;\r\n /* --------------Function Definitions-----------------------*/\r\n \r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label, \r\n });\r\n };\r\n\r\n function PnsRedirect(nodeHostName){\r\n window.location.href = 'https://' + nodeHostName + '/home/products';\r\n }\r\n\r\n function checkBillGat() {\r\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/na/check-your-bill');\r\n }\r\n function speedpayGAT(CA){\r\n vm.enrollments[0][CA].products.forEach(product=>{\r\n if (product.billSectionType===\"CreditCard\"){\r\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/na/update-your-payment-method-with-speedpay/'+product.psname.toLowerCase().replaceAll(\" \",\"-\"));\r\n pushDL('de-manage-products-services','update-your-payment-method-with-speedpay',product.psname.toLowerCase().replaceAll(\" \",\"-\"));\r\n }\r\n });\r\n \r\n \r\n }\r\n function generateProductGAT(productname){\r\n productname = productname.toLowerCase().replaceAll(\" \",\"-\");\r\n pushVPV('/vpv/de/page/manage-products-services/clickthrough/manage-products-services/'+productname);\r\n }\r\n function updateCancel(type, product, enrollment) {\r\n const prodName = product.psname.toLowerCase().replaceAll(\" \",\"-\");\r\n const workflowName = 'de-manage-products-services';\r\n const headline = 'manage-products-services';\r\n const action = 'cancel-subscription';\r\n const siteName = 'de/modal/'\r\n const productInfo = {\r\n bpId: enrollment.bp,\r\n providerContractAccountNumberList: [\r\n {\r\n cancellationDate: '',\r\n contractAccountNumber: enrollment.contractAccountNumber,\r\n endDate: moment().format(),\r\n enrollmentCode: product.enrollmentCode,\r\n premiseId: '',\r\n providerContract: '',\r\n saleBillingStatus: '',\r\n saleStatus: 'UNENROLLED',\r\n saleSubStatus: '',\r\n startDate: '',\r\n statusReason: '',\r\n name: product.psname,\r\n price: product.price,\r\n productCode: product.pscode,\r\n quantity: product.quantity,\r\n productGroup: product.psgroup,\r\n typeOfTheCharge: product.typeOfTheCharge,\r\n },\r\n ],\r\n };\r\n\r\n sessionStorageService.set(\r\n ccProductAndServicesAssetService.storageKeys.manageProductsServices,\r\n productInfo,\r\n );\r\n pushDL(workflowName,action,prodName);\r\n if (type === cancelledString) {\r\n modalService.cancelProductService();\r\n } else if (type === upgradeString) {\r\n modalService.upgradeProductService();\r\n }\r\n }\r\n function dropdownClicked(){\r\n vm.showDropdown = !vm.showDropdown;\r\n }\r\n function changeAccount(contractorAccount,modalvalue){\r\n if(vm.dropdownaccountKeys.includes(contractorAccount)){\r\n vm.dropdownaccountKeys.splice(vm.dropdownaccountKeys.indexOf(contractorAccount),1);\r\n if(!vm.dropdownaccountKeys.includes(vm.showaccount)){\r\n vm.dropdownaccountKeys.push(vm.showaccount);\r\n }\r\n }\r\n if(modalvalue){\r\n if(vm.dropdownaccountKeys.length<3){\r\n vm.dropdownaccountKeys.push(vm.showaccount);\r\n }\r\n }\r\n vm.showaccount = contractorAccount;\r\n vm.showDropdown = false;\r\n }\r\n function showallaccounts(){\r\n vm.showDropdown = !vm.showDropdown;\r\n modalService.MPSviewAllAccounts(vm.showallaccountData,vm.showaccount,vm.dropdownaccounts);\r\n }\r\n $scope.$on('selectAddressFromAccountModal', (obj, account) => {\r\n changeAccount(account,true);\r\n });\r\n function getDropdownAccounts(){\r\n for (let i = 0; i < vm.toggle.length; i++) {\r\n vm.toggle[i] = vm.toggle[i].slice(0,-2);\r\n }\r\n vm.dropdownaccounts = _.groupBy(_.map(_globalAccountsStorage, subsCard => ({\r\n contractAccountNumber: subsCard.accountNum,\r\n address: subsCard.address.split(/,(.*)/s)[0], \r\n address2: subsCard.address.split(/,(.*)/s)[1],\r\n jurisdiction: subsCard.jurisdiction.slice(0,-2),\r\n haveproduct: false,\r\n })),product => product.contractAccountNumber);\r\n Object.keys(vm.dropdownaccounts).forEach(CA => {\r\n if(vm.toggle.includes(vm.dropdownaccounts[CA][0].jurisdiction)){\r\n delete vm.dropdownaccounts[CA];\r\n }\r\n });\r\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts)\r\n if(vm.dropdownaccountKeys){\r\n vm.showaccount = vm.dropdownaccountKeys[0];\r\n }\r\n vm.showallaccountData = vm.dropdownaccountKeys.slice(4);\r\n vm.dropdownaccountKeys = vm.dropdownaccountKeys.slice(1,4);\r\n vm.totalAccounts = Object.keys(vm.dropdownaccounts).length;\r\n }\r\n function formatTotalAmount(amount) {\r\n const amountValue = amount.toFixed(assetService.numeric_Numbers.twoo);\r\n const formattedAmount = String(amountValue).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n return $sce.trustAsHtml(\r\n `\\$${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function updateUpgrade(product, enrollment, nodeHostName) {\r\n $rootScope.dataLayer.push({\r\n event: 'eec.upgrade',\r\n ecommerce: {\r\n upgrade: {\r\n actionField: {\r\n order_id: product.enrollmentCode,\r\n charge_type:\r\n product.typeOfTheCharge === vm.recurring\r\n ? 'recurring'\r\n : 'onetime',\r\n },\r\n products: [\r\n {\r\n id: product.pscode,\r\n quantity: product.quantity,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n const prodURL = product.upgradeRedirectionUrl ? new URL(product.upgradeRedirectionUrl).pathname:'/home/products';\r\n const prodName = product.psname.toLowerCase().replaceAll(\" \",\"-\");\r\n const workflowName = 'de-manage-products-services';\r\n const headline = 'manage-products-services';\r\n const action = 'upgrade' + '-|-' + prodURL;\r\n\r\n pushVPV('/vpv/de/page/'+headline+'/load/'+headline+'/'+ prodName +'/upgrade');\r\n pushDL(workflowName,action,prodName);\r\n if (\r\n product.upgradeRedirectionUrl !== null &&\r\n product.upgradeRedirectionUrl !== undefined\r\n ) {\r\n const redirectURL = new URL(product.upgradeRedirectionUrl).pathname;\r\n window.location.href = 'https://' + nodeHostName + redirectURL;\r\n } else {\r\n window.location.href = 'https://' + nodeHostName + '/home/products';\r\n }\r\n }\r\n\r\n function getProductStatus(product) {\r\n let status = pendingString;\r\n if (\r\n product.Salestatus === cancelledString ||\r\n product.Salestatus === rejectedString ||\r\n product.Salestatus === unEnrolledString\r\n ) {\r\n status = cancelledString;\r\n } else if (product.BillingStatus === billingSetupString) {\r\n status = vm.kwEnroll;\r\n }\r\n return status;\r\n }\r\n function getProductPrice(product) {\r\n const price = product.hasOwnProperty('Price')\r\n ? parseFloat(product.Price)\r\n : assetService.numeric_Numbers.zero;\r\n const quantity = product.hasOwnProperty('Quantity')\r\n ? product.Quantity\r\n : assetService.numeric_Numbers.zero;\r\n\r\n return price * quantity;\r\n }\r\n function enableCancelButton(product) {\r\n let enableCancel;\r\n if (vm.nonAuthBp === undefined && vm.nonAuthEnrollmentCode === undefined) {\r\n enableCancel = _.find(\r\n product.ActionArray.results,\r\n action =>\r\n action.Action === cancelString && action.UserGroup === digitalString,\r\n )\r\n ? _.find(\r\n product.ActionArray.results,\r\n action =>\r\n action.Action === cancelString &&\r\n action.UserGroup === digitalString,\r\n )[accessRightString] === allowedString\r\n : false;\r\n } else {\r\n enableCancel = false;\r\n }\r\n return enableCancel;\r\n }\r\n function enableUpgradeButton(product) {\r\n let enableUpgrade;\r\n if (vm.nonAuthBp === undefined && vm.nonAuthEnrollmentCode === undefined) {\r\n enableUpgrade = _.find(\r\n product.ActionArray.results,\r\n action =>\r\n action.Action === upgradeString && action.UserGroup === digitalString,\r\n )\r\n ? _.find(\r\n product.ActionArray.results,\r\n action =>\r\n action.Action === upgradeString &&\r\n action.UserGroup === digitalString,\r\n )[accessRightString] === allowedString\r\n : false;\r\n } else {\r\n enableUpgrade = false;\r\n }\r\n if((product.ProductName).includes(\"Premium\")){\r\n enableUpgrade = false;\r\n }\r\n return enableUpgrade;\r\n }\r\n\r\n function getEnrollments(data) {\r\n return getEnrollmentsService.sitecore.getEnrollments(data).then(\r\n result => {\r\n vm.enrollmentData = {};\r\n if (\r\n result.results.length !== 0 &&\r\n result.results[0] !== vm.bpNotFound\r\n ) {\r\n if (\r\n result.results[0].hasOwnProperty('ContractAccountArray') &&\r\n result.results[0].ContractAccountArray.results.length >\r\n assetService.numeric_Numbers.zero &&\r\n result.results[0].ContractAccountArray.results[0].hasOwnProperty(\r\n 'EnrollmentArray',\r\n )\r\n ) {\r\n //vm.managePSSpinner = false;\r\n const ContractAccountArray = _.filter(\r\n result.results[0].ContractAccountArray.results,\r\n contractValue =>\r\n contractValue.EnrollmentArray.results.length !==\r\n assetService.numeric_Numbers.zero &&\r\n contractValue.EnrollmentArray.results[0].hasOwnProperty(\r\n 'EnrollmentCodeContract',\r\n )&&\r\n contractValue.AddressNumber!==\"\" && \r\n contractValue.AddressNumber !== undefined,\r\n );\r\n /// for debugging purposes to check CA with no address\r\n const addressCheck = _.filter(\r\n result.results[0].ContractAccountArray.results,\r\n contractValue =>\r\n (contractValue.AddressNumber ===\"\" || \r\n contractValue.AddressNumber === undefined),\r\n );\r\n if(addressCheck.length>0)console.log(\"No address found -\",addressCheck);\r\n if (\r\n ContractAccountArray.length > assetService.numeric_Numbers.zero\r\n ) {\r\n enrollments = _.groupBy(\r\n _.map(ContractAccountArray, subsCard => ({\r\n bp: data.BusinessPartner,\r\n contractAccountNumber: subsCard.ContractAccount,\r\n fullAddress:\r\n subsCard.HouseNumber === '' &&\r\n subsCard.HouseNumberSupplement === '' &&\r\n subsCard.Street === ''\r\n ? `${subsCard.POBox}, ${subsCard.City}, ${\r\n assetService.allStates.find(\r\n element => element.text === subsCard.Region,\r\n ).value\r\n } ${subsCard.CityPostalCode}`\r\n : `${subsCard.HouseNumber} ${\r\n subsCard.HouseNumberSupplement\r\n } ${subsCard.Street}, ${subsCard.City}, ${\r\n assetService.allStates.find(\r\n element => element.text === subsCard.Region,\r\n ).value\r\n } ${subsCard.CityPostalCode}`,\r\n paymentMethod: _.find(\r\n subsCard.EnrollmentArray.results,\r\n payment => payment.PaymentMethod != null,\r\n )\r\n ? _.find(\r\n subsCard.EnrollmentArray.results,\r\n payment => payment.PaymentMethod != null,\r\n ).PaymentMethod\r\n : null,\r\n totalPerGroup: subsCard.EnrollmentArray.results\r\n .filter(\r\n i =>\r\n (i.Salestatus === 'ENROLLED' ||\r\n i.Salestatus === 'AGREED') &&\r\n !vm.IsEnergywiseProduct(i.ProductCode),\r\n )\r\n .reduce((prev, curr) => {\r\n const curVal =\r\n parseFloat(curr.Price) > -1\r\n ? parseFloat(curr.Price)\r\n : assetService.numeric_Numbers.zero;\r\n const curQty =\r\n curr.Quantity > -1\r\n ? curr.Quantity\r\n : assetService.numeric_Numbers.zero;\r\n const priceWithQty = curVal * curQty;\r\n return prev + priceWithQty;\r\n }, assetService.numeric_Numbers.zero),\r\n productTypes:{\r\n 'CreditCard':0,\r\n 'ISU':0,\r\n 'CreditBase':0,\r\n },\r\n jurisdiction:assetService.allStates.find(\r\n element => element.text === subsCard.Region,\r\n ).value,\r\n products: (() =>\r\n _.map(subsCard.EnrollmentArray.results, product => ({\r\n actionButtonCancel: enableCancelButton(product),\r\n actionButtonUpgrade: enableUpgradeButton(product),\r\n cancellationDate: moment(product.CancellationDate).format(\r\n 'MM/DD/YYYY',\r\n ),\r\n enrollmentCode: product.EnrollmentCodeContract,\r\n image: product.ImageUrl\r\n ? _originUrl + product.ImageUrl\r\n : 'assets/site/img/cc-products-services/product_demo.jpg', // product.image parameter is mock, this will change.\r\n upgradeRedirectionUrl: product.P_UPGRADEURL,\r\n providerContract: product.ProviderContract,\r\n paymentMethod: product.PaymentMethod,\r\n pricePerItem: product.hasOwnProperty('Price')\r\n ? product.Price\r\n : '0.00',\r\n quantity: product.hasOwnProperty('Quantity')\r\n ? product.Quantity\r\n : '0',\r\n price: getProductPrice(product),\r\n status: getProductStatus(product),\r\n pscode: product.ProductCode,\r\n isCreditBase:IsCreditBaseProgram(product.ProductCode),\r\n psname: product.ProductName.replace('–', '–'),\r\n psgroup: product.ProductGroup,\r\n billingTime: product.BillingTime,\r\n billingStatus: product.BillingStatus,\r\n billSectionType:'',\r\n minQty: product.MinQty,\r\n maxQty: product.MaxQty,\r\n sourceOfEligibility: product.SourceOfEligibility,\r\n shoppingcartrelevant: product.Shoppingcartrelevant,\r\n transferable: product.Transferable,\r\n productCategory: product.ProductCategory,\r\n productPK: product.ProductPK,\r\n startDate:\r\n product.StartDate != null\r\n ? moment(product.StartDate).format('MM/DD/YYYY')\r\n : 'Date Unavailable',\r\n typeOfTheCharge: product.TypeOfTheCharge,\r\n goToPDP:\r\n _originUrl +\r\n _urlProductsAndServicesDetails +\r\n product.ProductCode,\r\n })))(),\r\n })),\r\n product => product.contractAccountNumber,\r\n ); \r\n Object.keys(enrollments).forEach(objectkey => {\r\n const item = enrollments[objectkey][0];\r\n const findCa = _.find(\r\n $rootScope.bpToCaData,\r\n caData => caData.AccountNum === item.contractAccountNumber,\r\n );\r\n if (findCa === undefined) {\r\n if (item.paymentMethod === vm.kwCreditCard) {\r\n item.role = vm.ownerRole;\r\n } else {\r\n item.role = vm.noRole;\r\n }\r\n } else {\r\n item.role = findCa.Relationship;\r\n }\r\n const enrollment = {\r\n bp: item.bp,\r\n contractAccountNumber: item.contractAccountNumber,\r\n role: item.role,\r\n fullAddress: item.fullAddress,\r\n startDate: item.startDate,\r\n paymentMethod: item.paymentMethod,\r\n totalPerGroup: item.totalPerGroup,\r\n products: item.products,\r\n jurisdiction:item.jurisdiction,\r\n };\r\n if(item.role !== vm.noRole && !vm.toggle.includes(item.jurisdiction)){\r\n vm.enrollmentData[objectkey] = enrollment;\r\n }\r\n if(Object.keys(vm.enrollmentData).length>0){\r\n vm.showaccount = Object.keys(vm.enrollmentData)[0];\r\n }\r\n if(vm.dropdownaccounts.hasOwnProperty(objectkey)){\r\n vm.dropdownaccounts[objectkey][0].haveproduct = true;\r\n vm.dropdownaccounts[objectkey][0].productTypes={\r\n 'CreditCard':0,\r\n 'ISU':0,\r\n 'CreditBase':0,\r\n };\r\n\r\n }\r\n else{\r\n let tempData={\r\n contractAccountNumber: item.contractAccountNumber,\r\n address: item.fullAddress.split(/,(.*)/s)[0], \r\n address2: item.fullAddress.split(/,(.*)/s)[1],\r\n jurisdiction:item.jurisdiction,\r\n haveproduct: true,\r\n productTypes:{\r\n 'CreditCard':0,\r\n 'ISU':0,\r\n 'CreditBase':0,\r\n },\r\n };\r\n vm.dropdownaccounts[objectkey]=[tempData];\r\n };\r\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts).slice(0,3);\r\n vm.showallaccountData = Object.keys(vm.dropdownaccounts).slice(3);\r\n item.products.forEach(product=>{\r\n let type = product.isCreditBase?'creditbase':item.paymentMethod;\r\n if(type==='creditbase'){\r\n vm.dropdownaccounts[objectkey][0].productTypes['CreditBase'] = 1;\r\n }\r\n else if(type==='ISU_BILLING'){\r\n vm.dropdownaccounts[objectkey][0].productTypes['ISU'] = 1;\r\n product.billSectionType = 'ISU';\r\n }\r\n else{\r\n vm.dropdownaccounts[objectkey][0].productTypes['CreditCard'] = 1;\r\n product.billSectionType = 'CreditCard';\r\n }\r\n });\r\n });\r\n }\r\n Object.keys(vm.dropdownaccounts).forEach(CA => {\r\n if(vm.toggle.includes(vm.dropdownaccounts[CA][0].jurisdiction)){\r\n delete vm.dropdownaccounts[CA];\r\n }\r\n });\r\n vm.showallaccountData = Object.keys(vm.dropdownaccounts).slice(3);\r\n vm.dropdownaccountKeys = Object.keys(vm.dropdownaccounts).slice(0,3);\r\n if(vm.dropdownaccountKeys.includes(vm.showaccount)){\r\n vm.dropdownaccountKeys.splice(vm.dropdownaccountKeys.indexOf(vm.showaccount),1);\r\n if(vm.showallaccountData.length>0){\r\n vm.dropdownaccountKeys.push(vm.showallaccountData[0]);\r\n vm.showallaccountData.splice(0,1);\r\n }\r\n }\r\n vm.totalAccounts = Object.keys(vm.dropdownaccounts).length;\r\n return vm.enrollmentData;\r\n }\r\n }\r\n return vm.enrollmentData;\r\n },\r\n getEnrollmentErr => {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(getEnrollmentErr);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function getUpdateCardDetails(action, expire, externalId) {\r\n if (action === 'DISPLAY') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: vm.selectedBP,\r\n requestedBy:\r\n vm.currentUser.emailId !== null ? vm.currentUser.emailId : '',\r\n };\r\n }\r\n if (action === 'ADD') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: vm.selectedBP,\r\n requestedBy:\r\n vm.currentUser.emailId !== null ? vm.currentUser.emailId : '',\r\n creditCardNumber: externalId,\r\n creditCardType: '0006',\r\n expirationDate: expire,\r\n };\r\n }\r\n\r\n return getUpdateCardDetailsService.sitecore\r\n .getUpdateCardDetails(vm.getCardData)\r\n .then(\r\n result => {\r\n let allCardResult = {};\r\n if (\r\n result.d.CredCard_Res.results[0].Msg.Type ===\r\n assetService.replyCodes.S\r\n ) {\r\n allCardResult = {\r\n bpNumber: result.d.BusinessPartner,\r\n Action: result.d.Action,\r\n cardDetails: (() =>\r\n _.map(result.d.CredCard_Res.results, card => ({\r\n creditCardID: card.CreditCardID,\r\n CreditCardNumber: card.CreditCardNumber,\r\n CreditCardType: card.CreditCardType,\r\n CreditCardAccountName: card.CreditCardAccountName,\r\n ExpirationDate: card.ExpirationDate,\r\n ExpirationDateStr: card.ExpirationDateStr,\r\n })))(),\r\n };\r\n return allCardResult;\r\n }\r\n return allCardResult;\r\n },\r\n getUpdateCardDetailsErr => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(getUpdateCardDetailsErr);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function updateCardDetails(cardid) {\r\n const updateCardData = {\r\n action: 'MOD_CARD',\r\n contractAccount: vm.selectedCAforSpeedPay,\r\n businessPartner: vm.selectedBP,\r\n cardID: cardid,\r\n };\r\n return updateCardDetailsService.sitecore\r\n .updateCardDetails(updateCardData)\r\n .then(\r\n updateresult => {\r\n if (updateresult.d.Messages.Type === assetService.replyCodes.S) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n updateCardDetailsErr => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(updateCardDetailsErr);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function validateExternalCardId(expirationDate, externalCardId) {\r\n const redirectFromSpeedpay = sessionStorageService.get(\r\n assetService.storageKeys.redirectionURL,\r\n );\r\n vm.allCardsDataForBp = sessionStorageService.get(\r\n ccProductAndServicesAssetService.storageKeys.allCardsDataForBp,\r\n );\r\n const externalCardDetail = _.find(\r\n vm.allCardsDataForBp.cardDetails,\r\n card => card.CreditCardNumber === externalCardId,\r\n );\r\n if (externalCardDetail === undefined) {\r\n getUpdateCardDetails('ADD', expirationDate, externalCardId).then(\r\n addedcard => {\r\n updateCardDetails(addedcard.cardDetails[0].creditCardID).then(\r\n updateStatusForNewCard => {\r\n if (updateStatusForNewCard) {\r\n responseNotificationsService.successResponse({\r\n vehicle: 'toast',\r\n message: 'Card details updated sucessfully',\r\n pageTitle: 'Manage Products and Services',\r\n });\r\n window.location.href = redirectFromSpeedpay;\r\n } else {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: 'Card details update failed',\r\n pageTitle: 'Manage Products and Services',\r\n });\r\n virtualPagePush(\r\n 'authenticated',\r\n 'manage-products-services',\r\n 'update-payment-method',\r\n 'update',\r\n );\r\n window.location.href = redirectFromSpeedpay;\r\n }\r\n },\r\n );\r\n },\r\n );\r\n } else {\r\n updateCardDetails(externalCardDetail.creditCardID).then(\r\n updateStatusForExistingCard => {\r\n if (updateStatusForExistingCard) {\r\n responseNotificationsService.successResponse({\r\n vehicle: 'toast',\r\n message: 'Card details updated sucessfully',\r\n pageTitle: 'Manage Products and Services',\r\n });\r\n window.location.href = redirectFromSpeedpay;\r\n } else {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: 'Card details update failed',\r\n pageTitle: 'Manage Products and Services',\r\n });\r\n virtualPagePush(\r\n 'authenticated',\r\n 'manage-products-services',\r\n 'update-payment-method',\r\n 'update',\r\n );\r\n window.location.href = redirectFromSpeedpay;\r\n }\r\n },\r\n );\r\n }\r\n }\r\n function getPrimaryEnrollmentData(bpData) {\r\n const primaryData = {\r\n BusinessPartner: bpData.managePSData.primaryBP,\r\n };\r\n getEnrollments(primaryData).then(\r\n primaryEnrollmentData => {\r\n if (\r\n primaryEnrollmentData !== null &&\r\n primaryEnrollmentData !== undefined &&\r\n primaryEnrollmentData !== {}\r\n ) {\r\n Object.keys(primaryEnrollmentData).forEach(objectkey => {\r\n const item = primaryEnrollmentData[objectkey];\r\n const enrollment = {\r\n bp: item.bp,\r\n contractAccountNumber: item.contractAccountNumber,\r\n role: item.role,\r\n fullAddress: item.fullAddress,\r\n startDate: item.startDate,\r\n paymentMethod: item.paymentMethod,\r\n totalPerGroup: item.totalPerGroup,\r\n products: item.products,\r\n };\r\n vm.enrollmentsObj[objectkey] = enrollment;\r\n });\r\n vm.enrollments.push(vm.enrollmentsObj);\r\n } else {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n }\r\n },\r\n primaryEnrollErr => {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(primaryEnrollErr);\r\n }\r\n },\r\n );\r\n }\r\n function getAuthenticatedEnrollment() {\r\n let data = {};\r\n if (assetService.apiConfig.useLocalHost) {\r\n data = {\r\n businessPartnerId: $location.search().businessPartnerId, // Get Primary Bp\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n } else {\r\n data = {\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n };\r\n }\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n getUserAccountsService.getUserAccounts(data).then(results => {\r\n if (results.accounts.length > assetService.numeric_Numbers.zero) {\r\n if (\r\n results.managePSData.uniqueBp.length >\r\n assetService.numeric_Numbers.zero\r\n ) {\r\n const promises = [];\r\n _.forEach(results.managePSData.uniqueBp, bpValue => {\r\n if (bpValue !== '') {\r\n promises.push(\r\n getEnrollments({\r\n BusinessPartner: bpValue,\r\n }),\r\n );\r\n }\r\n });\r\n return commonService.executePromises(promises).then(enrollResult => {\r\n const filteredEnrollment = _.filter(\r\n enrollResult,\r\n value => Object.keys(value).length !== 0,\r\n );\r\n if (filteredEnrollment.length === 0) {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n } else {\r\n const uniqueArray = [...new Set(filteredEnrollment)];\r\n uniqueArray.reverse();\r\n vm.enrollments = uniqueArray;\r\n vm.managePSSpinner = false;\r\n }\r\n });\r\n } else {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n }\r\n } else if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS ||\r\n $rootScope.isNonNative\r\n ) {\r\n const nonNativeBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBP,\r\n );\r\n const relatedNonNativeData = {\r\n BusinessPartner: nonNativeBP,\r\n };\r\n getEnrollments(relatedNonNativeData).then(\r\n relatedNonNativeEnrollmentData => {\r\n if (_.isEmpty(relatedNonNativeEnrollmentData)) {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n } else {\r\n vm.enrollments.push(relatedNonNativeEnrollmentData);\r\n vm.managePSSpinner = false;\r\n }\r\n },\r\n nonNativeErr => {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(nonNativeErr);\r\n }\r\n },\r\n );\r\n } else {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n }\r\n });\r\n }\r\n function getNonAuthenticatedEnrollment() {\r\n const nonAuthData = {\r\n BusinessPartner: vm.nonAuthBp,\r\n };\r\n getEnrollments(nonAuthData).then(\r\n nonAuthEnrollmentData => {\r\n Object.keys(nonAuthEnrollmentData).forEach(objectkey => {\r\n const item = nonAuthEnrollmentData[objectkey];\r\n const enrollmentData = _.find(\r\n item.products,\r\n product => product.enrollmentCode === vm.nonAuthEnrollmentCode,\r\n );\r\n if (\r\n enrollmentData !== undefined &&\r\n item.paymentMethod === 'CREDIT_CARD'\r\n ) {\r\n const enrollment = {\r\n bp: item.bp,\r\n contractAccountNumber: item.contractAccountNumber,\r\n role: item.role,\r\n fullAddress: item.fullAddress,\r\n startDate: item.startDate,\r\n paymentMethod: item.paymentMethod,\r\n totalPerGroup: item.totalPerGroup,\r\n products: item.products,\r\n };\r\n if(item.role !== vm.noRole)\r\n vm.enrollmentsObj[objectkey] = enrollment;\r\n }\r\n });\r\n vm.enrollments.push(vm.enrollmentsObj);\r\n if (_.isEmpty(vm.enrollments)) {\r\n vm.showNoContent = true;\r\n }\r\n vm.managePSSpinner = false;\r\n },\r\n nonAuthErr => {\r\n vm.managePSSpinner = false;\r\n vm.showNoContent = true;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(nonAuthErr);\r\n }\r\n },\r\n );\r\n }\r\n function load() {\r\n $rootScope.cancelServiceFailedProduct = \"\";\r\n if(sessionStorageService.get(\r\n 'cancelServiceFailCount',\r\n ) == null) {\r\n $rootScope.cancelServiceFailCount = 0;\r\n } else {\r\n $rootScope.cancelServiceFailCount = sessionStorageService.get(\r\n 'cancelServiceFailCount',\r\n );\r\n }\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS ||\r\n $rootScope.isNonNative\r\n ) {\r\n $rootScope.isNonNative = true;\r\n }\r\n const location = $location.search();\r\n vm.nonAuthBp = $location.search().businessPartnerId;\r\n vm.nonAuthEnrollmentCode = $location.search().enrollmentCode;\r\n const { action, externalId, expirationDate } = location;\r\n if (action === assetService.strings.STOP) {\r\n if (externalId === undefined && expirationDate === undefined) {\r\n const redirectFromSpeedpay = sessionStorageService.get(\r\n assetService.storageKeys.redirectionURL,\r\n );\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: 'Speedpay redirection failure',\r\n pageTitle: 'Manage Products and Services',\r\n });\r\n window.location.href = redirectFromSpeedpay;\r\n } else {\r\n vm.selectedCAforSpeedPay = sessionStorageService.get(\r\n ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay,\r\n );\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS ||\r\n $rootScope.isNonNative\r\n ) {\r\n vm.selectedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBP,\r\n );\r\n } else {\r\n vm.selectedBP = sessionStorageService.get(\r\n assetService.storageKeys.managePSBPNumber,\r\n );\r\n }\r\n const expirationDateArr = expirationDate.split('/');\r\n let monthEndDate = new Date(\r\n expirationDateArr[1],\r\n expirationDateArr[0],\r\n assetService.numeric_Numbers.zero,\r\n );\r\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\r\n validateExternalCardId(monthEndDate, externalId);\r\n }\r\n } else if (\r\n vm.nonAuthBp === undefined &&\r\n vm.nonAuthEnrollmentCode === undefined\r\n ) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.redirectionURL,\r\n _originHref,\r\n );\r\n getAuthenticatedEnrollment();\r\n } else {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.LOGO);\r\n sessionStorageService.set(\r\n assetService.storageKeys.relatedBPNumber,\r\n vm.nonAuthBp,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.redirectionURL,\r\n _originHref,\r\n );\r\n getNonAuthenticatedEnrollment();\r\n }\r\n getDropdownAccounts();\r\n pushVPV('/vpv/de/page/manage-products-services/load/manage-products-services');\r\n }\r\n\r\n function showSpeedPayMessage(currentCA, currentBP) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.managePSBPNumber,\r\n currentBP,\r\n );\r\n sessionStorageService.set(\r\n ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay,\r\n currentCA,\r\n );\r\n modalService.updateSpedpayPaymentMethod();\r\n }\r\n function virtualPagePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function IsEnergywiseProduct(productCode) {\r\n vm.isEnergywiseProduct = false;\r\n if (vm.EnergywiseProductList) {\r\n vm.EnergywiseProductArray = vm.EnergywiseProductList.split(',');\r\n vm.isEnergywiseProduct =\r\n vm.EnergywiseProductArray.indexOf(productCode.trim()) > -1;\r\n }\r\n return vm.isEnergywiseProduct;\r\n }\r\n function IsCreditBaseProgram(productCode){\r\n if (vm.CreditBaseProductList) {\r\n vm.CreditBaseProductArray = vm.CreditBaseProductList.split(',');\r\n return vm.CreditBaseProductArray.indexOf(productCode.trim())>-1;\r\n }\r\n return false;\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n _globalAccountsStorage = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.accounts,\r\n );\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n sessionStorageService.set(\r\n ccProductAndServicesAssetService.storageKeys.currentUser,\r\n vm.currentUser,\r\n );\r\n\r\n load();\r\n },\r\n initError => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(initError);\r\n }\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n }\r\n init();\r\n}\r\n","app.controller('mpOneTimePurchasesController', mpOneTimePurchasesController);\r\nmpOneTimePurchasesController.$inject = [\t\r\n\t'$log',\r\n\t'updateCancelEnrollmentService',\r\n\t'assetService',\r\n\t'$rootScope',\r\n\t'apiApigeeConfigService',\r\n\t'sessionStorageService',\r\n\t'$scope'\r\n];\r\n\r\nfunction mpOneTimePurchasesController(\t\r\n\t$log,\r\n\tupdateCancelEnrollmentService,\r\n\tassetService,\r\n\t$rootScope,\r\n\tapiApigeeConfigService,\r\n\tsessionStorageService,\r\n\t$scope\r\n) {\r\n\t/* -----------------------Scope Vars---------------------------*/\r\n\tconst vm = this;\r\n\r\n\t /* -----------------------Global Vars---------------------------*/\r\n\t vm.noEnrollments = true;\r\n\t vm.oneTimeCards = [];\r\n\r\n\t/* --------------Watchers-----------------------*/\r\n\t$scope.$on(\"refresh\", (index)=> {\r\n\t\tload();\r\n\t});\r\n\r\n\t/* --------------Function Declarations-----------------------*/\r\n\tvm.updateCancel = updateCancel;\r\n\r\n\t/* --------------Function Definitions-----------------------*/\r\n\t\r\n\tfunction updateCancel (value, index) {\r\n\t\tupdateCancelEnrollmentService.sitecore.updateCancel( \r\n\t\t\t{\r\n\t\t\t\tcontractAccountNumber: vm.subscriptionCards[index].contractAccountNumber,\r\n\t\t\t\tisuBPID: vm.subscriptionCards[index].bp,\r\n\t\t\t\tenrollmentCode: vm.subscriptionCards[index].enrollmentCode,\r\n\t\t\t\tproviderContract: vm.subscriptionCards[index].providerContract,\r\n\t\t\t\tsaleStatus: value,\r\n\t\t })\r\n\t\t\t.then(\r\n\t\t\t\t(results) => {\t\r\n\t\t\t\t\t$rootScope.$broadcast(\"UDEnrollment\");\t\t\r\n\t\t\t\t},\r\n\t\t\t\t(error) => {\r\n\t\t\t\t\tif (assetService.apiConfig.showAppErrors) $log.error(error);\r\n\t\t\t\t},\r\n\t\t\t);\r\n\t}\r\n\r\n\tfunction load() {\t\t\r\n\t\tconst enrollmentData = sessionStorageService.get('enrollmentData');\r\n\t\tif(enrollmentData){\r\n\t\t\tvm.oneTimeCards = enrollmentData.oneTime;\r\n\t\t} else {\r\n\t\t\tvm.noEnrollments = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/* ---------------Initialization-------------------*/\r\n\r\n\tfunction init() {\r\n\t\tload();\r\n\t}\r\n\t\r\n\tinit();\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\napp.controller('mpSubscriptionsController', mpSubscriptionsController);\r\n// eslint-disable-next-line no-use-before-define\r\nmpSubscriptionsController.$inject = [\r\n '$log',\r\n 'updateCancelEnrollmentService',\r\n 'assetService',\r\n '$rootScope',\r\n 'apiApigeeConfigService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'speedpayService',\r\n 'genericHelperService',\r\n];\r\n\r\nfunction mpSubscriptionsController(\r\n $log,\r\n updateCancelEnrollmentService,\r\n assetService,\r\n $rootScope,\r\n apiApigeeConfigService,\r\n sessionStorageService,\r\n $scope,\r\n speedpayService,\r\n genericHelperService,\r\n) {\r\n const vm = this;\r\n vm.subscriptionCards = [];\r\n vm.paymentMethodUpdate = assetService.ManageProductAndServices.paymentMethodUpdate;\r\n\r\n vm.speedpay = function (subscription) {\r\n speedpayService.getSpeedpayUrl({\r\n action: 'start',\r\n login: subscription.bp,\r\n speedframeCallbackUrl: true,\r\n\t\t }).then(result => {\r\n genericHelperService.openPopup(result, window, '900', '600', continueMPS, $scope);\r\n });\r\n };\r\n\r\n\r\n function continueMPS(option) {/*empty function*/}\r\n\r\n vm.updateCancel = function (value, index) {\r\n updateCancelEnrollmentService.sitecore.updateCancel(\r\n {\r\n contractAccountNumber: vm.subscriptionCards[index].contractAccountNumber,\r\n isuBPID: vm.subscriptionCards[index].bp,\r\n enrollmentCode: vm.subscriptionCards[index].enrollmentCode,\r\n providerContract: vm.subscriptionCards[index].providerContract,\r\n saleStatus: value,\r\n\t\t },\r\n )\r\n .then(\r\n (results) => {\r\n $rootScope.$broadcast('UDEnrollment');\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n };\r\n\r\n function load() {\r\n const enrollmentData = sessionStorageService.get('enrollmentData');\r\n if (enrollmentData) {\r\n vm.subscriptionCards = enrollmentData.subscriptions;\r\n }\r\n }\r\n\r\n $scope.$on('refresh', (index) => {\r\n load();\r\n });\r\n\r\n function init() {\r\n load();\r\n }\r\n // eslint-disable-next-line no-undef\r\n init();\r\n}\r\n","app.controller(\r\n 'ModalManageNotificationPreference',\r\n ModalManageNotificationPreference,\r\n);\r\n\r\nfunction ModalManageNotificationPreference() {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.changeNotification = changeNotification;\r\n vm.closeModalChange = closeModalChange;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function changeNotification(preference) {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function closeModalChange(preference) {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {/*empty function*/};\r\n\r\n // init();\r\n}\r\n","app.controller(\r\n 'NotificationPreferenceController',\r\n NotificationPreferenceController,\r\n);\r\nNotificationPreferenceController.$inject = [\r\n '$log',\r\n 'commonService',\r\n '$state',\r\n '$scope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'readAndDerivePreferencesService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'getLatestConsentService',\r\n 'accountSearchService',\r\n 'NotificationPreferencesHelperService',\r\n 'readConsentService',\r\n 'getEligibilityForAutoReloadService',\r\n 'notificationPreferencesAssetsService',\r\n '$rootScope',\r\n 'umcModalService',\r\n 'commongaTaggingService',\r\n 'genericHelperService',\r\n 'broadcastService',\r\n '$timeout',\r\n '$interval',\r\n];\r\n\r\nfunction NotificationPreferenceController(\r\n $log,\r\n commonService,\r\n $state,\r\n $scope,\r\n sessionStorageService,\r\n assetService,\r\n readAndDerivePreferencesService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n getLatestConsentService,\r\n accountSearchService,\r\n notificationHelper,\r\n readConsentService,\r\n getEligibilityForAutoReloadService,\r\n notificationPreferencesAssetsService,\r\n $rootScope,\r\n umcModalService,\r\n commongaTaggingService,\r\n genericHelperService,\r\n broadcastService,\r\n $timeout,\r\n $interval,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n vm.tab = 0;\r\n vm.loadingSpinner = true;\r\n vm.notificationPreferencesReady = false;\r\n vm.paperlessBilling = {};\r\n vm.autoReload = {};\r\n vm.autopay = {};\r\n vm.gatConstants = {};\r\n $rootScope.acceptedVersion = '';\r\n $rootScope.UniLatestVersion = '';\r\n $rootScope.paperlessCTA = '';\r\n const _strings = notificationPreferencesAssetsService.strings;\r\n const _ineligible = _strings.status.Ineligible;\r\n const _elbill = _strings.programs.ELBILL;\r\n const _autopay = _strings.programs.AUTPAY;\r\n const _dirdeb = _strings.programs.DIRDEB;\r\n const _enrolled = _strings.status.Enrolled;\r\n const _serviceName = _strings.Paperless_Billing;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n const tabs = [\r\n _strings.tabs.outages,\r\n _strings.tabs.billing,\r\n _strings.tabs.additionalOptions,\r\n _strings.tabs.payment,\r\n _strings.tabs.serviceOrders,\r\n ];\r\n let currentTab = tabs[0];\r\n\r\n /* Global Vars */\r\n let outagePreferences = [];\r\n let billingPreferences = [];\r\n let paymentsPreferences = [];\r\n let serviceOrdersPreferences = [];\r\n let additionalOptionsPreferences = [];\r\n let globalSelectedAccountEmail = '';\r\n let accountData = {};\r\n $scope.roleBase = {};\r\n $scope.currComm = {\r\n phones: [],\r\n emails: [],\r\n };\r\n let sessionStorageAddedInterval;\r\n $rootScope.outagesBanner = {};\r\n $rootScope.billingBanner = {};\r\n $rootScope.optionsBanner = {};\r\n $rootScope.umcBanner = {};\r\n $rootScope.ohioBanner = {};\r\n $rootScope.paperlessSaveErrorCount = 0;\r\n $rootScope.updateError = false;\r\n $rootScope.billingError = false;\r\n $rootScope.optionsError = false;\r\n /* Function declarations */\r\n vm.isSet = isSet;\r\n vm.selectedTab = selectedTab;\r\n vm.setGatConstants = setGatConstants;\r\n vm.gatTabNavigation = gatTabNavigation;\r\n\r\n /* Function definitions */\r\n function groupById(preferences, subGroupId, subId) {\r\n const transformedPref = {};\r\n const notifications = [];\r\n let SGIdCollection = [];\r\n\r\n transformedPref.id = subId;\r\n transformedPref.groupId = subGroupId;\r\n\r\n SGIdCollection = preferences.filter(\r\n element => element.SubGroupID === subGroupId && element.SubID === subId,\r\n );\r\n\r\n if (SGIdCollection.length > 0) {\r\n SGIdCollection.forEach(element => {\r\n const prefIdValid = /^([0-9])*$/;\r\n if (\r\n (element.Comm_Medium !== 'DIST' &&\r\n !prefIdValid.test(element.PrefID)) ||\r\n element.Autoenrolled === 'X' ||\r\n subId === _strings.preferences.RATE_REVW ||\r\n subId === _strings.preferences.BILLPRINT\r\n ) {\r\n const currentPhone = element.Medium_Val;\r\n const currentChannel = element.Comm_Medium;\r\n if (subId === _strings.preferences.BILL_DEL) {\r\n transformedPref.checkedPDFOption = !!(\r\n currentChannel === _strings.channels.EBLP\r\n );\r\n element.Comm_Medium = _strings.channels.MAIL;\r\n transformedPref.Comm_Medium = currentChannel;\r\n } else if (currentChannel !== _strings.channels.MAIL) {\r\n element.Medium_Val = currentPhone;\r\n }\r\n\r\n if (subId === _strings.preferences.PREPAY) {\r\n if (element.Pref_Remaining_Days.results.length > 0) {\r\n transformedPref.remainingDays = element.Pref_Remaining_Days.results.map(\r\n element => element.NumberOfDays,\r\n );\r\n } else {\r\n transformedPref.remainingDays = [];\r\n }\r\n transformedPref.prefId = element.PrefID;\r\n }\r\n\r\n if (subId === _strings.preferences.PMT_RMDR) {\r\n if (element.SubThersholdvar) {\r\n let lastPos = element.SubThersholdvar.length - 1;\r\n transformedPref.subThersholdvar =\r\n element.SubThersholdvar[lastPos];\r\n transformedPref.subThersholdvarModel =\r\n element.SubThersholdvar[lastPos];\r\n transformedPref.subThersholdvarText = `${transformedPref.subThersholdvar} ${_strings.Days}`;\r\n } else {\r\n transformedPref.subThersholdvar = '';\r\n }\r\n transformedPref.prefId = element.PrefID;\r\n }\r\n\r\n if (subId === _strings.preferences.RATE_REVW) {\r\n transformedPref.rateReviewType = element.RateReview;\r\n transformedPref.prefId = element.PrefID;\r\n }\r\n\r\n if (subId === _strings.preferences.BILLPRINT) {\r\n if (\r\n element.FontSize === _strings.font_size.DETA ||\r\n element.FontSize === ''\r\n ) {\r\n transformedPref.billFormatType = _strings.font_type.detailed;\r\n }\r\n if (element.FontSize === _strings.font_size.COND) {\r\n transformedPref.billFormatType = _strings.font_type.condensed;\r\n }\r\n if (element.FontSize === _strings.font_size.LARG) {\r\n transformedPref.billFormatType = _strings.font_type.large;\r\n }\r\n if (element.FontSize === _strings.font_size.METR) {\r\n transformedPref.billFormatType = _strings.font_type.braille;\r\n }\r\n }\r\n\r\n notifications.push(\r\n (({\r\n Comm_Medium: channel,\r\n Medium_Val: communication,\r\n PrefID: prefId,\r\n }) => ({\r\n channel,\r\n communication,\r\n prefId,\r\n }))(element),\r\n );\r\n }\r\n });\r\n if (notifications.length > 0) {\r\n transformedPref.enrolled = true;\r\n transformedPref.previousEnrolled = true;\r\n transformedPref.notifications = notifications;\r\n } else {\r\n transformedPref.enrolled = false;\r\n transformedPref.previousEnrolled = false;\r\n }\r\n } else {\r\n transformedPref.enrolled = false;\r\n transformedPref.previousEnrolled = false;\r\n }\r\n transformedPref.isCardAutoEnrolled = !!SGIdCollection.filter(\r\n x => x.Autoenrolled === 'X',\r\n ).length;\r\n return transformedPref;\r\n }\r\n\r\n function dataTransformation(preferences, isPrepaid, relatedBP) {\r\n if (!relatedBP) {\r\n const accountDataInSession = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n relatedBP = accountDataInSession.relatedBusinessPartnerId\r\n ? accountDataInSession.relatedBusinessPartnerId\r\n : accountDataInSession.businessPartnerId;\r\n }\r\n const currentPref = preferences.d.results[0].Partner_Preference.results.filter(\r\n x => x.AssociatedBP === relatedBP,\r\n );\r\n\r\n if (vm.isPrepaid) {\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.BILLPAY,\r\n _strings.preferences.BILL_NOTIF,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.BILLPAY,\r\n _strings.preferences.PAY_CONFRM,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PREPAY,\r\n _strings.preferences.PREPAY,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PREPAY,\r\n _strings.preferences.PPY_AUTO,\r\n ),\r\n );\r\n\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.OUTAGE,\r\n _strings.preferences.ACTIVE_OUT,\r\n ),\r\n );\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.SRVO_APPT,\r\n _strings.preferences.SRVO_NOT,\r\n ),\r\n );\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.SRVO_APPT,\r\n _strings.preferences.APPT_REM,\r\n ),\r\n );\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PREPAY,\r\n _strings.preferences.PPY_DISC,\r\n ),\r\n );\r\n additionalOptionsPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.ACCT_MGMT,\r\n _strings.preferences.ENRL_PRCHS,\r\n ),\r\n );\r\n } else {\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.OUTAGE,\r\n _strings.preferences.ACTIVE_OUT,\r\n ),\r\n );\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.SRVO_APPT,\r\n _strings.preferences.SRVO_NOT,\r\n ),\r\n );\r\n outagePreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.SRVO_APPT,\r\n _strings.preferences.APPT_REM,\r\n ),\r\n );\r\n\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PAPERLESS,\r\n _strings.preferences.BILL_DEL,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.BILLPAY,\r\n _strings.preferences.BILL_NOTIF,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.BILLPAY,\r\n _strings.preferences.PAY_CONFRM,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PAPERLESS,\r\n _strings.preferences.PMT_RMDR,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.AUTOPAY,\r\n _strings.preferences.APP_SCHED,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.AUTOPAY,\r\n _strings.preferences.APP_UPDT,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.PAPERLESS,\r\n _strings.preferences.PMT_UPDT,\r\n ),\r\n );\r\n billingPreferences.push(\r\n groupById(currentPref, '', _strings.preferences.RATE_REVW),\r\n );\r\n billingPreferences.push(\r\n groupById(currentPref, '', _strings.preferences.BILLPRINT),\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.updatePreferencesave,\r\n billingPreferences,\r\n );\r\n paymentsPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.BILLPAY,\r\n _strings.preferences.PAY_REMIND,\r\n ),\r\n );\r\n\r\n additionalOptionsPreferences.push(\r\n groupById(\r\n currentPref,\r\n _strings.preferences.ACCT_MGMT,\r\n _strings.preferences.ENRL_PRCHS,\r\n ),\r\n );\r\n }\r\n }\r\n function getPreferences(accountData, isPrepaid) {\r\n outagePreferences = [];\r\n billingPreferences = [];\r\n additionalOptionsPreferences = [];\r\n let responseTmp;\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(accountData)\r\n .then(result => {\r\n responseTmp = result;\r\n if (result.d.results[0].Partner_Contact.results[0]) {\r\n const addressNumber =\r\n result.d.results[0].Partner_Contact.results[0].AddrNumber;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.commOpt.addressNumber,\r\n addressNumber,\r\n );\r\n const phoneNumbers = _.map(\r\n result.d.results[0].Partner_Contact.results,\r\n phone => phone.PhoneNumber,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.commOpt.notifPhones,\r\n phoneNumbers,\r\n );\r\n }\r\n dataTransformation(\r\n result,\r\n vm.isPrepaid,\r\n accountData.relatedBusinessPartnerId,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n outagePreferences,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n billingPreferences,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.payments,\r\n paymentsPreferences,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.servOrd,\r\n serviceOrdersPreferences,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n additionalOptionsPreferences,\r\n );\r\n\r\n return result;\r\n })\r\n .catch(error => {\r\n broadcastService.failedStateNotificationTriggered(true);\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n $scope.$on(assetService.events.getCurrentstatus, (event, a) => {\r\n // $scope.$on(assetService.events.getCurrentstatus, (data) => {\r\n dataTransformation(a, globalAccountInfo.accountSelected.prepaid);\r\n });\r\n $scope.$on(assetService.events.refreshPreferences, () => {\r\n //vm.loadingSpinner = true;\r\n $timeout(() => {\r\n commonService\r\n .executePromises([\r\n getPBEligibleStatus(accountData),\r\n getPreferences(accountData, vm.isPrepaid),\r\n getCommMedium(accountData),\r\n ])\r\n .then(() => {\r\n //vm.loadingSpinner = false;\r\n $state.go(currentTab, {}, { reload: true });\r\n });\r\n }, 1000);\r\n });\r\n\r\n function getCommMedium(accountData) {\r\n const accountDataCpy = genericHelperService.notReferenceObjects(\r\n accountData,\r\n );\r\n if (accountDataCpy.relatedBusinessPartnerId)\r\n accountDataCpy.businessPartnerId =\r\n accountDataCpy.relatedBusinessPartnerId;\r\n accountDataCpy.dataSource = assetService.strings.ISU;\r\n delete accountDataCpy.contractAccountId;\r\n delete accountDataCpy.globalSelectedAccountEmail;\r\n return accountSearchService.sitecore\r\n .accountSearch(accountDataCpy)\r\n .then(result => {\r\n const emails =\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results;\r\n let emailAccount = _.find(emails, email => email.Primary);\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.email,\r\n emailAccount,\r\n );\r\n const phonesRoot =\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToPh;\r\n const phonesTxt = phonesRoot.results.map(phone => phone.PhoneNumber);\r\n const phonesVal = phonesRoot.results.map(\r\n phone => `${phone.AddressNumber}${phone.ConsNumber}`,\r\n );\r\n const phonesTextEnabled = phonesRoot.results.map(\r\n phone => phone.TextEnabled,\r\n );\r\n const emailsTxt = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.map(\r\n email => email.EmailAddress,\r\n );\r\n const emailsVal = result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results.map(\r\n email => `${email.AddressNumber}${email.ConsNumber}`,\r\n );\r\n $scope.currComm.phones = notificationHelper.createDrop(\r\n phonesVal,\r\n phonesTxt,\r\n true,\r\n phonesTextEnabled,\r\n );\r\n $scope.currComm.emails = notificationHelper.createDrop(\r\n emailsVal,\r\n emailsTxt,\r\n false,\r\n );\r\n\r\n $scope.currComm.phones.push({\r\n text: assetService.notifPref.addNewComm.phone,\r\n value: assetService.notifPref.addNewComm.phone,\r\n });\r\n\r\n $scope.currComm.emails.push({\r\n text: assetService.notifPref.addNewComm.email,\r\n value: assetService.notifPref.addNewComm.email,\r\n });\r\n\r\n return result;\r\n });\r\n }\r\n\r\n function getEligibilityForAutoReload(accountData) {\r\n const paramData = {\r\n contractAccountId: accountData.contractAccountId,\r\n action: assetService.events.GET_ELIG,\r\n };\r\n\r\n return getEligibilityForAutoReloadService.sitecore\r\n .getEligibilityForAutoReload(paramData)\r\n .then(\r\n result => {\r\n const status = result.d.AREligibility_NAV.Eligible.toUpperCase();\r\n vm.autoReload.status = status === _enrolled.toUpperCase();\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.autoReload,\r\n vm.autoReload,\r\n );\r\n\r\n return result;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n // Get Eligible Paperless Billing Component to display it or not\r\n function getPBEligibleStatus(accountData) {\r\n const paramData = {\r\n contractAccountId: accountData.contractAccountId,\r\n simpleFormat: true,\r\n };\r\n\r\n return getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus(paramData)\r\n .then(\r\n result => {\r\n vm.allPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\r\n const eBill = _.find(\r\n vm.allPrograms,\r\n element => element.ProgName === _elbill,\r\n );\r\n vm.paperlessBilling.status = eBill.EligibilityStatus === _enrolled;\r\n vm.paperlessBilling.isEligible =\r\n eBill.EligibilityStatus !== _ineligible;\r\n vm.paperlessBilling.contractAccountId = paramData.contractAccountId;\r\n vm.paperlessBilling.serviceName = _serviceName;\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n\r\n let autopay = _.find(\r\n vm.allPrograms,\r\n element => element.ProgName === _autopay,\r\n );\r\n\r\n if (autopay.EligibilityStatus !== _enrolled) {\r\n autopay = _.find(\r\n vm.allPrograms,\r\n element => element.ProgName === _dirdeb,\r\n );\r\n }\r\n\r\n vm.autopay.status = autopay.EligibilityStatus === _enrolled;\r\n vm.autopay.isEligible = autopay.EligibilityStatus !== _ineligible;\r\n vm.autopay.contractAccountId = paramData.contractAccountId;\r\n vm.autopay.serviceName = _autopay;\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.autopay,\r\n vm.autopay,\r\n );\r\n\r\n return result;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function UMCReadConsent(data) {\r\n return readConsentService.sitecore.readConsent(data).then(\r\n result => {\r\n $rootScope.newMajorVersion = false;\r\n $rootScope.UniLatestVersion = result.d.UniLatestVersion;\r\n $rootScope.latestVersion =\r\n result.d.UniLatestVersion === '' ? '0.00' : result.d.UniLatestVersion;\r\n const umcVersions = getUMCVersions(result);\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.umcCard,\r\n umcVersions,\r\n );\r\n if (\r\n umcVersions.lastEvent[0].consentStatus === 'IGN' ||\r\n umcVersions.lastEvent[0].consentStatus === 'DEC'\r\n ) {\r\n $rootScope.newMajorVersion = true;\r\n } else if (umcVersions.lastEvent[0].consentStatus === 'ACC') {\r\n $rootScope.newMajorVersion = false;\r\n }\r\n\r\n return result;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n // -Moving this code to umc-modal-service.js file regarding UMC <--Start-->\r\n\r\n // function getUMCLatestConsent(data) {\r\n // console.log(data);\r\n // return getLatestConsentService.sitecore.getLatestConsent(data)\r\n // .then(\r\n // (result) => {\r\n // sessionStorageService.set(assetService.notifPref.sessionStorage.lastestConsent, result.consentDTO ? result.consentDTO : '')\r\n // }\r\n // )\r\n // }\r\n\r\n // <--END-->\r\n\r\n function getUMCVersions(result) {\r\n const dates = [];\r\n\r\n const acceptedConsent = _.map(\r\n result.d.ReadConReqResNav.results,\r\n result => ({\r\n consentCode: result.AcceptConsentCode,\r\n consentStatus: result.AcceptConsentStatus,\r\n version: result.AcceptVersion,\r\n consentDate: moment(result.AcceptConsentDate),\r\n consentDateTime: moment(\r\n result.AcceptConsentDateStr.concat(\r\n `T${result.AcceptConsentTime.slice(\r\n 2,\r\n 4,\r\n )}:${result.AcceptConsentTime.slice(\r\n 5,\r\n 7,\r\n )}:${result.AcceptConsentTime.slice(8, 10)}`,\r\n ),\r\n ),\r\n type: _strings.consent_type.Accept,\r\n }),\r\n );\r\n if (result.d.ReadConReqResNav.results.length > 0) {\r\n acceptedConsent.sort(\r\n (a, b) => Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime),\r\n );\r\n $rootScope.acceptedVersion = acceptedConsent[\r\n acceptedConsent.length - 1\r\n ].version.trim();\r\n dates.push(acceptedConsent[acceptedConsent.length - 1]);\r\n } else {\r\n acceptedConsent.consentDate = [];\r\n acceptedConsent.consentDateTime = [];\r\n }\r\n\r\n const declinededConsent = _.map(\r\n result.d.ReadDeclineReqResNav.results,\r\n result => ({\r\n consentCode: result.DeclineConsentCode,\r\n consentStatus: result.DeclineConsentStatus,\r\n version: result.DeclineVersion,\r\n consentDate: moment(result.DeclineConsentDate),\r\n consentDateTime: moment(\r\n result.DeclineConsentDateStr.concat(\r\n `T${result.DeclineConsentTime.slice(\r\n 2,\r\n 4,\r\n )}:${result.DeclineConsentTime.slice(\r\n 5,\r\n 7,\r\n )}:${result.DeclineConsentTime.slice(8, 10)}`,\r\n ),\r\n ),\r\n type: _strings.consent_type.Decline,\r\n }),\r\n );\r\n if (result.d.ReadDeclineReqResNav.results.length > 0) {\r\n declinededConsent.sort(\r\n (a, b) => Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime),\r\n );\r\n dates.push(declinededConsent[declinededConsent.length - 1]);\r\n } else {\r\n declinededConsent.consentDate = [];\r\n declinededConsent.consentDateTime = [];\r\n }\r\n\r\n const ignoredConsent = _.map(\r\n result.d.ReadIgnoreReqResNav.results,\r\n result => ({\r\n consentCode: result.IgnoreConsentCode,\r\n consentStatus: result.IgnoreConsentStatus,\r\n version: result.IgnoreVersion,\r\n consentDate: moment(result.IgnoreConsentDate),\r\n consentDateTime: moment(\r\n result.IgnoreConsentDateStr.concat(\r\n `T${result.IgnoreConsentTime.slice(\r\n 2,\r\n 4,\r\n )}:${result.IgnoreConsentTime.slice(\r\n 5,\r\n 7,\r\n )}:${result.IgnoreConsentTime.slice(8, 10)}`,\r\n ),\r\n ),\r\n type: _strings.consent_type.Ignore,\r\n }),\r\n );\r\n if (result.d.ReadIgnoreReqResNav.results.length > 0) {\r\n ignoredConsent.sort(\r\n (a, b) => Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime),\r\n );\r\n dates.push(ignoredConsent[ignoredConsent.length - 1]);\r\n } else {\r\n ignoredConsent.consentDate = [];\r\n ignoredConsent.consentDateTime = [];\r\n }\r\n\r\n if (dates.length > 0) {\r\n dates.sort(\r\n (a, b) => Date.parse(a.consentDateTime) - Date.parse(b.consentDateTime),\r\n );\r\n }\r\n\r\n const umc = {\r\n currentVersion:\r\n dates.length > 0\r\n ? dates[dates.length - 1].version.trim()\r\n : result.d.CurrentLatestVersion,\r\n ACC: acceptedConsent,\r\n DEC: declinededConsent,\r\n IGN: ignoredConsent,\r\n lastEvent: dates.length > 0 ? [dates.pop()] : [],\r\n };\r\n\r\n return umc;\r\n }\r\n\r\n function load() {\r\n if (globalSelectedAccount.accountNum && globalSelectedAccount.primaryBp) {\r\n const contractAccountId = globalSelectedAccount.accountNum;\r\n const businessPartnerId = globalSelectedAccount.primaryBp;\r\n const { jurisdiction } = globalSelectedAccount;\r\n const relatedBusinessPartnerId = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n\r\n accountData = {\r\n contractAccountId,\r\n businessPartnerId,\r\n relatedBusinessPartnerId,\r\n globalSelectedAccountEmail,\r\n jurisdiction,\r\n };\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.accountData,\r\n accountData,\r\n );\r\n } else {\r\n accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n }\r\n const tabId = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.tabId,\r\n );\r\n const fromOhioChoice = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n );\r\n if (fromOhioChoice === 'true' || fromOhioChoice === 'cancel') {\r\n currentTab = tabs[2];\r\n vm.tab = 2;\r\n isSet(2);\r\n } else {\r\n selectedTab(tabId || 0);\r\n }\r\n sessionStorageService.delete(assetService.notifPref.sessionStorage.outage);\r\n sessionStorageService.delete(assetService.notifPref.sessionStorage.billing);\r\n sessionStorageService.delete(assetService.notifPref.sessionStorage.addOpt);\r\n sessionStorageService.delete(assetService.notifPref.sessionStorage.tabId);\r\n sessionStorageService.delete('Preferences_BannerData');\r\n\r\n vm.notificationPreferencesReady = true;\r\n\r\n vm.isPrepaid = globalAccountInfo.accountSelected.prepaid;\r\n $scope.isPrepaid = vm.isPrepaid;\r\n let promises = [];\r\n if (vm.isPrepaid) {\r\n // -Removed getUMCLatestConsent(accountData) from below Line regarding UMC\r\n\r\n // promises = [getCommMedium(accountData), getPreferences(accountData, isPrepaid), getPBEligibleStatus(accountData), UMCReadConsent(accountData), getUMCLatestConsent(accountData), getEligibilityForAutoReload(accountData)];\r\n promises = [\r\n getPBEligibleStatus(accountData),\r\n UMCReadConsent(accountData),\r\n getEligibilityForAutoReload(accountData),\r\n ];\r\n } else {\r\n // -Removed getUMCLatestConsent(accountData) from below Line regarding UMC\r\n\r\n // promises = [getCommMedium(accountData), getPreferences(accountData, isPrepaid), getPBEligibleStatus(accountData), UMCReadConsent(accountData), getUMCLatestConsent(accountData),];\r\n promises = [\r\n getPBEligibleStatus(accountData),\r\n UMCReadConsent(accountData),\r\n ];\r\n }\r\n\r\n commonService.executePromises(promises).then(() => {\r\n getPreferences(accountData, vm.isPrepaid).then(() => {\r\n getCommMedium(accountData).then(() => {\r\n sessionStorageAddedInterval = $interval(() => {\r\n $interval.cancel(sessionStorageAddedInterval);\r\n loadState();\r\n }, 500);\r\n });\r\n });\r\n });\r\n }\r\n\r\n function loadState() {\r\n vm.loadingSpinner = false;\r\n $state.go(currentTab, {}, { reload: true });\r\n getRole();\r\n }\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n function selectedTab(tabId) {\r\n $rootScope.paperlessSaveErrorCount =\r\n $rootScope.paperlessSaveErrorCount < 3\r\n ? 0\r\n : $rootScope.paperlessSaveErrorCount;\r\n currentTab = tabs[tabId];\r\n vm.tab = tabId;\r\n let billingData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n if (currentTab == 'notificationPreferences.billing' || vm.tab == 1) {\r\n let paperlessBillingStatus = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n );\r\n if (\r\n paperlessBillingStatus !== null &&\r\n paperlessBillingStatus !== undefined &&\r\n billingData &&\r\n !billingData[0].enrolled\r\n ) {\r\n paperlessBillingStatus.status = paperlessBillingStatus.realStatus;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n paperlessBillingStatus,\r\n );\r\n }\r\n }\r\n }\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n $scope.roleBase.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n $scope.roleBase.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n $scope.roleBase.viewerRole = true;\r\n break;\r\n default:\r\n $scope.roleBase.viewerRole = true;\r\n }\r\n }\r\n\r\n function setGatConstants(businessFunction) {\r\n vm.gatConstants.businessFunction = businessFunction;\r\n const tabTitle = document.title;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.businessFunction,\r\n tabTitle,\r\n );\r\n $scope.sharedCtrl.dataCodeTreatment.h1 = businessFunction;\r\n }\r\n\r\n function gatTabNavigation(action) {\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: 'tab navigation',\r\n });\r\n commongaTaggingService.virtualPagePush([\r\n vm.gatConstants.businessFunction,\r\n action,\r\n ]);\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n outagePreferences = [];\r\n billingPreferences = [];\r\n paymentsPreferences = [];\r\n serviceOrdersPreferences = [];\r\n additionalOptionsPreferences = [];\r\n\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n if (globalAccountInfo.hasOwnProperty(_strings.accountSelected)) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\r\n }\r\n\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n $rootScope.channel = '010';\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable id-length */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-undef */\r\nfunction ohioChoiceConsentController(\r\n $scope,\r\n $window,\r\n $timeout,\r\n $rootScope,\r\n $document,\r\n cookiesService,\r\n updateSupplierDetailsService,\r\n getSupplierDetailsService,\r\n modalService,\r\n sessionStorageService,\r\n assetService,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n const vm = $scope;\r\n\r\n vm.ohioPageItems = [\r\n { value: 10, text: 10 },\r\n { value: 20, text: 20 },\r\n { value: 30, text: 30 },\r\n ];\r\n vm.numberOfCheckboxesChecked = 0;\r\n vm.calendarDate = '';\r\n vm.dateSelected = '';\r\n vm.currentDate = undefined;\r\n vm.currentDatePlusOne = undefined;\r\n vm.updateSupplierList = [];\r\n vm.showAuthButton = true;\r\n vm.showButton = true;\r\n vm.timeout = 1000;\r\n vm.today = new Date(\r\n moment()\r\n .add(1, 'day')\r\n .format('MM/DD/YYYY'),\r\n );\r\n vm.accessEndDate = new Date(\r\n moment()\r\n .add(1, 'Y')\r\n .format('MM/DD/YYYY'),\r\n );\r\n vm.selectedDate = '06/17/2022';\r\n vm.isBlankState = false;\r\n vm.authSuppliers = [];\r\n vm.numberOfAuthCheckboxesChecked = 0;\r\n vm.disableSave = true;\r\n vm.tcAccept = false;\r\n vm.checkauthall = true;\r\n $rootScope.isOhio = false;\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n vm.attributePush = attributePush;\r\n\r\n vm.toastWorkflow = $('#hdn-ohioChoice').attr('toastWorkflow');\r\n vm.businessFunction = $('#hdn-ohioChoice').attr('businessFunction');\r\n vm.headLine = $('#hdn-ohioChoice').attr('headLine');\r\n vm.subHeadline = $('#hdn-ohioChoice').attr('subHeadline');\r\n vm.successHeadline = $('#hdn-ohioChoice').attr('successHeadline');\r\n vm.errorHeadline = $('#hdn-ohioChoice').attr('errorHeadline');\r\n vm.btnTxt = $('#hdn-ohioChoice').attr('btnTxt');\r\n vm.tcTxt = $('#hdn-ohioChoice').attr('tcTxt');\r\n vm.tcHeadline = $('#hdn-ohioChoice').attr('tcHeadline');\r\n vm.blankStateTxt = $('#hdn-ohioChoice').attr('blankStateTxt');\r\n\r\n function selectCalendarDate(supplier) {\r\n if (supplier.authEndDateTime !== undefined) {\r\n supplier.authEndDateTime = supplier.authEndDateTime.replace(/ /g, '');\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n if (elementPos === -1) {\r\n vm.updateSupplierList.push(temp);\r\n } else {\r\n vm.updateSupplierList[elementPos].EndDate = temp.EndDate;\r\n }\r\n }\r\n }\r\n vm.selectCalendarDate = selectCalendarDate;\r\n\r\n // ENABLE SAVE\r\n function enableSave() {\r\n vm.tcAccept = true;\r\n const tcAcceptbutton = document.getElementById('tcAccept');\r\n if (tcAcceptbutton.checked === false) {\r\n tcAcceptbutton.removeAttribute('checked');\r\n tcAcceptbutton.checked = false;\r\n } else {\r\n tcAcceptbutton.setAttribute('checked', 'checked');\r\n tcAcceptbutton.checked = true;\r\n }\r\n }\r\n vm.enableSave = enableSave;\r\n\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n let endDateRange = 365;\r\n\r\n // CONSTANTS //\r\n const formatMonths = [\r\n '01',\r\n '02',\r\n '03',\r\n '04',\r\n '05',\r\n '06',\r\n '07',\r\n '08',\r\n '09',\r\n '10',\r\n '11',\r\n '12',\r\n ];\r\n const formatDays = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];\r\n\r\n /* Data Import */\r\n vm.supplierRequest = {};\r\n vm.suppliers = [];\r\n\r\n // CALCULATE DEFAULT DATE BASED ON RANGE //\r\n function defaultDate(days) {\r\n let oneYear = new Date();\r\n if (days === 0) {\r\n oneYear = oneYear.setDate(oneYear.getDate() + days);\r\n oneYear = new Date(oneYear);\r\n } else {\r\n oneYear = new Date(\r\n moment()\r\n .add(1, 'Y')\r\n .format('MM/DD/YYYY'),\r\n );\r\n }\r\n\r\n const Year = oneYear.getFullYear();\r\n\r\n let Month = oneYear.getMonth();\r\n Month = formatMonths[Month];\r\n\r\n let Day = oneYear.getDate();\r\n const daysCount = 10;\r\n if (Day < daysCount) {\r\n Day = formatDays[Day - 1];\r\n }\r\n\r\n const defaultedDate = `${Year}-${Month}-${Day}T00:00:00.0`;\r\n\r\n return defaultedDate;\r\n }\r\n\r\n function fnPreviousRecordsShow() {\r\n vm.showButton = false;\r\n vm.currentPage -= 1;\r\n vm.startingRecord -= $scope.rowLimit;\r\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\r\n Array.prototype.forEach.call(vm.suppliers, supplier => {\r\n supplier.authEndDateTime = supplier.authEndDateTime\r\n ? supplier.authEndDateTime.replace(/ /g, '')\r\n : defaultDate(endDateRange);\r\n });\r\n $timeout(() => {\r\n vm.showButton = true;\r\n }, vm.timeout);\r\n }\r\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\r\n\r\n function fnPreviousAuthRecordsShow() {\r\n vm.showAuthButton = false;\r\n vm.currentAuthPage -= 1;\r\n vm.startingAuthRecord -= $scope.authRowLimit;\r\n vm.endingAuthRecord = vm.startingAuthRecord + $scope.authRowLimit - 1;\r\n Array.prototype.forEach.call(vm.authSuppliers, supplier => {\r\n supplier.authEndDateTime = supplier.authEndDateTime\r\n ? supplier.authEndDateTime.replace(/ /g, '')\r\n : supplier.constEndDate;\r\n });\r\n $timeout(() => {\r\n vm.showAuthButton = true;\r\n }, vm.timeout);\r\n }\r\n vm.PreviousAuthRecordsShow = fnPreviousAuthRecordsShow;\r\n\r\n function fnNextRecordsShow() {\r\n vm.showButton = false;\r\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\r\n vm.currentPage += 1;\r\n vm.endingRecord =\r\n vm.currentPage + 1 === vm.totalPages &&\r\n vm.endingRecord + vm.balancePages === vm.suppliers.length\r\n ? vm.suppliers.length\r\n : vm.startingRecord + $scope.rowLimit - 1;\r\n Array.prototype.forEach.call(vm.suppliers, supplier => {\r\n supplier.authEndDateTime = supplier.authEndDateTime\r\n ? supplier.authEndDateTime.replace(/ /g, '')\r\n : defaultDate(endDateRange);\r\n });\r\n $timeout(() => {\r\n vm.showButton = true;\r\n }, vm.timeout);\r\n }\r\n vm.NextRecordsShow = fnNextRecordsShow;\r\n\r\n function fnNextAuthRecordsShow() {\r\n vm.showAuthButton = false;\r\n vm.startingAuthRecord = $scope.authRowLimit + vm.startingAuthRecord;\r\n vm.currentAuthPage += 1;\r\n vm.endingAuthRecord =\r\n vm.currentAuthPage + 1 === vm.totalAuthPages &&\r\n vm.endingAuthRecord + vm.balanceAuthRecord === vm.authSuppliers.length\r\n ? vm.authSuppliers.length\r\n : vm.startingAuthRecord + $scope.authRowLimit - 1;\r\n Array.prototype.forEach.call(vm.authSuppliers, supplier => {\r\n supplier.authEndDateTime = supplier.authEndDateTime\r\n ? supplier.authEndDateTime.replace(/ /g, '')\r\n : supplier.constEndDate;\r\n });\r\n $timeout(() => {\r\n vm.showAuthButton = true;\r\n }, vm.timeout);\r\n }\r\n vm.NextAuthRecordsShow = fnNextAuthRecordsShow;\r\n\r\n function fnChangeRowLimit(rowLimit) {\r\n $scope.rowLimit = rowLimit.value;\r\n vm.currentPage = 0;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.startingRecord = 1;\r\n vm.totalPages = Math.ceil(vm.suppliers.length / $scope.rowLimit);\r\n vm.balancePages = vm.suppliers.length % $scope.rowLimit;\r\n }\r\n vm.fnChangeRowLimit = fnChangeRowLimit;\r\n\r\n function fnChangeAuthRowLimit(limit) {\r\n $scope.authRowLimit = limit.value;\r\n vm.currentAuthPage = 0;\r\n vm.endingAuthRecord = $scope.authRowLimit;\r\n vm.startingAuthRecord = 1;\r\n vm.totalAuthPages = Math.ceil(\r\n vm.authSuppliers.length / $scope.authRowLimit,\r\n );\r\n vm.balanceAuthRecord = vm.authSuppliers.length % $scope.authRowLimit;\r\n }\r\n vm.fnChangeAuthRowLimit = fnChangeAuthRowLimit;\r\n\r\n function pastDate(date) {\r\n const newDate = new Date(date);\r\n\r\n // if (newDate < today) {\r\n // return true;\r\n // }\r\n // return false;\r\n return newDate < today ? true : false;\r\n }\r\n\r\n function load() {\r\n const params = {\r\n contractAccount: vm.contractAccountNum,\r\n };\r\n getSupplierDetailsService.sitecore\r\n .getSupplierDetailsService(params)\r\n .then(data => {\r\n if (data.d.Message.Type === 'S') {\r\n vm.supplierRequest = data.d.ReadSuppToSuppList_NAV.results;\r\n vm.supplierAuth = data.d.ReadSuppToEnrlList_NAV.results;\r\n $scope.rowLimit = 10;\r\n $scope.authRowLimit = 10;\r\n vm.startingRecord = 1;\r\n vm.startingAuthRecord = 1;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.endingAuthRecord = $scope.authRowLimit;\r\n vm.currentPage = 0;\r\n vm.currentAuthPage = 0;\r\n if (vm.supplierRequest.length > 0) {\r\n angular.forEach(vm.supplierRequest, value => {\r\n vm.suppliers.push(value);\r\n if (\r\n value.authEndDateTime === '' ||\r\n value.authEndDateTime === null ||\r\n value.authEndDateTime === undefined ||\r\n pastDate(value.authEndDateTime) ||\r\n value.authorized === false\r\n ) {\r\n value.authEndDateTime = defaultDate(endDateRange);\r\n value.authorized = false;\r\n }\r\n });\r\n\r\n vm.totalPages = Math.ceil(vm.suppliers.length / $scope.rowLimit);\r\n vm.balancePages = vm.suppliers.length % $scope.rowLimit;\r\n vm.isBlankState = false;\r\n }\r\n if (vm.supplierAuth.length > 0) {\r\n angular.forEach(vm.supplierAuth, value => {\r\n const values = {\r\n SupplierID: value.SupplierID,\r\n SupplierName: value.SupplierName,\r\n authEndDateTime: moment(value.EndDate).format('MM/DD/YYYY'),\r\n constEndDate: moment(value.EndDate).format('MM/DD/YYYY'),\r\n authorized: true,\r\n checked: true,\r\n };\r\n vm.authSuppliers.push(values);\r\n });\r\n vm.totalAuthPages = Math.ceil(\r\n vm.authSuppliers.length / $scope.authRowLimit,\r\n );\r\n vm.balanceAuthRecord =\r\n vm.authSuppliers.length % $scope.authRowLimit;\r\n vm.numberOfAuthCheckboxesChecked = vm.authSuppliers.length;\r\n }\r\n vm.currentSupplierName = data.d.CurrentSupplier;\r\n if (\r\n vm.ohioUser &&\r\n (vm.supplierRequest.length > 0 || vm.supplierAuth.length > 0)\r\n ) {\r\n vm.isBlankState = false;\r\n } else {\r\n vm.isBlankState = true;\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${vm.blankStateTxt}`,\r\n `headline:${vm.headLine}`,\r\n );\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n broadcastService.failedStateNotificationTriggered(true);\r\n });\r\n }\r\n\r\n // INIT FUNCTION WITH SERVICE CALL TO POPULATE TABLE - ACCEPTS DEFAULT DATE RANGE //\r\n vm.init = function(range) {\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo && 'accountSelected' in globalAccountInfo) {\r\n const globalSelectedAccount = globalAccountInfo.accountSelected;\r\n vm.contractAccountNum = globalSelectedAccount.accountNum;\r\n vm.ohioUser = sessionStorageService.get(assetService.storageKeys.isOhio);\r\n load();\r\n }\r\n endDateRange = range;\r\n };\r\n\r\n vm.toggleDate = function(supplier) {\r\n const dateWrapper = $document.find(\r\n `li.check-id-${supplier} div.date-select`,\r\n );\r\n const dateTick = $document.find(`li.check-id-${supplier} .date .date-tick`);\r\n const toggleDisable = dateWrapper.hasClass('disabled');\r\n\r\n if (!toggleDisable) {\r\n if (dateWrapper.hasClass('active') && dateTick.hasClass('open')) {\r\n dateWrapper.removeClass('active');\r\n dateWrapper.addClass('inactive');\r\n dateTick.removeClass('open');\r\n } else if (dateWrapper.hasClass('inactive')) {\r\n dateWrapper.addClass('active');\r\n dateWrapper.removeClass('inactive');\r\n dateTick.addClass('open');\r\n }\r\n }\r\n };\r\n vm.checkboxAuthClick = function(supplier) {\r\n const checkboxauth = document.getElementById(\r\n `check-id-${supplier.SupplierID}`,\r\n );\r\n if (checkboxauth.checked === false) {\r\n if (vm.numberOfAuthCheckboxesChecked > 0) {\r\n vm.numberOfAuthCheckboxesChecked -= 1;\r\n }\r\n if (vm.numberOfAuthCheckboxesChecked !== vm.authSuppliers.length) {\r\n const checkauthall = document.getElementById('checkauthall');\r\n\r\n if (checkauthall.attributes.checked) {\r\n checkauthall.removeAttribute('checked');\r\n checkauthall.checked = false;\r\n }\r\n }\r\n checkboxauth.removeAttribute('checked');\r\n checkboxauth.checked = false;\r\n supplier.checked = false;\r\n supplier.authEndDateTime = defaultDate(0);\r\n supplier.authorized = false;\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n if (elementPos === -1) {\r\n vm.updateSupplierList.push(temp);\r\n } else {\r\n vm.updateSupplierList[elementPos].EndDate = temp.EndDate;\r\n }\r\n } else {\r\n checkboxauth.setAttribute('checked', 'checked');\r\n checkboxauth.checked = true;\r\n supplier.checked = true;\r\n supplier.authEndDateTime = new Date(supplier.constEndDate);\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n vm.updateSupplierList.splice(elementPos, 1);\r\n vm.numberOfAuthCheckboxesChecked += 1;\r\n if (vm.numberOfAuthCheckboxesChecked === vm.authSuppliers.length) {\r\n const checkauthall = document.getElementById('checkauthall');\r\n\r\n if (!checkauthall.attributes.checked) {\r\n checkauthall.setAttribute('checked', 'checked');\r\n checkauthall.checked = true;\r\n }\r\n }\r\n }\r\n };\r\n vm.checkboxClick = function(supplier) {\r\n const checkbox = document.getElementById(`check-id-${supplier.SupplierID}`);\r\n if (checkbox.checked === false) {\r\n if (vm.numberOfCheckboxesChecked > 0) {\r\n vm.numberOfCheckboxesChecked -= 1;\r\n }\r\n if (vm.numberOfCheckboxesChecked !== vm.suppliers.length) {\r\n const checkboxall = document.getElementById('checkall');\r\n if (checkboxall.attributes.checked) {\r\n checkboxall.removeAttribute('checked');\r\n checkboxall.checked = false;\r\n }\r\n }\r\n checkbox.removeAttribute('checked');\r\n checkbox.checked = false;\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n vm.updateSupplierList.splice(elementPos, 1);\r\n supplier.authEndDateTime = defaultDate(endDateRange);\r\n } else {\r\n checkbox.setAttribute('checked', 'checked');\r\n checkbox.checked = true;\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(defaultDate(endDateRange)).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n ),\r\n };\r\n vm.updateSupplierList.push(temp);\r\n vm.numberOfCheckboxesChecked += 1;\r\n if (vm.numberOfCheckboxesChecked === vm.suppliers.length) {\r\n const checkboxall = document.getElementById('checkall');\r\n if (!checkboxall.attributes.checked) {\r\n checkboxall.setAttribute('checked', 'checked');\r\n checkboxall.checked = true;\r\n }\r\n }\r\n }\r\n };\r\n vm.checkboxAuthAll = function() {\r\n const checkauthall = document.getElementById('checkauthall');\r\n\r\n if (checkauthall.attributes.checked) {\r\n checkauthall.removeAttribute('checked');\r\n checkauthall.checked = false;\r\n Array.prototype.forEach.call(vm.authSuppliers, supplier => {\r\n if (supplier.checked === true) {\r\n supplier.checked = false;\r\n supplier.authEndDateTime = defaultDate(0);\r\n supplier.authorized = false;\r\n }\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n ),\r\n };\r\n vm.updateSupplierList.push(temp);\r\n });\r\n vm.numberOfAuthCheckboxesChecked = 0;\r\n } else {\r\n checkauthall.setAttribute('checked', 'checked');\r\n checkauthall.checked = true;\r\n Array.prototype.forEach.call(vm.authSuppliers, supplier => {\r\n supplier.checked = true;\r\n supplier.authEndDateTime = supplier.constEndDate;\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: supplier.constEndDate,\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n vm.updateSupplierList.splice(elementPos, 1);\r\n });\r\n vm.numberOfAuthCheckboxesChecked = vm.authSuppliers.length;\r\n }\r\n };\r\n\r\n // CHECK ALL LOOPS //\r\n vm.checkboxAll = function() {\r\n const checkbox = document.getElementById('checkall');\r\n\r\n if (checkbox.attributes.checked) {\r\n checkbox.removeAttribute('checked');\r\n checkbox.checked = false;\r\n Array.prototype.forEach.call(vm.suppliers, supplier => {\r\n if (supplier.checked === true) {\r\n supplier.checked = false;\r\n supplier.authEndDateTime = defaultDate(endDateRange);\r\n }\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n ),\r\n };\r\n const elementPos = vm.updateSupplierList\r\n .map(popitem => popitem.SupplierID)\r\n .indexOf(temp.SupplierID);\r\n vm.updateSupplierList.splice(elementPos, 1);\r\n });\r\n vm.numberOfCheckboxesChecked = 0;\r\n } else {\r\n checkbox.setAttribute('checked', 'checked');\r\n checkbox.checked = true;\r\n Array.prototype.forEach.call(vm.suppliers, supplier => {\r\n supplier.checked = true;\r\n supplier.authEndDateTime = defaultDate(endDateRange);\r\n const temp = {\r\n SupplierID: supplier.SupplierID,\r\n SupplierName: supplier.SupplierName,\r\n EndDate: moment(supplier.authEndDateTime).format(\r\n 'YYYY-MM-DDTHH:mm:ss',\r\n ),\r\n };\r\n vm.updateSupplierList.push(temp);\r\n });\r\n vm.numberOfCheckboxesChecked = vm.suppliers.length;\r\n }\r\n };\r\n\r\n vm.checkboxChecked = function(supplier) {\r\n const checkbox = document.getElementById(`check-id-${supplier}`);\r\n const dateWrapper = $document.find(\r\n `li.check-id-${supplier} div.date-select`,\r\n );\r\n if (dateWrapper.hasClass('active') && !checkbox.checked) {\r\n vm.toggleDate(supplier);\r\n }\r\n return checkbox.checked;\r\n };\r\n vm.openSuccessModal = function() {\r\n modalService.ohioTermsConditionModal();\r\n virtualPagePush(vm.businessFunction, vm.tcHeadline, 'load');\r\n };\r\n\r\n // CHECK FOR COOKIE AND OPEN SUCCESS MODAL //\r\n angular.element(document).ready(() => {\r\n if (cookiesService.getCookie('oct-update-success')) {\r\n vm.openSuccessModal();\r\n cookiesService.deleteCookie('oct-update-success');\r\n }\r\n });\r\n\r\n // LEAVE MODAL BUTTON //\r\n vm.leaveBtn = function(url) {\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n 'cancel',\r\n );\r\n $window.location.href = url;\r\n };\r\n\r\n // SAVE BUTTON //\r\n vm.submitForm = function(url) {\r\n $rootScope.isOhio = true;\r\n const params = {\r\n contractAccount: vm.contractAccountNum,\r\n updatesupplierList: vm.updateSupplierList,\r\n };\r\n updateSupplierDetailsService.sitecore\r\n .updateSupplierDetailsService(params)\r\n .then(result => {\r\n let readConsentCode = result.ReturnCodes[0].ReturnCode1?.MessageNum\r\n ? result.ReturnCodes[0].ReturnCode1.MessageNum\r\n : '';\r\n let readConsentMessage = result.ReturnCodes[0].ReturnCode1?.Message\r\n ? result.ReturnCodes[0].ReturnCode1.Message\r\n : '';\r\n sessionStorageService.set('readConsentCode', readConsentCode);\r\n sessionStorageService.set('readConsentMessage', readConsentMessage);\r\n if (result && result.d.Message.Type === 'S') {\r\n $rootScope.showToast = 'success';\r\n const toastMessage = {\r\n option: 'success',\r\n messageOption:\r\n 'Success! Your Ohio Choice Settings have been updated.',\r\n showToast: 'success',\r\n workFlow: `${vm.toastWorkflow}`,\r\n headline: `${vm.successHeadline}`,\r\n subheadline:\r\n 'Success! Your Ohio Choice Settings have been updated.',\r\n };\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n 'true',\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.ohioToast,\r\n toastMessage,\r\n );\r\n } else {\r\n $rootScope.showToast = 'error';\r\n const toastMessage = {\r\n option: 'error',\r\n messageOption: result.d.Message.Message,\r\n showToast: 'error',\r\n workFlow: `${vm.toastWorkflow}`,\r\n headline: `${vm.errorHeadline}`,\r\n subheadline: `${result.d.Message.Message}`,\r\n };\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n 'true',\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.ohioToast,\r\n toastMessage,\r\n );\r\n }\r\n attributePush(\r\n `workFlow:${vm.businessFunction}`,\r\n `buttonText:${vm.btnTxt}`,\r\n `headline:${vm.headLine}`,\r\n `subheadline:${vm.subHeadline}`,\r\n );\r\n virtualPagePush(\r\n vm.businessFunction,\r\n vm.headLine,\r\n vm.subHeadline,\r\n vm.btnTxt,\r\n result ? 'success' : 'error',\r\n );\r\n $window.location.href = url;\r\n $rootScope.isOhio = false;\r\n });\r\n };\r\n}\r\nohioChoiceConsentController.$inject = [\r\n '$scope',\r\n '$window',\r\n '$timeout',\r\n '$rootScope',\r\n '$document',\r\n 'cookiesService',\r\n 'updateSupplierDetailsService',\r\n 'getSupplierDetailsService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\napp.controller('ohioChoiceConsentController', ohioChoiceConsentController);\r\n","function ohioTermsController($log, $modalInstance, commongaTaggingService) {\r\n const vm = this;\r\n vm.closeModal = function () {\r\n $modalInstance.close();\r\n };\r\n\r\n /**\r\n * Initialization\r\n */\r\n vm.virtualPagePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n };\r\n vm.attributePush = function (...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n };\r\n}\r\napp.controller('ohioTermsController', ohioTermsController);\r\nohioTermsController.$inject = ['$log', '$modalInstance', 'commongaTaggingService'];\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCBPPDeEnrollModal', CCBPPDeEnrollModal);\r\nCCBPPDeEnrollModal.$inject = [\r\n '$modalInstance',\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n 'deEnrollFromProgramService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n];\r\n\r\nfunction CCBPPDeEnrollModal(\r\n $modalInstance,\r\n apiApigeeConfigService,\r\n assetService,\r\n deEnrollFromProgramService,\r\n sessionStorageService,\r\n $rootScope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Global Vars-----------------------*/\r\n vm.storageDeEnrollProgram = assetService.storageKeys.Billing_And_Paiment_Programs.deEnrollProgram;\r\n vm.programName = '';\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.deEnroll = deEnroll;\r\n vm.data = {\r\n contractAccountId: null,\r\n };\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function deEnroll() {\r\n deEnrollFromProgramService.sitecore.deEnrollFromProgram(vm.data)\r\n .then(\r\n (result) => {\r\n vm.closeModal();\r\n $rootScope.$broadcast(vm.storageDeEnrollProgram, result);\r\n },\r\n (error) => {\r\n $rootScope.$broadcast(vm.storageDeEnrollProgram, error);\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n /* empty function */\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n vm.data.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\r\n\r\n const program = sessionStorageService.get(vm.storageDeEnrollProgram);\r\n\r\n const programs = assetService.billingAndPaymentPrograms;\r\n const values = Object.values(programs);\r\n const keys = Object.keys(programs);\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[i] === program) vm.data.programName = keys[i];\r\n }\r\n\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('SendMyLetterModalController', SendMyLetterModalController);\r\nSendMyLetterModalController.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'updateCorrespondenceService',\r\n 'accountSearchService',\r\n 'commongaTaggingService',\r\n 'scrollPosition',\r\n '$window',\r\n \r\n];\r\n\r\nfunction SendMyLetterModalController(\r\n $log,\r\n $modalInstance, \r\n $rootScope,\r\n sessionStorageService,\r\n assetService,\r\n genericHelperService,\r\n updateCorrespondenceService,\r\n accountSearchService,\r\n commongaTaggingService,\r\n scrollPosition,\r\n $window\r\n \r\n\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.dropdowns = [];\r\n vm.dropdowns.mailingAddresses = [];\r\n vm.selectMailingAddress = null;\r\n vm.closeModal = closeModal;\r\n vm.sendLetter = sendLetter;\r\n vm.addEmail = addEmail;\r\n vm.mailingAddress = [];\r\n vm.showAdd = false;\r\n vm.emailValid = false;\r\n vm.isdropDownSelected = false;\r\n let contractAccountSelectedIndex = null;\r\n vm.selectedOptionText=null;\r\n vm.emailValue = '';\r\n \r\n const success = assetService.replyCodes.SUCCESS;\r\n vm.updateCorrespondens = {\r\n replyCode: null,\r\n };\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n \r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n \r\n\r\nfunction virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n}\r\n\r\nfunction attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n}\r\n\r\n function sendLetter(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n let contractAccountSelectedIndex = _.findIndex(vm.dropdowns.mailAddress);\r\n if (contractAccountSelectedIndex === -1) {\r\n contractAccountSelectedIndex = 0;\r\n }\r\n\r\n const dataToPost = {\r\n contractAccountId: vm.contractAccountId,\r\n businessPartnerId: vm.businessPartnerId,\r\n emailId: !vm.showAdd ? vm.dropdowns.mailingAddresses[contractAccountSelectedIndex].text: vm.emailValue,\r\n \r\n };\r\n updateCorrespondence(dataToPost);\r\n }\r\n \r\n\r\n function updateCorrespondence(dataToPost) {\r\n return updateCorrespondenceService.sitecore.updateCorrespondence(dataToPost).then(\r\n (result) => {\r\n if(result.d.ZDIG_CRE_REQTORES_NAV.ReplyCode === success){\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mail has been sent successfully.');\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\r\n $rootScope.$broadcast(assetService.events.refreshSendMyLetter);\r\n $modalInstance.close();\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n\r\n vm.businessPartnerId = sessionStorageService.get(assetService.storageKeys.businessPartnerId);\r\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\r\n vm.emailId = sessionStorageService.get(assetService.storageKeys.emailId);\r\n \r\n const paramData = {\r\n contractAccountId: vm.contractAccountId, \r\n };\r\n \r\n return accountSearchService.sitecore.cacheAccountSearch(paramData).then(\r\n result => {\r\n vm.mailingAddresses = _.map(result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results, item => ({ \r\n mailAddress: item.EmailAddress,\r\n addressNo: item.AddressNumber, \r\n })); \r\n\r\n vm.dropdowns.mailingAddresses = _.map(_.uniq(vm.mailingAddresses, assetService.strings.address), item => ({\r\n text: item.mailAddress,\r\n value: item.addressNo,\r\n }));\r\n \r\n $window.scrollTo(0,scrollPosition); \r\n \r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n \r\n }\r\n vm.dropMailingAddress = function (model) {\r\n vm.isdropDownSelected = true;\r\n const address = _.find(vm.mailingAddresses, mailingAddress => mailingAddress.addressNo === model.value);\r\n vm.form.addressNo = address.addressNo;\r\n\r\n // vm.formChange();\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () { \r\n load();\r\n };\r\n\r\n init();\r\n\r\n function addEmail(){\r\n vm.showAdd=true;\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageAccountEditMailingAddress', ModalManageAccountEditMailingAddress);\r\nModalManageAccountEditMailingAddress.$inject = [\r\n '$log',\r\n '$scope',\r\n '$modalInstance',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'updateCustomerAccountDetailsService',\r\n 'addressValidationService',\r\n 'assetService',\r\n 'modalService',\r\n 'genericHelperService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n 'manualResponseNotificationDefinitionsAssetService',\r\n 'returnCodeMapping',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ModalManageAccountEditMailingAddress(\r\n $log,\r\n $scope,\r\n $modalInstance, \r\n $rootScope,\r\n sessionStorageService,\r\n updateCustomerAccountDetailsService,\r\n addressValidationService,\r\n assetService,\r\n modalService,\r\n genericHelperService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n manualResponseNotificationDefinitionsAssetService,\r\n returnCodeMapping,\r\n broadcastService,\r\n) {\r\n /* -------------- Vars-----------------------*/\r\n const vm = this;\r\n vm.showEditForm = false;\r\n vm.start = {};\r\n vm.mailingForm = {};\r\n vm.mailingData = {};\r\n vm.displayStreetRangeError = false;\r\n vm.isDisable = true;\r\n vm.isAddressSelected = false;\r\n vm.isAddressSelectedInEdit = false;\r\n vm.mailingAddressData = {\r\n streetAddress: '',\r\n street: '',\r\n floor: '',\r\n zipCode: '',\r\n state: '',\r\n city: '',\r\n ownProperty: true,\r\n mobileHome: false,\r\n premiseId: '',\r\n installations: [],\r\n };\r\n vm.isAddressInValid = false;\r\n const stateList = assetService.allStates;\r\n let selectedAddress = '';\r\n /* ---------------Initialization-------------------*/\r\n const init = function () { \r\n vm.state = genericHelperService.createDropdownList(stateList,\r\n assetService.strings.VALUE, assetService.strings.TEXT);\r\n vm.mailingAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddress);\r\n vm.mailingDropdownData = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressDropdown); \r\n vm.AddMailingDropdownData = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount\r\n .manageAccountMailingAddressDropdown,\r\n );\r\n vm.AddMailingDropdownData.unshift({\r\n text: 'Add Address',\r\n value: {\r\n address: 'Add Address',\r\n },\r\n });\r\n vm.showEditForm = sessionStorageService.get(assetService.storageKeys.manageAccount.showEditForm);\r\n if(vm.showEditForm) {\r\n const addressObj = sessionStorageService.get(assetService.storageKeys.manageAccount.addressObject);\r\n vm.mailingForm.streetaddress = addressObj.streetAddress;\r\n vm.mailingForm.apartament = (addressObj.houseNo !== undefined) ?addressObj.houseNo : '';\r\n vm.mailingForm.city = addressObj.city;\r\n vm.mailingForm.zipcode = addressObj.zipCode;\r\n vm.mailingForm.state = addressObj.state;\r\n vm.mailingForm.apartament = addressObj.apartament ? addressObj.apartament : sessionStorageService.get(assetService.storageKeys.manageAccount.addressEntered).apartment ? sessionStorageService.get(assetService.storageKeys.manageAccount.addressEntered).apartment : '';\r\n vm.state = genericHelperService.setSelectedProp(vm.state,assetService.strings.VALUE, addressObj.state);\r\n }\r\n };\r\n \r\n init();\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.saveMailingaddress = saveMailingaddress;\r\n vm.addAddress = addAddress;\r\n vm.mailingAddressChange = mailingAddressChange;\r\n vm.mailingAddressChangeInEdit = mailingAddressChangeInEdit;\r\n vm.onClickContactUs = onClickContactUs;\r\n vm.onChangeMailingFormValues = onChangeMailingFormValues;\r\n \r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n \r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function mailingAddressChange(value)\r\n {\r\n vm.isDisable = false;\r\n selectedAddress = value;\r\n let addressFromManage = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject);\r\n if(checkForExistingAddress(addressFromManage, selectedAddress)) {\r\n vm.isAddressSelected = true;\r\n } else {\r\n vm.isAddressSelected = false;\r\n }\r\n }\r\n\r\n function checkForExistingAddress(addressFromManage, selectedAddress) {\r\n if(selectedAddress.value.streetName.toLowerCase() === addressFromManage.streetAddress.toLowerCase() && selectedAddress.value.houseNo.toLowerCase() === addressFromManage.houseNo.toLowerCase() && selectedAddress.value.city.toLowerCase() === addressFromManage.city.toLowerCase() && selectedAddress.value.state.toLowerCase() === addressFromManage.state.toLowerCase() && selectedAddress.value.zipCode.toLowerCase() === addressFromManage.zipCode.toLowerCase()) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n function addAddress() {\r\n vm.showEditForm = true;\r\n }\r\n\r\n function validateAddress(){\r\n const address = {\r\n streetAddress: vm.mailingForm.streetaddress,\r\n apartment: vm.mailingForm.apartament,\r\n state: vm.mailingForm.state,\r\n city: vm.mailingForm.city,\r\n zipCode: vm.mailingForm.zipcode,\r\n count: '4',\r\n };\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressEntered, address);\r\n \r\n addressValidation(address).then(\r\n result => {\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function saveMailingaddress(type,event) {\r\n if (event) {\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n\r\n let dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n street: vm.mailingForm.streetaddress,\r\n roomNo: vm.mailingForm.apartament,\r\n houseNo: vm.mailingForm.houseNo,\r\n city: vm.mailingForm.city,\r\n state: vm.mailingForm.state,\r\n zipCd: vm.mailingForm.zipcode,\r\n country: 'US'\r\n };\r\n if(!vm.showEditForm || type === 'isUpdateAddressAutoCorrect') {\r\n if(!vm.showEditForm) {\r\n dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n addressNumber: type.addressNo,\r\n country: ''\r\n };\r\n updateAddress(dataToPost, true);\r\n } else {\r\n updateAddress(dataToPost, false);\r\n }\r\n } else if(vm.showEditForm && vm.isAddressSelectedInEdit) {\r\n dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n addressNumber: type.addressNo,\r\n country: ''\r\n };\r\n updateAddress(dataToPost, true);\r\n } else {\r\n validateAddress();\r\n }\r\n }\r\n\r\n function updateAddress(data, flag){\r\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(\r\n (result) => {\r\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) \r\n {\r\n let mailingaddress = (flag) ? selectedAddress.text : result.d.HouseNo + ' ' + result.d.Street + (result.d.RoomNo ? ' ' + result.d.RoomNo + ', ' : ', ') + result.d.City + ', '+ result.d.State + ' ' + result.d.ZipCd;\r\n if(flag) {\r\n let addr = {\r\n address: `${selectedAddress.value.streetName} ${selectedAddress.value.houseNo}, ${selectedAddress.value.city}, ${selectedAddress.value.state} ${selectedAddress.value.zipCode}`,\r\n addressNo: selectedAddress.value.addressNo,\r\n city: selectedAddress.value.city,\r\n state: selectedAddress.value.state,\r\n zipCode: selectedAddress.value.zipCode,\r\n streetAddress: selectedAddress.value.streetName,\r\n houseNo: selectedAddress.value.houseNo\r\n }\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject, addr);\r\n }\r\n const broadcastData = {\r\n mailingaddress: mailingaddress,\r\n addressSelectedFlag: flag\r\n };\r\n $rootScope.$broadcast('mailingaddress', broadcastData);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mailing address has been successfully updated.');\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\r\n $rootScope.$broadcast(assetService.events.refreshManageAccountMailingAddress);\r\n $modalInstance.close();\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n \r\n }\r\n\r\n function addressValidation(data) {\r\n return addressValidationService.sitecore\r\n .addresValidation(data)\r\n .then(result => {\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressObject, data);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.addressRange,result.d.Addr_List.results);\r\n vm.mailingForm.streetaddress = result.d.StreetAddress;\r\n vm.mailingForm.apartament = result.d.Apartment;\r\n vm.mailingForm.state = result.d.State;\r\n vm.mailingForm.zipcode = result.d.ZipCode;\r\n vm.mailingForm.city = result.d.City;\r\n vm.mailingForm.houseNo = result.d.HouseNumber;\r\n vm.mailingForm.roomNo = result.d.Apartment;\r\n vm.mailingForm.country = result.d.Country;\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.currentAddress,vm.mailingForm);\r\n if(result && result.d && result.d.Addr_List && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results.length >0 && result.d.Addr_Msg.results[0].Type === assetService.replyCodes.E) {\r\n attributePush(\r\n 'workFlow:' + 'error ' + $(\"#manageaccount-modal\").attr(\"businessFunction\"), \r\n 'buttonText:'+ $(\"#manageaccount-modal\").attr(\"headLine\"),\r\n 'headline:'+ $(\"#manageaccount-modal\").attr(\"businessFunction\")\r\n )\r\n virtualPagePush('authenticated',$(\"#manageaccount-modal\").attr(\"businessFunction\"),$(\"#manageaccount-modal\").attr(\"headLine\"),$(\"#manageaccount-modal\").attr(\"buttonText\"),'error');\r\n vm.displayStreetRangeError = true; \r\n } else{\r\n if((result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 1 && result.d.HouseNumber !== '') || (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg.results.length === 0) || (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results && result.d.Addr_Msg.results.length!==0 && result.d.Addr_Msg.results[0].Type==='S')) {\r\n saveMailingaddress('isUpdateAddressAutoCorrect'); \r\n }\r\n else if((result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length > 1) || (result && result.d && result.d.Addr_List.results.length === 1)){\r\n checkForAddressRange(result.d.Addr_List.results);\r\n } \r\n \r\n }\r\n });\r\n }\r\n\r\n function checkForAddressRange(addrList) {\r\n let streetRangeFound = false;\r\n _.forEach(addrList, (address) => {\r\n if (!streetRangeFound) {\r\n streetRangeFound = _.includes(\r\n address.AddressLine.split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n let floorAptRangeFound = false;\r\n _.forEach(addrList, (address) => {\r\n if (!floorAptRangeFound) {\r\n const splitAddress = address.AddressLine.split(',');\r\n const streetName = (splitAddress.length > 4) ? splitAddress[0].trim() + ', ' + splitAddress[1].trim() : splitAddress[0].trim();\r\n floorAptRangeFound = _.includes(\r\n streetName.split(' ')\r\n .reverse()\r\n .join(' ')\r\n .split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n if (streetRangeFound) {\r\n vm.isAddressInValid = true;\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"600\" }], null).then((response) => {\r\n responseNotificationsService.errorResponse(response[0].data);\r\n }, (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n attributePush(`workFlow:${'error ' +$(\"#manageaccount-modal\").attr(\"businessFunction\")}`, `headline:${$(\"#manageaccount-modal\").attr(\"businessFunction\")}`, `subheadline:${document.getElementsByClassName('title-modal')[1].innerHTML}`, `returnCode:not set`,`msgHeader:${vm.errorNotification.header}`,`endpoint:${assetService.sitecoreEndpoints.addresValidation}`);\r\n virtualPagePush($(\"#manageaccount-modal\").attr(\"businessFunction\"), $(\"#manageaccount-modal\").attr(\"businessFunction\"), document.getElementsByClassName('title-modal')[1].innerHTML, 'update', 'error', 'not-set');\r\n } else if(floorAptRangeFound) {\r\n $modalInstance.close();\r\n modalService.manageMissingApt();\r\n } else if((!floorAptRangeFound && !streetRangeFound && addrList.length === 1)) {\r\n const address = {\r\n street: vm.mailingForm.streetaddress,\r\n floor: vm.mailingForm.apartament,\r\n state: (_.find(assetService.allStates, element => element.text === vm.mailingForm.state)) ? (_.find(assetService.allStates, element => element.text === vm.mailingForm.state)).value : vm.mailingForm.state,\r\n city: vm.mailingForm.city,\r\n zipCode: vm.mailingForm.zipcode\r\n };\r\n vm.attributeForDataLayer = {\r\n workFlow: $('#manageaccount-modal').attr('businessFunction'),\r\n headLine: $('#manageaccount-modal').attr('headLine'),\r\n subHeadline: $('#manageaccount-modal').attr('subheadLine'),\r\n start: {\r\n isLoggedIn: true,\r\n }\r\n };\r\n modalService.singleMailingAddressSuggestion({\r\n isMailingAddress: true, \r\n isPremiseAddress: false, \r\n isAddressfromDQM: true,\r\n isAddressfromPremiseSearch: false,\r\n suggesstedAddresses: addrList, \r\n currentAddress: address,\r\n tabName: vm.attributeForDataLayer,\r\n \r\n });\r\n } else {\r\n $modalInstance.close();\r\n modalService.manageMultiAddressSuggestion();\r\n }\r\n setAttributeDetails();\r\n }\r\n\r\n $scope.$on(assetService.events.singleSuggestedAddress, (event, data) => {\r\n $rootScope.$broadcast(assetService.events.loadingSpinner, true);\r\n if (data) {\r\n switch (data.action) {\r\n case 'VALID':\r\n const address = {\r\n streetAddress: data.selectedAddress.street,\r\n state: data.selectedAddress.state,\r\n city: data.selectedAddress.city,\r\n zipCode: data.selectedAddress.zipcode,\r\n apartment: data.selectedAddress.floor,\r\n count: '4',\r\n };\r\n addressValidation(address);\r\n break;\r\n case 'INVALID':\r\n const dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n street: data.selectedAddress.street,\r\n roomNo: data.selectedAddress.floor,\r\n houseNo: '',\r\n city: data.selectedAddress.city,\r\n state: data.selectedAddress.state,\r\n zipCd: data.selectedAddress.zipCode,\r\n country: 'US'\r\n };\r\n updateAddress(dataToPost, false);\r\n break;\r\n case 'CANCEL':\r\n vm.mailingForm.streetaddress = data.selectedAddress.street;\r\n vm.mailingForm.state = data.selectedAddress.state;\r\n vm.mailingForm.city = data.selectedAddress.city;\r\n vm.mailingForm.zipcode = data.selectedAddress.zipCode;\r\n vm.mailingForm.apartament = data.selectedAddress.floor;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n\r\n function setAttributeDetails(){\r\n vm.attributeForDataLayer = {\r\n businessFunction : $(\"#manageaccount-modal\").attr(\"businessFunction\"),\r\n headLine: $(\"#manageaccount-modal\").attr(\"headLine\"),\r\n subHeadLine: document.getElementsByClassName('title-modal')[1].innerHTML,\r\n buttonText: $(\"#manageaccount-modal\").attr(\"buttonText\"),\r\n missingAptGatError: $(\"#manageaccount-modal\").attr(\"missingAptGatError\")\r\n };\r\n sessionStorageService.set('edit-manage-account-details', vm.attributeForDataLayer);\r\n }\r\n \r\n function mailingAddressChangeInEdit(value) {\r\n selectedAddress = value;\r\n let addressFromManage = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountMailingAddressObject);\r\n if(checkForExistingAddress(addressFromManage, selectedAddress)) {\r\n vm.isAddressSelectedInEdit = true;\r\n } else {\r\n vm.isAddressSelectedInEdit = false;\r\n }\r\n }\r\n\r\n function onClickContactUs() {\r\n window.location.href = '/customer-service';\r\n }\r\n\r\n function onChangeMailingFormValues() {\r\n if($scope.mailingAddressForm.$valid) {\r\n vm.isAddressInValid = false;\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.pageNotificationTriggered, () => {\r\n vm.isAddressInValid = true;\r\n });\r\n }","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageAccountNickName', ModalManageAccountNickName);\r\nModalManageAccountNickName.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'updateCustomerAccountDetailsService',\r\n 'getLoggedinBPDetailsAndAssociatedAccountsService',\r\n 'ccGetUserAccountsService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ModalManageAccountNickName(\r\n $log,\r\n $modalInstance, \r\n $rootScope,\r\n sessionStorageService,\r\n assetService,\r\n updateCustomerAccountDetailsService,\r\n getLoggedinBPDetailsAndAssociatedAccountsService,\r\n ccGetUserAccountsService,\r\n commongaTaggingService,\r\n) {\r\n /* -------------- Vars-----------------------*/\r\n const vm = this;\r\n vm.nickName = '';\r\n vm.isSameName = false;\r\n vm.nameLengthError = false;\r\n /* ---------------Initialization-------------------*/\r\n const init = function () { \r\n vm.nickName = sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountNickName);\r\n };\r\n \r\n init();\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.saveNickName = saveNickName;\r\n vm.duplicateNickName = duplicateNickName;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n \r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function duplicateNickName() {\r\n vm.isSameName = (sessionStorageService.get(assetService.storageKeys.manageAccount.manageAccountNickName) === vm.nickName) ? true : false;\r\n vm.nameLengthError = vm.nickName.length > 32 ? true : false;\r\n }\r\n\r\n function saveNickName(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n const dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_NICK,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n acctNickname: vm.nickName\r\n };\r\n updateCustomerAccountDetails(dataToPost);\r\n } \r\n function refreshCache(){\r\n let _emailId = sessionStorageService.get(assetService.storageKeys.emailId);\r\n let _cdpId= sessionStorageService.get(assetService.storageKeys.cdpUserId);\r\n getLoggedinBPDetailsAndAssociatedAccountsService.sitecore\r\n .getBPDetailsRefreshCache({ emailId: _emailId, cdpId: _cdpId })\r\n .then(\r\n (result) => {\r\n console.log(result);\r\n })\r\n }\r\nfunction updateCustomerAccountDetails(data) {\r\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(\r\n (result) => { \r\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) \r\n {\r\n\r\n const mydata = {\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n \r\n contractAccountId : sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n emailId : sessionStorageService.get(assetService.storageKeys.emailId),\r\n\r\n isRefresh:true,\r\n\r\n contractAccount: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n \r\n cdpId:sessionStorageService.get(assetService.storageKeys.cdpUserId),\r\n };\r\n const selectedAccountNumber = sessionStorageService.get(assetService.storageKeys.contractAccountId);\r\n ccGetUserAccountsService.getUserAccounts(mydata).then(\r\n (results) => {\r\n if (results.accounts.length > 0) {\r\n const returnObj = {\r\n accName:result.d.AcctNickname,\r\n accNumber:selectedAccountNumber\r\n }\r\n $rootScope.$broadcast('nickname', returnObj);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your nickname has been successfully updated.');\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\r\n $rootScope.$broadcast(assetService.events.refreshManageAccountNickName);\r\n $modalInstance.close();\r\n }\r\n },\r\n ); \r\n refreshCache(); \r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n}\r\n}","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageMissingApt', ModalManageMissingApt);\r\nModalManageMissingApt.$inject = [\r\n '$log',\r\n 'modalService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'updateCustomerAccountDetailsService',\r\n '$rootScope',\r\n '$scope',\r\n '$timeout',\r\n '$modalInstance',\r\n 'commongaTaggingService',\r\n 'addressValidationService',\r\n];\r\n\r\nfunction ModalManageMissingApt(\r\n $log,\r\n modalService,\r\n assetService,\r\n sessionStorageService,\r\n updateCustomerAccountDetailsService,\r\n $rootScope,\r\n $scope,\r\n $timeout,\r\n $modalInstance,\r\n commongaTaggingService,\r\n addressValidationService,\r\n) {\r\n /* --------------Global Declarations-----------------------*/\r\n const vm = this;\r\n vm.isDisable = true;\r\n vm.address = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.currentAddress,\r\n );\r\n vm.apartment;\r\n let enteredAddress = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.addressEntered,\r\n );\r\n vm.enteredAddress = `${enteredAddress.streetAddress}${\r\n enteredAddress.apartment ? ' ' + enteredAddress.apartment + ',' : ','\r\n } ${enteredAddress.city}, ${enteredAddress.state} ${enteredAddress.zipCode}`;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.continueWithAddress = continueWithAddress;\r\n vm.closeModal = closeModal;\r\n vm.goToEditAddress = goToEditAddress;\r\n vm.enableUpdate = enableUpdate;\r\n vm.updateAddress = updateAddress;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function init() {/* empty function*/}\r\n $scope.$watch('$viewContentLoaded', () => {\r\n $timeout(() => {\r\n const attributeForDataLayer = sessionStorageService.get(\r\n 'edit-manage-account-details',\r\n );\r\n attributePush(\r\n `workFlow:${'error ' + attributeForDataLayer.businessFunction}`,\r\n `headline:${attributeForDataLayer.businessFunction}`,\r\n `subheadline:${attributeForDataLayer.subHeadLine}`,\r\n `returnCode:not set`,\r\n `msgHeader:${attributeForDataLayer.missingAptGatError}`,\r\n `endpoint:${assetService.sitecoreEndpoints.addresValidation}`,\r\n );\r\n virtualPagePush(\r\n attributeForDataLayer.businessFunction,\r\n attributeForDataLayer.businessFunction,\r\n attributeForDataLayer.subHeadLine,\r\n 'Update',\r\n 'error',\r\n 'not set',\r\n );\r\n }, 0);\r\n });\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function enableUpdate() {\r\n if (vm.apartment.length > 0) vm.isDisable = false;\r\n else vm.isDisable = true;\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function goToEditAddress() {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.showEditForm,\r\n true,\r\n );\r\n $modalInstance.close();\r\n modalService.manageAccountEditMailingAddress();\r\n }\r\n\r\n function continueWithAddress(event) {\r\n if (event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n }\r\n updateAddress('updateWithoutApt');\r\n }\r\n\r\n function updateCustomerAccountDetails(data) {\r\n updateCustomerAccountDetailsService.sitecore\r\n .updateCustomerAccountDetails(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.Message.ReplyCode.toUpperCase() ===\r\n assetService.replyCodes.Success.toUpperCase()\r\n ) {\r\n const mailingaddress =\r\n (result.d.HouseNo ? result.d.HouseNo + ' ' : '') +\r\n result.d.Street +\r\n (result.d.RoomNo ? ' ' + result.d.RoomNo + ', ' : ', ') +\r\n result.d.City +\r\n ', ' +\r\n result.d.State +\r\n ' ' +\r\n result.d.ZipCd;\r\n const broadcastData = {\r\n mailingaddress: mailingaddress,\r\n addressSelectedFlag: false,\r\n };\r\n $rootScope.$broadcast('mailingaddress', broadcastData);\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.toastNotification,\r\n assetService.strings.success,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.toastNotificationMessage,\r\n 'Your mailing address has been successfully updated.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.toastNotificationtime,\r\n assetService.strings.FADEOUT,\r\n );\r\n $rootScope.$broadcast(\r\n assetService.events.refreshManageAccountMailingAddress,\r\n );\r\n $modalInstance.close();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function updateAddress(type, event) {\r\n if (event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n }\r\n if (type === 'updateWithoutApt') {\r\n const dataToPost = {\r\n action:\r\n assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(\r\n assetService.storageKeys.businessPartnerId,\r\n ),\r\n contractAccountId: sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n ),\r\n street: vm.address.streetaddress,\r\n roomNo: enteredAddress.apartment ? enteredAddress.apartment : '',\r\n houseNo: vm.address.houseNo,\r\n country: vm.address.country,\r\n city: enteredAddress.city,\r\n state: enteredAddress.state,\r\n zipCd: enteredAddress.zipCode,\r\n };\r\n updateCustomerAccountDetails(dataToPost);\r\n } else {\r\n validateAddress();\r\n }\r\n }\r\n\r\n function validateAddress() {\r\n const houseNo = vm.address.houseNo\r\n ? vm.address.houseNo + ' '\r\n : vm.address.houseNo;\r\n const address = {\r\n streetAddress: `${houseNo}${vm.address.streetaddress}`,\r\n apartment: vm.apartment,\r\n state: vm.address.state,\r\n city: vm.address.city,\r\n zipCode: vm.address.zipcode,\r\n count: '4',\r\n };\r\n addressValidation(address).then(\r\n result => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function addressValidation(data) {\r\n return addressValidationService.sitecore\r\n .addresValidation(data)\r\n .then(result => {\r\n vm.apartment = '';\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.addressRange,\r\n result.d.Addr_List.results,\r\n );\r\n let dataToPost = {\r\n action:\r\n assetService.serviceActions.updateCustomerAccountDetails\r\n .UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(\r\n assetService.storageKeys.businessPartnerId,\r\n ),\r\n contractAccountId: sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n ),\r\n streetaddress: result.d.StreetAddress,\r\n street: result.d.StreetAddress,\r\n roomNo: result.d.Apartment,\r\n houseNo: result.d.HouseNumber,\r\n city: result.d.City,\r\n state: result.d.State,\r\n zipCd: result.d.ZipCode,\r\n zipcode: result.d.ZipCode,\r\n country: result.d.Country,\r\n };\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.currentAddress,\r\n dataToPost,\r\n );\r\n if (\r\n (result &&\r\n result.d &&\r\n result.d.Addr_List.results &&\r\n result.d.Addr_List.results.length === 1 &&\r\n result.d.HouseNumber !== '') ||\r\n (result &&\r\n result.d &&\r\n result.d.Addr_List.results &&\r\n result.d.Addr_List.results.length === 0 &&\r\n result.d.Addr_Msg.results.length === 0) ||\r\n (result &&\r\n result.d &&\r\n result.d.Addr_List.results &&\r\n result.d.Addr_List.results.length === 0 &&\r\n result.d.Addr_Msg &&\r\n result.d.Addr_Msg.results &&\r\n result.d.Addr_Msg.results.length !== 0 &&\r\n result.d.Addr_Msg.results[0].Type === 'S')\r\n ) {\r\n updateCustomerAccountDetails(dataToPost);\r\n } else if (\r\n (result &&\r\n result.d &&\r\n result.d.Addr_List.results &&\r\n result.d.Addr_List.results.length > 1) ||\r\n (result &&\r\n result.d &&\r\n result.d.Apartment === '' &&\r\n result.d.Addr_List.results.length === 1)\r\n ) {\r\n checkForAddressRange(result.d.Addr_List.results);\r\n }\r\n });\r\n }\r\n\r\n function checkForAddressRange(addrList) {\r\n let streetRangeFound = false;\r\n _.forEach(addrList, address => {\r\n if (!streetRangeFound) {\r\n streetRangeFound = _.includes(\r\n address.AddressLine.split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n let floorAptRangeFound = false;\r\n _.forEach(addrList, address => {\r\n if (!floorAptRangeFound) {\r\n const splitAddress = address.AddressLine.split(',');\r\n const streetName =\r\n splitAddress.length > 4\r\n ? splitAddress[0].trim() + ', ' + splitAddress[1].trim()\r\n : splitAddress[0].trim();\r\n floorAptRangeFound = _.includes(\r\n streetName\r\n .split(' ')\r\n .reverse()\r\n .join(' ')\r\n .split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n if (streetRangeFound) {\r\n vm.isAddressInValid = true;\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: '600' }], null).then(\r\n response => {\r\n responseNotificationsService.errorResponse(response[0].data);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else if (floorAptRangeFound) {\r\n $modalInstance.close();\r\n modalService.manageMissingApt();\r\n } else {\r\n $modalInstance.close();\r\n modalService.manageMultiAddressSuggestion();\r\n }\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageMultipleAddressSuggestion', ModalManageMultipleAddressSuggestion);\r\nModalManageMultipleAddressSuggestion.$inject = [\r\n '$log',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'updateCustomerAccountDetailsService',\r\n 'manualResponseNotificationDefinitionsAssetService',\r\n 'responseNotificationsService',\r\n 'addressValidationService',\r\n '$rootScope',\r\n '$modalInstance',\r\n 'commongaTaggingService',\r\n '$scope',\r\n '$timeout'\r\n];\r\n\r\nfunction ModalManageMultipleAddressSuggestion(\r\n $log,\r\n modalService,\r\n sessionStorageService,\r\n assetService,\r\n updateCustomerAccountDetailsService,\r\n manualResponseNotificationDefinitionsAssetService,\r\n responseNotificationsService,\r\n addressValidationService,\r\n $rootScope,\r\n $modalInstance,\r\n commongaTaggingService,\r\n $scope,\r\n $timeout\r\n) {\r\n const vm = this;\r\n vm.currentAddress = {};\r\n vm.addressRange = [];\r\n vm.dataToPost = {};\r\n vm.isDisable = true;\r\n vm.splittedAddressArray = [];\r\n vm.radioButton = false;\r\n vm.isPOaddr = false;\r\n vm.splittedAddressArrayCheck = '';\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n \r\n \r\n vm.updateAddress = updateAddress;\r\n vm.closeModal = closeModal;\r\n vm.goToEditAddress = goToEditAddress;\r\n vm.getAddress = getAddress;\r\n\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.addressRange = sessionStorageService.get(assetService.storageKeys.manageAccount.addressRange);\r\n vm.currentAddress = sessionStorageService.get(assetService.storageKeys.manageAccount.currentAddress);\r\n console.log(vm.currentAddress);\r\n vm.isPOaddr = $rootScope.isPOaddr;\r\n }\r\n\r\n function getAddress(selectedAddress,radioBtn){\r\n if(typeof(selectedAddress) === 'string') {\r\n vm.splittedAddressArray = selectedAddress.split(',');\r\n vm.dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n city: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 3].trim() : '',\r\n state: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 2].trim() : '',\r\n zipCd: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 1].trim() : '',\r\n roomNo: '',\r\n houseNo: '',\r\n country: vm.currentAddress.country\r\n };\r\n if (vm.splittedAddressArray.length) {\r\n if(vm.isPOaddr === true) {\r\n vm.splittedAddressArrayCheck = vm.splittedAddressArray[vm.splittedAddressArray.length - 4].trim();\r\n }\r\n else {\r\n vm.splittedAddressArrayCheck = vm.splittedAddressArray[vm.splittedAddressArray.length - 5].trim();\r\n }\r\n }\r\n vm.dataForAddress = {\r\n houseNo: '',\r\n streetAddress: vm.splittedAddressArray.length ? vm.splittedAddressArrayCheck : '',\r\n roomNo: '',\r\n apartment: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 4].trim() : '',\r\n state: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 2].trim() : '',\r\n city: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 3].trim() : '',\r\n zipCode: vm.splittedAddressArray.length ? vm.splittedAddressArray[vm.splittedAddressArray.length - 1].trim() : '',\r\n count: '4',\r\n };\r\n } else {\r\n vm.dataToPost = {\r\n action: assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING,\r\n businessPartnerId: sessionStorageService.get(assetService.storageKeys.businessPartnerId),\r\n contractAccountId: sessionStorageService.get(assetService.storageKeys.contractAccountId),\r\n city: vm.currentAddress.city,\r\n state: vm.currentAddress.state,\r\n zipCd:vm.currentAddress.zipcode,\r\n roomNo: vm.currentAddress.apartament ? vm.currentAddress.apartament : '',\r\n houseNo: vm.currentAddress.houseNo,\r\n country: vm.currentAddress.country \r\n };\r\n vm.dataForAddress = {\r\n houseNo: vm.currentAddress.houseNo,\r\n streetAddress: vm.currentAddress.streetaddress,\r\n roomNo: vm.currentAddress.apartament ? vm.currentAddress.apartament : '',\r\n apartment: vm.currentAddress.apartament,\r\n state: vm.currentAddress.state,\r\n city: vm.currentAddress.city,\r\n zipCode: vm.currentAddress.zipcode,\r\n count: '4',\r\n };\r\n }\r\n if (radioBtn === 0) {\r\n vm.dataToPost.street = selectedAddress.streetaddress;\r\n vm.radioButton = true;\r\n } \r\n if (radioBtn === 1) {\r\n vm.radioButton = false;\r\n vm.dataToPost.street = vm.splittedAddressArray.length > 4 ? `${vm.splittedAddressArray[0]},${vm.splittedAddressArray[1]}` : vm.splittedAddressArray[0];\r\n }\r\n vm.isDisable = false;\r\n }\r\n\r\n function updateAddress(event){\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n if (vm.radioButton == true) {\r\n updateCustomerAccountDetails(vm.dataToPost);\r\n } else {\r\n addressValidation(vm.dataForAddress).then(\r\n result => {\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n function addressValidation(data) {\r\n return addressValidationService.sitecore\r\n .addresValidation(data)\r\n .then(result => {\r\n \r\n vm.dataToPost.street = result.d.StreetAddress;\r\n vm.dataToPost.apartament = result.d.Apartment;\r\n vm.dataToPost.state = result.d.State;\r\n vm.dataToPost.zipCd = result.d.ZipCode;\r\n vm.dataToPost.city = result.d.City;\r\n vm.dataToPost.houseNo = result.d.HouseNumber;\r\n vm.dataToPost.roomNo = result.d.Apartment;\r\n vm.dataToPost.country = result.d.Country;\r\n \r\n if(result && result.d && result.d.Addr_List && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results.length >0 && result.d.Addr_Msg.results[0].Type === assetService.replyCodes.S) {\r\n updateCustomerAccountDetails(vm.dataToPost); \r\n \r\n } else{\r\n if((result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 1 && result.d.HouseNumber !== '') || (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg.results.length === 0) || (result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length === 0 && result.d.Addr_Msg && result.d.Addr_Msg.results && result.d.Addr_Msg.results.length!==0 && result.d.Addr_Msg.results[0].Type==='S')) {\r\n \r\n updateCustomerAccountDetails(vm.dataToPost); \r\n }\r\n else if((result && result.d && result.d.Addr_List.results && result.d.Addr_List.results.length > 1) || (result && result.d && result.d.Apartment === '' && result.d.Addr_List.results.length === 1)){\r\n checkForAddressRange(result.d.Addr_List.results);\r\n } \r\n \r\n }\r\n \r\n });\r\n }\r\n function checkForAddressRange(addrList) {\r\n let streetRangeFound = false;\r\n _.forEach(addrList, (address) => {\r\n if (!streetRangeFound) {\r\n streetRangeFound = _.includes(\r\n address.AddressLine.split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n let floorAptRangeFound = false;\r\n _.forEach(addrList, (address) => {\r\n if (!floorAptRangeFound) {\r\n const splitAddress = address.AddressLine.split(',');\r\n const streetName = (splitAddress.length > 4) ? splitAddress[0].trim() + ', ' + splitAddress[1].trim() : splitAddress[0].trim();\r\n floorAptRangeFound = _.includes(\r\n streetName.split(' ')\r\n .reverse()\r\n .join(' ')\r\n .split(' ', 1)[0],\r\n '-',\r\n );\r\n }\r\n });\r\n if (streetRangeFound) {\r\n vm.isAddressInValid = true;\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"600\" }], null).then((response) => {\r\n responseNotificationsService.errorResponse(response[0].data);\r\n }, (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n attributePush(`workFlow:${'error ' +$(\"#manageaccount-modal\").attr(\"businessFunction\")}`, `headline:${$(\"#manageaccount-modal\").attr(\"businessFunction\")}`, `subheadline:${document.getElementsByClassName('title-modal')[1].innerHTML}`, `returnCode:not set`,`msgHeader:${vm.errorNotification.header}`,`endpoint:${assetService.sitecoreEndpoints.addresValidation}`);\r\n virtualPagePush( $(\"#manageaccount-modal\").attr(\"businessFunction\"), $(\"#manageaccount-modal\").attr(\"businessFunction\"), document.getElementsByClassName('title-modal')[1].innerHTML, 'update', 'error', 'not-set');\r\n } else if(floorAptRangeFound) {\r\n $modalInstance.close();\r\n modalService.manageMissingApt();\r\n } else {\r\n $modalInstance.close();\r\n modalService.manageMultiAddressSuggestion();\r\n }\r\n \r\n }\r\n function updateCustomerAccountDetails(data){\r\n updateCustomerAccountDetailsService.sitecore.updateCustomerAccountDetails(data).then(\r\n (result) => {\r\n if (result.d.Message.ReplyCode.toUpperCase() === assetService.replyCodes.Success.toUpperCase()) \r\n {\r\n const mailingaddress = result.d.HouseNo +' ' + result.d.Street + ' ' + result.d.City + ','+ result.d.State + ' ' + result.d.ZipCd;\r\n const broadcastData = {\r\n mailingaddress: mailingaddress,\r\n addressSelectedFlag: false\r\n };\r\n $rootScope.$broadcast('mailingaddress', broadcastData);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotification, assetService.strings.success);\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationMessage, 'Your mailing address has been successfully updated.');\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.toastNotificationtime, assetService.strings.FADEOUT);\r\n $rootScope.$broadcast(assetService.events.refreshManageAccountMailingAddress);\r\n $modalInstance.close();\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function goToEditAddress(){\r\n sessionStorageService.set(assetService.storageKeys.manageAccount.showEditForm, true);\r\n $modalInstance.close();\r\n modalService.manageAccountEditMailingAddress();\r\n }\r\n\r\n \r\n \r\n function init() {\r\n load();\r\n }\r\n $scope.$watch('$viewContentLoaded', () => {\r\n $timeout(() => {\r\n const attributeForDataLayer = sessionStorageService.get('edit-manage-account-details');\r\n attributePush(`workFlow:${'error ' + attributeForDataLayer.businessFunction}`, `headline:${attributeForDataLayer.businessFunction}`, `subheadline:${attributeForDataLayer.subHeadLine}`,`returnCode:not set`,`msgHeader:${attributeForDataLayer.headLine}`,`endpoint:${assetService.sitecoreEndpoints.addresValidation}`);\r\n virtualPagePush(attributeForDataLayer.businessFunction, attributeForDataLayer.businessFunction, attributeForDataLayer.subHeadLine, 'Update', 'error', 'not set');\r\n }, 0); \r\n });\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-magic-numbers */\r\n/* eslint-disable max-len */\r\n/* eslint-disable id-length */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ManagerAccountController', ManagerAccountController);\r\nManagerAccountController.$inject = [\r\n '$scope',\r\n '$state',\r\n '$window',\r\n '$rootScope',\r\n 'accountSearchService',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'updateCustomerAccountDetailsService',\r\n 'genericHelperService',\r\n 'modalService',\r\n 'getLoggedInUserDetailsService',\r\n 'maintainRelationshipService',\r\n 'commongaTaggingService',\r\n 'componentStateHandler',\r\n 'removeProfileExperienceService',\r\n 'ccDelegationAssetService',\r\n 'getUserRolesAdministrationService',\r\n];\r\n\r\nfunction ManagerAccountController(\r\n $scope,\r\n $state,\r\n $window,\r\n $rootScope,\r\n accountSearchService,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n updateCustomerAccountDetailsService,\r\n genericHelperService,\r\n modalService,\r\n getLoggedInUserDetailsService,\r\n maintainRelationshipService,\r\n commongaTaggingService,\r\n componentStateHandler,\r\n removeProfileExperienceService,\r\n ccDelegationAssetService,\r\n getUserRolesAdministrationService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _globalAccountInfo = {};\r\n let _startedFromWatcher = false;\r\n let _globalSelectedAccount;\r\n\r\n const _successToast = assetService.strings.success;\r\n const _delAction = assetService.serviceActions.maintainRelationship.DEL_REL;\r\n const _succes = assetService.replyCodes.S;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n vm.dropdowns = [];\r\n vm.dropdowns.mailingAddresses = [];\r\n vm.selectMailingAddress = null;\r\n vm.disabledDropdown = true;\r\n vm.title = 'Manage Account';\r\n vm.mailingAddress = [];\r\n vm.keysDropdown = [];\r\n vm.showAdd = false;\r\n vm.formBtn = true;\r\n vm.tab = null;\r\n vm.contractAccountId = '';\r\n vm.businessPartnerId = '';\r\n vm.accountOverviewTabs = [];\r\n vm.roleBase = {};\r\n vm.role = null;\r\n vm.state = $state;\r\n vm.showToast = false;\r\n vm.data = {};\r\n vm.mailingAddresses = [];\r\n vm.getY = 0;\r\n vm.multiAccounts = false;\r\n\r\n vm.form = {\r\n accountNumber: null,\r\n accountNickName: null,\r\n mailingAddress: null,\r\n };\r\n vm.userRoles = [];\r\n vm.hasDelegations = false;\r\n $rootScope.isPOaddr = false;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.addFunction = addFunction;\r\n vm.cancelAdding = cancelAdding;\r\n vm.doModal = doModal;\r\n vm.sendMyLetterModalOpen = sendMyLetterModalOpen;\r\n vm.isSet = isSet;\r\n vm.saveChangesForm = saveChangesForm;\r\n vm.sendAttributionPush = sendAttributionPush;\r\n vm.stateGo = stateGo;\r\n vm.showEditNickNameModal = showEditNickNameModal;\r\n vm.showEditMailingAddressModal = showEditMailingAddressModal;\r\n vm.closeToast = closeToast;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.accountSearch = accountSearch;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n $scope.init();\r\n });\r\n\r\n $scope.$on(assetService.events.refreshSendMyLetter, () => {\r\n showToast();\r\n $scope.init();\r\n setTimeout(() => {\r\n $window.scrollTo(0, vm.getY);\r\n }, 500);\r\n });\r\n\r\n /**\r\n * $on functions\r\n */\r\n\r\n $scope.$on('MailingAddress', (event, index) => {\r\n const mailingAddresses = _.find(\r\n vm.mailingAddresses,\r\n item => item.addressNo === vm.dropdowns.mailingAddresses[index].value,\r\n );\r\n vm.form.mailingAddress = mailingAddresses;\r\n });\r\n\r\n $scope.$on('modalManagerConfirm', (event, doChanges) => {\r\n if (doChanges) {\r\n removeManagerAccount();\r\n }\r\n });\r\n\r\n vm.dropMailingAddress = function(model) {\r\n if (model.value == '0') {\r\n vm.showAdd = true;\r\n vm.formBtn = true;\r\n } else {\r\n const address = _.find(\r\n vm.mailingAddresses,\r\n mailingAddress => mailingAddress.addressNo === model.value,\r\n );\r\n vm.form.addressNo = address.addressNo;\r\n }\r\n vm.formChange();\r\n };\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function addFunction() {\r\n vm.showAdd = true;\r\n vm.formBtn = true;\r\n vm.formChange();\r\n }\r\n\r\n function stateGo(route) {\r\n $state.go(route);\r\n }\r\n\r\n function saveChangesForm() {\r\n vm.formBtn = true;\r\n\r\n $(document).ready(() => {\r\n window.onbeforeunload = null;\r\n });\r\n\r\n const parsedAddress = _.find(\r\n vm.mailingAddresses,\r\n address => address.addressNo === vm.form.addressNo,\r\n );\r\n const parsedCurrentAddress = _.find(\r\n vm.mailingAddresses,\r\n address => address.addressNo === vm.formModel.addressNo,\r\n );\r\n\r\n vm.dataToPost = {\r\n action:\r\n assetService.serviceActions.updateCustomerAccountDetails.NICKANDADDR,\r\n businessPartnerId: vm.businessPartnerId,\r\n contractAccountId: vm.contractAccountId,\r\n addressNumber: vm.formModel.addressNo,\r\n poBox:\r\n parsedAddress.poBox || parsedAddress.poBox !== ''\r\n ? parsedAddress.poBox\r\n : parsedCurrentAddress.poBox,\r\n houseNo:\r\n parsedAddress.houseNo || parsedAddress.houseNo !== ''\r\n ? parsedAddress.houseNo\r\n : parsedCurrentAddress.houseNo,\r\n country:\r\n parsedAddress.country || parsedAddress.country !== ''\r\n ? parsedAddress.country\r\n : parsedCurrentAddress.country,\r\n acctNickname: vm.form.accountNickName,\r\n };\r\n\r\n if (vm.nickNameChangue) {\r\n vm.dataToPost.action =\r\n assetService.serviceActions.updateCustomerAccountDetails.UPD_NICK;\r\n updateCustomerAccountDetails(vm.dataToPost);\r\n }\r\n\r\n if (!vm.showAdd) {\r\n vm.dataToPost.street =\r\n parsedAddress.streetName || parsedAddress.streetName !== ''\r\n ? parsedAddress.streetName\r\n : parsedCurrentAddress.streetName;\r\n vm.dataToPost.city =\r\n parsedAddress.city || parsedAddress.city !== ''\r\n ? parsedAddress.city\r\n : parsedCurrentAddress.city;\r\n vm.dataToPost.state =\r\n parsedAddress.state || parsedAddress.state !== ''\r\n ? parsedAddress.state\r\n : parsedCurrentAddress.state;\r\n vm.dataToPost.zipCd =\r\n parsedAddress.zipCode || parsedAddress.zipCode !== ''\r\n ? parsedAddress.zipCode\r\n : parsedCurrentAddress.zipCode;\r\n if (vm.addressNoChangue) {\r\n vm.dataToPost.action =\r\n assetService.serviceActions.updateCustomerAccountDetails.UPD_MAILING;\r\n updateCustomerAccountDetails(vm.dataToPost);\r\n }\r\n } else {\r\n vm.dataToPost.street = vm.newMailingAddress.streetAddress;\r\n vm.dataToPost.city = vm.newMailingAddress.city;\r\n vm.dataToPost.state = vm.newMailingAddress.state;\r\n vm.dataToPost.zipCd = vm.newMailingAddress.zipCode;\r\n vm.dataToPost.action =\r\n assetService.serviceActions.updateCustomerAccountDetails.NICKANDADDR;\r\n updateCustomerAccountDetails(vm.dataToPost);\r\n }\r\n }\r\n\r\n function updateCustomerAccountDetails(data) {\r\n updateCustomerAccountDetailsService.sitecore\r\n .updateCustomerAccountDetails(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.Message.ReplyCode.toUpperCase() ===\r\n assetService.replyCodes.Success.toUpperCase()\r\n ) {\r\n vm.showAdd = false;\r\n _startedFromWatcher = false;\r\n\r\n load();\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function removeProfileExperience(data, noOfAccounts) {\r\n return removeProfileExperienceService.sitecore\r\n .removeProfileExperience(data)\r\n .then(\r\n result => {\r\n if (result) {\r\n if (\r\n result.MessageText === assetService.replyCodes.SUCCESS ||\r\n result.MessageText === assetService.replyCodes.Success\r\n ) {\r\n if (noOfAccounts === 1) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.dashboard.userType,\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS,\r\n );\r\n }\r\n window.location.href = '/my-account/sign-in/disambiguationpage';\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function maintainRelationship(data) {\r\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(\r\n result => {\r\n if (\r\n result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.Type ===\r\n _succes\r\n ) {\r\n if ($rootScope.numberOfResiAccount === 1) {\r\n removeProfileExperience(data, $rootScope.numberOfAccount);\r\n }\r\n vm.showToast = true;\r\n vm.data.option = _successToast;\r\n if (\r\n vm.roleBase.ownerRole ||\r\n vm.roleBase.adminRole ||\r\n vm.roleBase.viewerRole\r\n ) {\r\n vm.data.messageOption = 'Success! Account removed.';\r\n } else {\r\n vm.data.messageOption = 'The account will be removed overnight.';\r\n }\r\n vm.data.show = _fadeInOut;\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n `headline:${vm.data.option}`,\r\n `subheadline:${vm.data.messageOption}`,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'manage-account',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'manage-account',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n\r\n if (vm.data.option == _successToast) {\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility =\r\n 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n // window.location.href = '/my-account/multiple-accounts-table';\r\n }, 12000);\r\n }\r\n\r\n if ($rootScope.numberOfResiAccount > 1) {\r\n window.location.href = '/my-account/multiple-accounts-table';\r\n }\r\n\r\n // if(vm.contractAccount.length>1){\r\n\r\n // window.location.href = '/my-account/multiple-accounts-table';\r\n\r\n // } else\r\n // {\r\n // window.location.href = 'my-account/Dashboard';\r\n // }\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function removeManagerAccount() {\r\n let roleID = '';\r\n let relationship = '';\r\n if (_globalAccountInfo.accountSelected.relationship) {\r\n relationship = _globalAccountInfo.accountSelected.relationship;\r\n }\r\n if (_globalAccountInfo.accountSelected.role === assetService.roles.owner) {\r\n roleID = '014';\r\n } else if (\r\n _globalAccountInfo.accountSelected.role === assetService.roles.admin\r\n ) {\r\n roleID = '001';\r\n } else if (\r\n _globalAccountInfo.accountSelected.role === assetService.roles.viewer\r\n ) {\r\n roleID = '012';\r\n }\r\n const data = {\r\n action: _delAction,\r\n businessPartnerId: vm.businessPartnerId,\r\n relatedBPEmail: vm.currentUser.emailId,\r\n sessionNo: '',\r\n cdpid: vm.currentUser.cdpId,\r\n accounts: [\r\n {\r\n contractAccountId: vm.contractAccountId,\r\n relationship: relationship || roleID,\r\n caAccessEndDate: moment()\r\n .subtract(1, 'days')\r\n .format('YYYY-MM-DDTHH:mm:ss'),\r\n },\r\n ],\r\n };\r\n maintainRelationship(data);\r\n }\r\n\r\n function getRole() {\r\n vm.roleBase = {};\r\n switch (_globalAccountInfo.accountSelected.role) {\r\n case assetService.roles.owner:\r\n vm.roleBase.ownerRole = true;\r\n vm.role = genericHelperService.capitalize(assetService.roles.owner);\r\n break;\r\n case assetService.roles.admin:\r\n vm.roleBase.adminRole = true;\r\n vm.role = genericHelperService.capitalize(assetService.roles.admin);\r\n break;\r\n case assetService.roles.viewer:\r\n vm.roleBase.viewerRole = true;\r\n vm.role = genericHelperService.capitalize(assetService.roles.viewer);\r\n break;\r\n default:\r\n vm.roleBase.viewerRole = true;\r\n }\r\n }\r\n\r\n function cancelAdding() {\r\n vm.showAdd = false;\r\n vm.newMailingAddress = {};\r\n\r\n vm.formChange();\r\n }\r\n\r\n function doModal() {\r\n angular.element('#ManagerModalModal').modal('show');\r\n }\r\n\r\n function sendMyLetterModalOpen() {\r\n vm.getY = $window.scrollY;\r\n modalService.sendMyLetterModal(vm.getY);\r\n }\r\n\r\n vm.formChange = function() {\r\n vm.disabledSave = false;\r\n vm.accountForm = genericHelperService.validateObj(vm.form, vm.formModel);\r\n\r\n if (vm.showAdd) {\r\n const { streetAddress, state, city, zipCode } = vm.newMailingAddress;\r\n vm.disabledSave = !streetAddress || !state || !city || !zipCode;\r\n vm.disabledSave = !(!vm.accountForm || !vm.disabledSave);\r\n } else vm.disabledSave = vm.accountForm;\r\n\r\n vm.nickNameChangue =\r\n vm.form.accountNickName !== vm.formModel.accountNickName;\r\n vm.addressNoChangue = vm.form.addressNo !== vm.formModel.addressNo;\r\n };\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n function setModels() {\r\n vm.disabledDropdown = true;\r\n const item = vm.accountData.mailingAddress;\r\n let addr = '';\r\n if (item.Country === 'US') {\r\n const apartment = item.unit ? ` ${item.unit}` : '';\r\n const housNoAndAddressOrPoBox =\r\n item.houseNo === '' && item.streetAddress === '' && apartment === ''\r\n ? ` PO Box ${item.poBox}`\r\n : ` ${item.houseNo} ${item.streetAddress}${apartment}`;\r\n addr = `${housNoAndAddressOrPoBox}, ${item.city}, ${item.state} ${item.zipCode}`;\r\n if (\r\n item.houseNo === '' &&\r\n item.streetAddress === '' &&\r\n apartment === ''\r\n ) {\r\n $rootScope.isPOaddr = true;\r\n }\r\n } else {\r\n addr = `${item.IntlAddressLine1} ${item.IntlAddressLine2} ${item.IntlAddressLine3} ${item.Country}`;\r\n addr = addr.trim();\r\n }\r\n vm.form = {\r\n accountNumber: vm.accountData.contractAccountNo,\r\n accountNickName: vm.accountData.accountNickName,\r\n addressNo: vm.accountData.mailingAddress.addressNo,\r\n address: addr,\r\n };\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.manageAccountNickName,\r\n vm.form.accountNickName,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.manageAccountMailingAddress,\r\n vm.form.address,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.manageAccountMailingAddressObject,\r\n vm.accountData.mailingAddress,\r\n );\r\n\r\n if (vm.roleBase.ownerRole === true && vm.hasDelegations == true) {\r\n vm.accountOverviewTabs = [\r\n {\r\n title: 'Billing & Payment Programs',\r\n selected: 'selected',\r\n route: 'manageAccount.billingAndPaymentPrograms',\r\n },\r\n // commenting this code as account permission is not part of AO and R8\r\n // {\r\n // title: 'Account Permissions',\r\n // selected: ' ',\r\n // route: 'manageAccount.delegatedAccountUsers',\r\n // },\r\n ];\r\n } else {\r\n vm.accountOverviewTabs = [\r\n {\r\n title: 'Billing & Payment Programs',\r\n selected: 'selected',\r\n route: 'manageAccount.billingAndPaymentPrograms',\r\n },\r\n ];\r\n }\r\n\r\n vm.formModel = genericHelperService.notReferenceObjects(vm.form);\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.loadingSpinner = true;\r\n vm.disabledSave = true;\r\n\r\n if (\r\n _globalAccountInfo.accountSelected.accountNum &&\r\n _globalAccountInfo.accountSelected.bpNumber\r\n ) {\r\n vm.contractAccountId = _globalAccountInfo.accountSelected.accountNum;\r\n vm.businessPartnerId = _globalAccountInfo.accountSelected.bpNumber;\r\n vm.emailId = vm.currentUser.emailId;\r\n sessionStorageService.set(\r\n assetService.storageKeys.cdpUserId,\r\n vm.currentUser.cdpId,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.businessPartnerId,\r\n vm.businessPartnerId,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId,\r\n vm.contractAccountId,\r\n );\r\n sessionStorageService.set(assetService.storageKeys.emailId, vm.emailId);\r\n } else {\r\n vm.businessPartnerId = sessionStorageService.get(\r\n assetService.storageKeys.businessPartnerId,\r\n );\r\n vm.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n vm.emailId = sessionStorageService.get(assetService.storageKeys.emailId);\r\n }\r\n\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n\r\n vm.unenroll = _globalSelectedAccount.prepaid;\r\n\r\n const accountData = {\r\n contractAccountId: vm.contractAccountId,\r\n businessPartnerId: vm.businessPartnerId,\r\n emailId: vm.emailId,\r\n };\r\n sessionStorageService.set(\r\n assetService.storageKeys.testData.accountData,\r\n accountData,\r\n );\r\n\r\n const accountsList = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n\r\n if (accountsList?.accounts?.length > 1) {\r\n vm.multiAccounts = true;\r\n }\r\n\r\n const promises = [vm.accountSearch(accountData), getRole(), getUserRoles()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n componentStateHandler.showComponent(vm);\r\n stateGo('manageAccount.billingAndPaymentPrograms');\r\n });\r\n }\r\n function accountSearch(data) {\r\n const paramData = {\r\n contractAccountId: data.contractAccountId,\r\n dataSource: assetService.strings.ISU,\r\n requestingFunction:\r\n assetService.serviceActions.accountSearch.ACC_SEARCH_MANAGED,\r\n };\r\n\r\n return accountSearchService.sitecore.accountSearch(paramData).then(\r\n result => {\r\n if (result) {\r\n const contractAccounts = _.map(\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results,\r\n item => ({\r\n contractAccountNo: item.AccountNumber,\r\n accountNickName: item.AccountNickname,\r\n mailingAddress: {\r\n address: item.AccountMailingAddress,\r\n addressNo: item.AddressNumber,\r\n city: item.City,\r\n state: item.State,\r\n zipCode: item.ZipCode,\r\n streetAddress: item.StreetName,\r\n houseNo: item.HouseNum,\r\n poBox: item.POBox,\r\n unit: item.Unit,\r\n IntlAddressLine1: item.IntlAddressLine1,\r\n IntlAddressLine2: item.IntlAddressLine2,\r\n IntlAddressLine3: item.IntlAddressLine3,\r\n Country: item.Country,\r\n },\r\n }),\r\n );\r\n _.map(\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAdd\r\n .results,\r\n item => {\r\n const apartment = item.Unit ? ` ${item.Unit}` : '';\r\n const housNoAndAddressOrPoBoxDrop =\r\n item.HouseNum === '' &&\r\n item.StreetName === '' &&\r\n apartment === ''\r\n ? ` PO Box ${item.POBox}`\r\n : ` ${item.HouseNum} ${item.StreetName}${apartment}`;\r\n const addr = {\r\n address:\r\n item.Country.toUpperCase() === 'US'\r\n ? `${housNoAndAddressOrPoBoxDrop}, ${item.City}, ${item.State} ${item.ZipCode}`\r\n : `${item.IntlAddressLine1} ${item.IntlAddressLine2} ${item.IntlAddressLine3} ${item.Country}`,\r\n addressNo: item.AddressNumber,\r\n city: item.City,\r\n state: item.State,\r\n zipCode: item.ZipCode,\r\n streetName: item.StreetName,\r\n streetSuffix: item.StreetSuffix,\r\n houseNo: item.HouseNum,\r\n poBox: item.POBox,\r\n unit: item.Unit,\r\n country: item.County,\r\n IntlAddressLine1: item.IntlAddressLine1,\r\n IntlAddressLine2: item.IntlAddressLine2,\r\n IntlAddressLine3: item.IntlAddressLine3,\r\n Country: item.Country,\r\n };\r\n vm.mailingAddresses.push(addr);\r\n },\r\n );\r\n\r\n vm.dropdowns.mailingAddresses = _.map(\r\n _.uniq(vm.mailingAddresses, assetService.strings.address),\r\n item => ({\r\n text: item.address,\r\n value: item,\r\n }),\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount\r\n .manageAccountMailingAddressDropdown,\r\n vm.dropdowns.mailingAddresses,\r\n );\r\n vm.dropdowns.mailingAddresses.push({\r\n text: 'Add New Mailing Address',\r\n value: '0',\r\n });\r\n vm.contractAccount = contractAccounts;\r\n vm.accountData = _.find(\r\n contractAccounts,\r\n account => account.contractAccountNo === vm.contractAccountId,\r\n );\r\n vm.addresText = vm.accountData.mailingAddress.address;\r\n } else {\r\n componentStateHandler.failedState(vm);\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function sendAttributionPush(index) {\r\n const analyticsToPush = {\r\n 'event-category': 'manage_account',\r\n 'event-action': 'tab-navigation-|-',\r\n 'event-label': 'manage-account-|-account-overview ',\r\n event: 'fire-event',\r\n };\r\n switch (index) {\r\n case 0:\r\n analyticsToPush['event-action'] = analyticsToPush[\r\n 'event-action'\r\n ].concat('billing-payment-programs');\r\n break;\r\n case 1:\r\n analyticsToPush['event-action'] = analyticsToPush[\r\n 'event-action'\r\n ].concat('products-and-services');\r\n break;\r\n case 2:\r\n analyticsToPush['event-action'] = analyticsToPush[\r\n 'event-action'\r\n ].concat('delegated-account-user');\r\n break;\r\n }\r\n $rootScope.attributePush(\r\n analyticsToPush['event-category'],\r\n analyticsToPush['event-action'],\r\n analyticsToPush['event-label'],\r\n analyticsToPush.event,\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n $scope.init = function() {\r\n vm.loadingSpinner = true;\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo && !_startedFromWatcher) {\r\n if (!assetService.apiConfig.useLocalHost) {\r\n vm.currentUser = {\r\n emailId: $rootScope.currentUserEmailId,\r\n cdpId: $rootScope.currentUserCdpId,\r\n };\r\n load();\r\n } else {\r\n vm.currentUser = {\r\n emailId: '', // Get Primary Bp\r\n cdpId: '', // Get Primary Bp // Get Primary Bp\r\n };\r\n load();\r\n }\r\n }\r\n };\r\n\r\n function showEditNickNameModal() {\r\n modalService.manageAccountEditNickName();\r\n }\r\n\r\n function showEditMailingAddressModal() {\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.showEditForm,\r\n false,\r\n );\r\n modalService.manageAccountEditMailingAddress();\r\n }\r\n\r\n function closeToast() {\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }\r\n\r\n function getUserRoles() {\r\n const dataObject = {\r\n businessPartnerId: _globalSelectedAccount.primaryBp,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n requestedBy: '',\r\n sessionNo: '',\r\n emailId: vm.currentUser.emailId,\r\n experience: '',\r\n };\r\n getUserRolesAdministrationService.sitecore.getUserRoles(dataObject).then(\r\n result => {\r\n if (result) {\r\n vm.userRoles =\r\n result.d.results[0].ZDIG_USERROL_REQ_TO_PBP.results[0].ZDIG_USERROL_PBP_TO_CA.results[0].ZDIG_USERROL_CA_TO_DELEGTED.results;\r\n vm.userRoles = vm.userRoles.filter(\r\n value => value.DelegationStat === 'ACTIVE',\r\n );\r\n vm.userRoles = vm.userRoles.filter(\r\n value =>\r\n value.Relationship !== '002' && value.Relationship !== '014',\r\n );\r\n if (vm.userRoles.length > 0) {\r\n vm.hasDelegations = true;\r\n }\r\n }\r\n },\r\n error => {\r\n if (error) {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n $scope.$on('nickname', (event, returnObj) => {\r\n vm.form.accountNickName = returnObj.accName;\r\n vm.accountData.accountNickName = vm.form.accountNickName;\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.manageAccountNickName,\r\n returnObj.accName,\r\n );\r\n $rootScope.$broadcast('nicknameForAccountSelector', returnObj);\r\n });\r\n\r\n $scope.$on('mailingaddress', (event, address) => {\r\n vm.form.address = address.mailingaddress;\r\n sessionStorageService.set(\r\n assetService.storageKeys.manageAccount.manageAccountMailingAddress,\r\n address.mailingaddress,\r\n );\r\n $rootScope.$broadcast('mailingaddressForAccountSelector');\r\n const accountData = {\r\n contractAccountId: vm.contractAccountId,\r\n businessPartnerId: vm.businessPartnerId,\r\n emailId: vm.emailId,\r\n };\r\n if (!address.addressSelectedFlag) {\r\n const promises = [vm.accountSearch(accountData)];\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n });\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.refreshManageAccountNickName, () => {\r\n showToast();\r\n });\r\n $scope.$on(assetService.events.refreshManageAccountMailingAddress, () => {\r\n showToast();\r\n });\r\n\r\n function showToast() {\r\n vm.showToast = true;\r\n vm.data.option = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.toastNotification,\r\n );\r\n vm.data.messageOption = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.toastNotificationMessage,\r\n );\r\n vm.data.show = sessionStorageService.get(\r\n assetService.storageKeys.manageAccount.toastNotificationtime,\r\n );\r\n\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n `headline:${vm.data.option}`,\r\n `subheadline:${vm.data.messageOption}`,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'manage-account',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'manage-account',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n if (vm.data.option == _successToast || vm.data.option == _errorToast) {\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.data.show = assetService.strings.FADEINOUT;\r\n vm.showToast = false;\r\n }, 12000);\r\n }\r\n }\r\n}\r\n","app.controller('ManagerModalController', ManagerModalController);\r\nManagerModalController.$inject = [\r\n '$scope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ManagerModalController(\r\n $scope,\r\n sessionStorageService,\r\n assetService,\r\n commongaTaggingService,\r\n) {\r\n $scope.roleBase = sessionStorageService.get(\r\n assetService.storageKeys.roleBase,\r\n );\r\n $scope.showCheckboxAlert = false;\r\n\r\n $scope.doChanges = function(\r\n doChanges,\r\n event,\r\n checkbox,\r\n vp1,\r\n vp2,\r\n vp3,\r\n vp4,\r\n vp5,\r\n at1,\r\n at2,\r\n at3,\r\n at4,\r\n ) {\r\n if (doChanges === false) {\r\n angular.element('#ManagerModalModal').modal('hide');\r\n $scope.$emit('modalManagerConfirm', doChanges);\r\n $scope.mm.checkboxConfirmChecked = false;\r\n }\r\n\r\n if (doChanges && checkbox) {\r\n if (event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n $('.title-modal').addClass('subheadline');\r\n }\r\n angular.element('#ManagerModalModal').modal('hide');\r\n virtualPagePush(vp1, vp2, vp3, vp4, vp5);\r\n attributePush(at1, at2, at3, at4);\r\n $scope.$emit('modalManagerConfirm', doChanges);\r\n } else if (doChanges === false) {\r\n $scope.showCheckboxAlert = false;\r\n } else {\r\n $scope.showCheckboxAlert = true;\r\n }\r\n };\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n}\r\n","app.controller('CCAutoReloadTrack', CCAutoReloadTrack);\r\n\r\nCCAutoReloadTrack.$inject = [\r\n '$log',\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'getEligibilityForAutoReloadService',\r\n 'commongaTaggingService',\r\n '$location',\r\n];\r\n\r\nfunction CCAutoReloadTrack(\r\n $log,\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n getEligibilityForAutoReloadService,\r\n commongaTaggingService,\r\n $location,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.init = init;\r\n /* --------------Global Vars-----------------------*/\r\n vm.moveStorage = {};\r\n vm.start = {};\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n warningMsg: '',\r\n };\r\n vm.workFlow = '';\r\n vm.headline = '';\r\n vm.buttonText = '';\r\n vm.virtual = [];\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n vm.mainPathStep = '';\r\n $rootScope.mainBtnActivate = false;\r\n $rootScope.apiValidation = false;\r\n $rootScope.btnType = true;\r\n $rootScope.editBtn = true;\r\n $rootScope.stepsShow = true;\r\n\r\n vm.steps = assetService.autoReload.steps;\r\n vm.paths = assetService.autoReload.paths;\r\n vm.position = assetService.autoReload.position;\r\n vm.showShellButtons = false;\r\n vm.loading = false;\r\n vm.cyclePath = [\r\n {\r\n path: vm.paths.reloadWhen,\r\n change: true,\r\n pathAlt: vm.paths.altPath,\r\n nameBtn: 'CONTINUE',\r\n vpv: 'fire-vpv',\r\n vpvName:\r\n '/vpv/authenticated/prepaid-advantage/auto-reload/reload-when/select-when-you-would-like-funds-to-be-automatically-reloaded/continue',\r\n vpvNameError:\r\n '/vpv/authenticated/prepaid-advantage/auto-reload/reload-when/select-when-you-would-like-funds-to-be-automatically-reloaded/cancel',\r\n },\r\n {\r\n path: vm.paths.reloadAmount,\r\n change: true,\r\n pathAlt: vm.paths.altPath,\r\n vpv: 'fire-vpv',\r\n vpvName:\r\n '/vpv/authenticated/prepaid-advantage/auto-reload/reload-amount/select-a-reload-amount/continue',\r\n vpvNameError:\r\n '/vpv/authenticated/prepaid-advantage/auto-reload/reload-amount/select-a-reload-amount/previous',\r\n },\r\n {\r\n path: vm.paths.paymentMethod,\r\n change: true,\r\n pathAlt: vm.paths.altPath,\r\n },\r\n {\r\n path: vm.paths.reviewAndEnroll,\r\n change: true,\r\n pathAlt: vm.paths.altPath,\r\n },\r\n {\r\n path: vm.paths.succes,\r\n change: false,\r\n pathAlt: vm.paths.altPath,\r\n },\r\n ];\r\n vm.error = false;\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n const urlParams = $location.search();\r\n const { externalId, expirationDate } = urlParams;\r\n if (\r\n externalId != null &&\r\n expirationDate != null &&\r\n externalId != '' &&\r\n expirationDate != ''\r\n ) {\r\n vm.showShellButtons = true;\r\n $state.go(vm.cyclePath[vm.position.fourth].path);\r\n return;\r\n }\r\n if (externalId != null && externalId != '' && expirationDate == null) {\r\n location.href = `${location.pathname}/failure`;\r\n return;\r\n }\r\n $state.go(vm.cyclePath[vm.position.first].path);\r\n\r\n vm.showShellButtons = true;\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Functions Definition-------------------*/\r\n vm.getPrepaidDetails = getPrepaidDetails;\r\n vm.getEligibilityForAutoReload = getEligibilityForAutoReload;\r\n /* ---------------Initialization-------------------*/\r\n function getPrepaidDetails(data) {\r\n vm.loading = true;\r\n getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(\r\n result => {\r\n vm.autoReloadTrack.averageCostPerDay =\r\n result.d.PrepaidToBP.results[0].BPToCA.results[0].AverageCostPerDay;\r\n\r\n sessionStorageService.set(\r\n assetService.autoReload.storage,\r\n vm.autoReloadTrack,\r\n );\r\n load();\r\n vm.loading = false;\r\n },\r\n error => {\r\n vm.loading = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getEligibilityForAutoReload(data) {\r\n data.action = assetService.events.GET_ELIG;\r\n vm.loading = true;\r\n getEligibilityForAutoReloadService.sitecore\r\n .getEligibilityForAutoReload(data)\r\n .then(\r\n result => {\r\n if (\r\n result.d.AREligibility_NAV.Eligible ===\r\n assetService.autoReload.ELIGIBLE\r\n ) {\r\n getPrepaidDetails(data);\r\n vm.error = false;\r\n } else if (\r\n result.d.AREligibility_NAV.Eligible ===\r\n assetService.autoReload.ENROLLED\r\n ) {\r\n window.location.href = '/my-account/manage-auto-reload';\r\n } else {\r\n attributePush(\r\n 'workFlow: error ' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'buttonText:' + 'not set',\r\n 'addedSpec:' +\r\n assetService.sitecoreEndpoints.GetEligibilityForAutoReload,\r\n 'addedEvent:' + vm.taggingElements.warningMsg,\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n 'error',\r\n 'not set',\r\n );\r\n\r\n vm.error = true;\r\n }\r\n vm.loading = false;\r\n },\r\n error => {\r\n vm.loading = false;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function init(\r\n workflow,\r\n headline,\r\n subHeadline,\r\n buttonText,\r\n addedSpec,\r\n warningMsg,\r\n ) {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n const data = {\r\n businessPartnerId: _globalSelectedAccount.primaryBp,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n bankDetail: false,\r\n };\r\n\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n vm.autoReloadTrack = storage || data;\r\n vm.getEligibilityForAutoReload(data);\r\n vm.taggingElements.workflow = workflow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subHeadline;\r\n vm.taggingElements.buttonText = buttonText;\r\n vm.taggingElements.addedSpec = addedSpec;\r\n vm.taggingElements.warningMsg = warningMsg;\r\n }\r\n\r\n $scope.$on('moveTrack', data => {\r\n vm.pathStep = data.path;\r\n vm.btnActivate = data.btn;\r\n });\r\n\r\n $scope.$on('classTrack', (event, data) => {\r\n if (data === 'startTrack.review') {\r\n vm.mainPathStep = 'review';\r\n } else {\r\n vm.mainPathStep = data;\r\n }\r\n });\r\n\r\n $scope.$on('changueTrackSelected', (event, data) => {\r\n if (data.track || data.track === 0) {\r\n vm.mainPathStep = vm.cyclePath[data.track];\r\n const goTo = vm.cyclePath[data.track];\r\n vm.track = data.track;\r\n if (data.track === 1) {\r\n attributePush(\r\n `workFlow:${vm.taggingElements.workflow}`,\r\n `headline:${vm.taggingElements.headline}`,\r\n `subheadline:${vm.taggingElements.subHeadline}`,\r\n `buttonText:${vm.taggingElements.buttonText}`,\r\n `addedSpec:${vm.taggingElements.addedSpec}`,\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n vm.taggingElements.subHeadline,\r\n vm.taggingElements.buttonText,\r\n vm.taggingElements.addedSpec,\r\n );\r\n }\r\n $state.go(goTo.path);\r\n }\r\n vm.stepTrack = data.step;\r\n });\r\n\r\n // init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller(\r\n 'CCStatementsShell',\r\n CCStatementsShell,\r\n);\r\nCCStatementsShell.$inject = [\r\n '$state',\r\n '$scope',\r\n 'assetService',\r\n 'prepaidService',\r\n];\r\n\r\nfunction CCStatementsShell(\r\n $state,\r\n $scope,\r\n assetService,\r\n prepaidService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n\r\n /* Function definitions */\r\n\r\n function load() {\r\n $state.go(prepaidService.prepaidRouteState.STATEMENTS);\r\n }\r\n\r\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n // globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n // if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n // globalSelectedAccount = globalAccountInfo.accountSelected;\r\n // }\r\n\r\n // vm.loadingSpinner = true;\r\n // load();\r\n // });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCPrepaid', CCPrepaid);\r\nCCPrepaid.$inject = [\r\n '$state',\r\n '$scope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'prepaidService',\r\n];\r\n\r\nfunction CCPrepaid(\r\n $state,\r\n $scope,\r\n sessionStorageService,\r\n assetService,\r\n prepaidService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n let _globalAccountInfo;\r\n vm.isPrepaid = false;\r\n vm.unEnrollSuccess = false;\r\n /* Global Vars */\r\n\r\n /* Function declarations */\r\n\r\n /* Function definitions */\r\n $scope.$on('unEnrollSuccess', (event, data) => {\r\n vm.unEnrollSuccess = true;\r\n });\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n let _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n vm.isPrepaid = _globalSelectedAccount.prepaid;\r\n\r\n if (vm.isPrepaid) {\r\n //$state.go(prepaidService.prepaidRouteState.UNENROLL_LOOSE_BENEFITS);\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\r\n } else {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable indent */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('PaymentAssistance', PaymentAssistance);\r\n\r\nPaymentAssistance.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'installmentpaymentplansandeligibilityservice',\r\n 'getEnrollmentStatusOfExtensionPlanService',\r\n 'getAccountBalanceForRegularAccountService',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'getActiveInstallmentPlansService',\r\n 'commonService',\r\n 'cookieService',\r\n 'commongaTaggingService',\r\n 'getLoggedInUserDetailsService',\r\n];\r\n\r\nfunction PaymentAssistance(\r\n $log,\r\n $scope,\r\n assetService,\r\n installmentpaymentplansandeligibilityservice,\r\n getEnrollmentStatusOfExtensionPlanService,\r\n getAccountBalanceForRegularAccountService,\r\n $rootScope,\r\n sessionStorageService,\r\n getActiveInstallmentPlansService,\r\n commonService,\r\n cookieService,\r\n commongaTaggingService,\r\n getLoggedInUserDetailsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.roleBase = {};\r\n vm.dueDate = false;\r\n vm.disconnect = false;\r\n vm.Installment = false;\r\n vm.SecurityDepositFlag = false;\r\n vm.data = {\r\n contractAccountId: null,\r\n };\r\n vm.loadingSpinner = true;\r\n vm.manageInstallmentPlans = false;\r\n vm.nonAplicable = false;\r\n vm.showCPI = false;\r\n vm.installmentPlan = {};\r\n vm.currentUser = {}; // Get RequestedBy value\r\n vm.extendedDueDateNew = null;\r\n vm.extendedDatePlusOneYear = null;\r\n const ohioJurisdiction = 'OH01';\r\n const _depositSd = 'Security Deposit';\r\n const _utilityEsc = 'Energy Service Charges';\r\n const _deposit = 'deposit';\r\n vm.guid = '';\r\n vm.highCPI = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.goToPage = goToPage;\r\n vm.gatGenerate = gatGenerate;\r\n vm.getCpiAndCashOnlyData = getCpiAndCashOnlyData;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.IPAnalytics = IPAnalytics;\r\n /* --------------Function Definitions-----------------------*/\r\n function goToPage(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n cookieService.setCookie('payment-assistance-validation', true, null, 1, null, null, null);\r\n window.location.href = event.target.href;\r\n }\r\n\r\n function IPAnalytics(action) {\r\n if (vm.manageInstallmentPlans) {\r\n pushDL('payment-assistance-options', $rootScope.dataLayerFormat(action.toLowerCase()), 'payment-assistance-options-|-installment-plan');\r\n } else {\r\n pushDL('payment-assistance-options', $rootScope.dataLayerFormat(action.toLowerCase()), 'payment-assistance-options-|-installment-plan');\r\n }\r\n }\r\n\r\n function gatGenerate() {\r\n attributePush(\r\n `workFlow:${$('#dueDateExtensions').attr('businessFunction')}`,\r\n `headline:${$('#dueDateExtensions').attr('headLine')}`,\r\n `subheadline:${$('#dueDateExtensions').attr('subhead')}`,\r\n `buttonText:${$('#dueDateExtensions').attr('buttonText')}`,\r\n );\r\n virtualPagePush(\r\n $('#dueDateExtensions').attr('businessFunction'),\r\n $('#dueDateExtensions').attr('headLine'),\r\n $('#dueDateExtensions').attr('subhead'),\r\n $('#dueDateExtensions').attr('buttonText'),\r\n );\r\n }\r\n\r\n function getRole() {\r\n vm.roleBase = {};\r\n switch (globalAccountInfo.accountSelected.role) {\r\n case assetService.roles.owner:\r\n vm.roleBase.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.roleBase.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.roleBase.viewerRole = true;\r\n break;\r\n default:\r\n vm.roleBase.viewerRole = true;\r\n }\r\n }\r\n function getCpiAndCashOnlyData(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n (result) => {\r\n vm.loadingSpinner = false;\r\n const accountData = result.getAccountAndBillingInfoResList\r\n .find(account => account.contractAccountNumber.toString() === data.accountList[0].contractAccountNumber);\r\n vm.cpiMessage = accountData.messageList[0].message;\r\n const downPayDueAmount = (accountData.installmentAmount || 0) - (accountData.pendPmtDlrs || 0);\r\n vm.highCPI = Number(accountData.totalDueDlrs || '') > 0 && (downPayDueAmount > 0);\r\n },\r\n (error) => {\r\n vm.loadingSpinner = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function load() {\r\n vm.loadingSpinner = true;\r\n vm.guid = angular.element('#guid').val();\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n getRole();\r\n if (globalSelectedAccount.accountNum) {\r\n const contractAccountId = globalSelectedAccount.accountNum;\r\n sessionStorageService.set(assetService.storageKeys.contractAccountId, contractAccountId);\r\n vm.data.contractAccountId = contractAccountId;\r\n vm.jurisdiction = globalSelectedAccount.jurisdiction === ohioJurisdiction;\r\n if (!vm.jurisdiction) {\r\n $('.simple-wide-card:eq(1)').hide();\r\n }\r\n } else {\r\n vm.data.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n }\r\n\r\n const contractAccountNumber = vm.data.contractAccountId;\r\n\r\n const promises = [\r\n getActiveInstallmentPlans({\r\n contractAccountId: vm.data.contractAccountId,\r\n requestedBy: vm.currentUser.emailId,\r\n }),\r\n getInstallmentPlans(contractAccountNumber),\r\n ];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.installmentPlan.length > 0) {\r\n vm.manageInstallmentPlans = true;\r\n getCpiAndCashOnlyData({\r\n accountList: [\r\n {\r\n contractAccountNumber,\r\n zipCode: globalSelectedAccount.zipCode,\r\n },\r\n ],\r\n });\r\n } else {\r\n vm.loadingSpinner = false;\r\n }\r\n });\r\n\r\n function getActiveInstallmentPlans(data) {\r\n return getActiveInstallmentPlansService.sitecore.getActiveInstallmentPlans(data).then(\r\n (result) => {\r\n if (\r\n result.d.ReqCA.results.length > 0\r\n && result.d.ReqCA.results[0].Messages.MessageNum !== '478'\r\n ) {\r\n vm.installmentPlan = _.map(result.d.ReqCA.results, plan => ({\r\n numberOfInstallments: plan.NumberOfInstallments,\r\n installmentsRemaining: plan.NumberOfInstallments - plan.NumberOfInstallmentsRemaining,\r\n }));\r\n if (vm.installmentPlan[0].installmentsRemaining === 0 && result.d.ReqCA.results[0].DownPayment > 0) {\r\n vm.showCPI = true;\r\n }\r\n }\r\n if(result?.d?.ReqCA?.results[0]?.SecurityDepositFlag==='X' && result.d.ReqCA.results[0].Messages.MessageNum !== '477'){\r\n vm.SecurityDepositFlag = true;\r\n sessionStorageService.set(\r\n assetService.storageKeys.paymentAssistance.securityDepositflag,\r\n 'X');\r\n }\r\n if(vm.SecurityDepositFlag){\r\n vm.nonAplicable = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getInstallmentPlans(data) {\r\n return installmentpaymentplansandeligibilityservice.sitecore\r\n .instalmentPaymentPlansAndEligibilityCheck(data)\r\n .then(\r\n (result) => {\r\n if (\r\n result.d.ReqCA.results.length > 0\r\n && result.d.ReqCA.results[0].Messages.MessageNum !== '478'\r\n ) {\r\n if (\r\n result.d.ReqCA.results[0].PaymentPlan\r\n && result.d.ReqCA.results[0].PaymentPlan.results.length > 0\r\n ) {\r\n vm.Installment = true;\r\n }\r\n if (result.d.ReqCA.results[0].Extensions) {\r\n const extension = result.d.ReqCA.results[0].Extensions;\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.paymentAssistance.extension,\r\n extension,\r\n );\r\n\r\n if (extension.DeferralDate !== null) {\r\n vm.dueDate = true;\r\n } else if (extension.DisconnectDate !== null) {\r\n vm.disconnect = true;\r\n }\r\n }\r\n getEnrollmentStatusOfExtensionPlan({\r\n contractAccountId: vm.data.contractAccountId,\r\n action: assetService.serviceActions.getEnrollmentOfExtensionPlan.DUEDATE,\r\n });\r\n getEnrollmentStatusOfExtensionPlan({\r\n contractAccountId: vm.data.contractAccountId,\r\n action: assetService.serviceActions.getEnrollmentOfExtensionPlan.DISCDATE,\r\n });\r\n }\r\n if (vm.Installment === false && vm.disconnect === false && vm.dueDate === false) {\r\n vm.nonAplicable = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getEnrollmentStatusOfExtensionPlan(data) {\r\n return getEnrollmentStatusOfExtensionPlanService.sitecore\r\n .GetEnrollmentStatusOfExtensionPlans(data)\r\n .then(\r\n (result) => {\r\n if (result.d.Action === 'DUEDATE' && result.d.DueDate) {\r\n vm.extendedDueDateNew = result.d.DueDate.ExtendedDueDate\r\n ? moment.utc(result.d.DueDate.ExtendedDueDate).format('MM/DD/YYYY')\r\n : '';\r\n sessionStorageService.set(\r\n assetService.storageKeys.paymentAssistance.extendedDueDate,\r\n vm.extendedDueDateNew,\r\n );\r\n } else if (result.d.Action === 'DISCDATE' && result.d.DisconnectionDate) {\r\n vm.extendedDisconnectDate = result.d.DisconnectionDate.ExtendedDisconnectionDate\r\n ? moment\r\n .utc(result.d.DisconnectionDate.ExtendedDisconnectionDate)\r\n .format('MM/DD/YYYY')\r\n : '';\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n pushVPV('/vpv/de/page/payment-assistance-options/load/payment-assistance-options');\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function reset() {\r\n vm.dueDate = false;\r\n vm.disconnect = false;\r\n vm.Installment = false;\r\n vm.SecurityDepositFlag = false;\r\n vm.data = {\r\n contractAccountId: null,\r\n };\r\n vm.loadingSpinner = true;\r\n vm.installmentPlan = {};\r\n vm.manageInstallmentPlans = false;\r\n vm.nonAplicable = false;\r\n vm.showCPI = false;\r\n }\r\n\r\n /* ---------------Google Analytics-------------------*/\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n vm.loadingSpinner = true;\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n reset();\r\n vm.currentUser = {\r\n emailId: $rootScope.currentUserEmailId,\r\n cdpId: $rootScope.currentUserCdpId,\r\n };\r\n load();\r\n });\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageProfileChangeEmail', ModalManageProfileChangeEmail);\r\nModalManageProfileChangeEmail.$inject = [\r\n '$modalInstance',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'commongaTaggingService'\r\n];\r\n\r\nfunction ModalManageProfileChangeEmail(\r\n $modalInstance,\r\n sessionStorageService,\r\n assetService,\r\n commongaTaggingService\r\n) {\r\n /* -------------- Vars-----------------------*/\r\n const vm = this;\r\n vm.newEmail = sessionStorageService.get(assetService.storageKeys.profileSettingNewEmail);\r\n vm.closeModal = closeModal;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n}","app.controller( 'profileLinkingNewUserYesNoController', profileLinkingNewUserYesNoController);\r\nprofileLinkingNewUserYesNoController.$inject = [\r\n '$element', \r\n '$scope', \r\n '$timeout', \r\n '$window'];\r\n\r\nfunction profileLinkingNewUserYesNoController(\r\n $element, \r\n $scope, \r\n $timeout, \r\n $window) {\r\n /*--------------Scope Vars-----------------------*/\r\n\r\n /*--------------Global Vars-----------------------*/\r\n const vm = this;\r\n \r\n}","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('ProfileSettings', ProfileSettings);\r\n\r\nProfileSettings.$inject = [\r\n '$scope',\r\n '$window',\r\n '$log',\r\n '$location',\r\n 'assetService',\r\n 'commonService',\r\n 'accountSearchService',\r\n 'readAndDerivePreferencesService',\r\n 'sessionStorageService',\r\n 'getLoggedinBPDetailsAndAssociatedAccountsService',\r\n 'getLoggedInUserDetailsService',\r\n 'ccGetUserAccountsService',\r\n 'profileExperiencesService',\r\n 'ccAddAccountAssetService',\r\n 'accountSearchService',\r\n 'errorHandlingService',\r\n 'commongaTaggingService',\r\n 'ccGetUserBPDetailsService',\r\n 'getDeepLinkedPrimaryBPService',\r\n 'getRelatedBpforRegistration',\r\n 'cookieService',\r\n];\r\n\r\nfunction ProfileSettings(\r\n $scope,\r\n $window,\r\n $log,\r\n $location,\r\n assetService,\r\n commonService,\r\n accountSearchService,\r\n readAndDerivePreferencesService,\r\n sessionStorageService,\r\n getLoggedinBPDetailsAndAssociatedAccountsService,\r\n getLoggedInUserDetailsService,\r\n ccGetUserAccountsService,\r\n profileExperiencesService,\r\n ccAddAccountAssetService,\r\n accountSearchService,\r\n errorHandlingService,\r\n commongaTaggingService,\r\n ccGetUserBPDetailsService,\r\n getDeepLinkedPrimaryBPService,\r\n getRelatedBpforRegistration,\r\n cookieService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let _profileSettingsData = null;\r\n vm.currentUser = {\r\n emailId: null,\r\n cdpId: null,\r\n };\r\n vm.primaryBp = null;\r\n vm.Accounts = [];\r\n vm.accSearchRequest = {};\r\n vm.readDerivePreferencesRequest = {};\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n emailAccounts: [],\r\n emailSubscriptions: [],\r\n phoneNumbers: [],\r\n restToBp: {},\r\n currentUser: {},\r\n };\r\n vm.loaded = false;\r\n let _allEmails = [];\r\n let _allPhones = [];\r\n vm.showexperiance = false;\r\n vm.interimMessage = false;\r\n vm.multipleBpPresent = false;\r\n vm.showPreferenceLink = true;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.navigateToAddAccountPage = navigateToAddAccountPage;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function navigateToAddAccountPage() {\r\n window.location.href = '/my-account/add-account-r5';\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n\r\n if (!vm.interimMessage && !vm.showexperiance) {\r\n vm.loaded = true;\r\n vm.data.isLegacyAccount = true;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.data,\r\n );\r\n } else {\r\n vm.data.isLegacyAccount = false;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.data,\r\n );\r\n\r\n accountSearch({\r\n businessPartnerId: vm.primaryBp,\r\n dataSource: assetService.strings.ISU,\r\n }).then(\r\n result => {\r\n let promises = [];\r\n // promises.push(getProfileExperiences({emailId: (!vm.currentUser.emailId ? vm.primaryEmail.EmailAddress : vm.currentUser.emailId) }));\r\n let readDerivePreferencesRequest = {\r\n businessPartnerId: vm.primaryBp,\r\n emailId: vm.currentUser.emailId,\r\n cdpId: vm.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n promises.push(readAndDerivePreferences(readDerivePreferencesRequest));\r\n commonService.executePromises(promises).then(result => {\r\n vm.loaded = true;\r\n });\r\n },\r\n error => errorHandlingService.getException(error),\r\n );\r\n }\r\n }\r\n\r\n function readAndDerivePreferences(readDerivePreferencesRequest) {\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(readDerivePreferencesRequest)\r\n .then(\r\n result => {\r\n let phones = [];\r\n let _allPhones = [];\r\n phones = _.map(result.d.results[0].Partner_Contact.results, item => ({\r\n consumeNumber: item.ConsNumber,\r\n phone: item.PhoneNumber,\r\n type: item.Type,\r\n notDisturbStart: item.DND_Start_TIime,\r\n notDisturbEnd: item.DND_Stop_Time,\r\n preferredPhone: item.Primary,\r\n addressNumber: item.AddrNumber,\r\n // remark: item.Remark\r\n }));\r\n phones.forEach(element => {\r\n // if(element.remark === '') {\r\n _allPhones.push(element);\r\n // }\r\n });\r\n vm.data.phoneNumbers = _.uniq(_allPhones, 'phone');\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.data,\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n $scope.$on(assetService.events.refreshPSLandingPage, () => {\r\n init();\r\n });\r\n\r\n $scope.$on(assetService.events.refreshPreferredPhone, () => {\r\n const sessionDataValue = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n const readDerivePreferencesRequest = {\r\n businessPartnerId: sessionDataValue.primaryBp,\r\n emailId: sessionDataValue.currentUser.email,\r\n cdpId: sessionDataValue.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n readAndDerivePreferences(readDerivePreferencesRequest);\r\n });\r\n\r\n function getProfileExperiences(payload) {\r\n return profileExperiencesService.sitecore.profileExperiences(payload).then(\r\n result => {\r\n if (result) {\r\n let profileExperiences = null;\r\n\r\n profileExperiences = _.map(\r\n result.profileExperiences,\r\n assetService.strings.experienceName,\r\n );\r\n profileExperiences = _.uniq(profileExperiences);\r\n if (\r\n profileExperiences.includes(\r\n assetService.strings.EXPERIENCES.SC_RESIDENTIAL,\r\n ) &&\r\n profileExperiences.includes(\r\n assetService.strings.EXPERIENCES.MASS_MARKET,\r\n )\r\n ) {\r\n vm.interimMessage = true;\r\n vm.showexperiance = true;\r\n } else if (\r\n profileExperiences.includes(\r\n assetService.strings.EXPERIENCES.MASS_MARKET,\r\n ) ||\r\n profileExperiences.includes(\r\n assetService.strings.EXPERIENCES.MYDUKE_LARGE_BUSINESS,\r\n )\r\n ) {\r\n vm.interimMessage = false;\r\n vm.showexperiance = false;\r\n } else {\r\n vm.interimMessage = false;\r\n vm.showexperiance = true;\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function accountSearch(accSearchRequest) {\r\n return accountSearchService.sitecore\r\n .accountSearch(accSearchRequest)\r\n .then(results => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results.length > 0) {\r\n const bpData = results.d.ReqToHResNav.results[0].HResToBp.results[0];\r\n vm.primaryBp = bpData.BpNumber;\r\n vm.Accounts = bpData.BpToAcc.results;\r\n }\r\n\r\n if (\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results\r\n .length > 0\r\n ) {\r\n vm.primaryEmail = _.find(\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm\r\n .results,\r\n email => email.Primary,\r\n );\r\n vm.emails = _.map(\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm\r\n .results,\r\n item => ({\r\n email: item.EmailAddress,\r\n addrNumber: item.AddressNumber,\r\n consNumber: item.ConsNumber,\r\n primary: item.Primary,\r\n doNotUse: Object.prototype.hasOwnProperty.call(\r\n item,\r\n assetService.accountSelectorStrings.DoNotUse,\r\n )\r\n ? item.DoNotUse\r\n : false,\r\n isNew: null,\r\n }),\r\n );\r\n\r\n vm.emails.forEach(element => {\r\n _allEmails.push(element);\r\n });\r\n\r\n vm.emailAccounts = _.map(\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results,\r\n item => ({\r\n name: item.CustomerName,\r\n addressNumber: item.AddressNumber,\r\n }),\r\n );\r\n\r\n vm.data.emailAccounts = vm.emailAccounts;\r\n vm.data.restToBp = {\r\n bpNumber: vm.primaryBp,\r\n };\r\n\r\n vm.data.emailSubscriptions = _.uniq(_allEmails, 'email');\r\n vm.currentUser = vm.data.currentUser;\r\n vm.data.primaryBp = vm.primaryBp;\r\n vm.data.Accounts = vm.Accounts;\r\n vm.data.interimMessage = vm.interimMessage;\r\n const accUniq = _.uniq(vm.Accounts, 'acc');\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.data,\r\n );\r\n return accUniq;\r\n }\r\n });\r\n }\r\n\r\n function getDeepLinkedPrimaryBP() {\r\n return getDeepLinkedPrimaryBPService.sitecore.getDeepLinkedPrimaryBP().then(\r\n result => {\r\n return result;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n if (!assetService.apiConfig.useLocalHost) {\r\n // 1. getLoggedInUserDetailsService.getAuthUserDetails() => to retrieve email and cdpid\r\n // 2. Get Profile Experiences => if Legacy, no futher calls required and call Load. If No, continue to below\r\n // 3. getRelatedBpforRegistration => To retrieve BP associated with profile\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.data.email = results.Value;\r\n vm.data.currentUser.cdpId = results.Key;\r\n vm.data.currentUser.email = results.Value;\r\n const requestData = {\r\n emailId: vm.data.email,\r\n internalIdentifier: vm.data.currentUser.cdpId,\r\n };\r\n const relatedBpPayload = {\r\n emailId: vm.data.email,\r\n action: assetService.serviceActions.searchISUByEmail.GET_BP_A,\r\n };\r\n getProfileExperiences(requestData).then(\r\n () => {\r\n if (!vm.interimMessage && !vm.showexperiance) {\r\n load();\r\n } else {\r\n getRelatedBpforRegistration.sitecore\r\n .GetRelatedBp(relatedBpPayload)\r\n .then(\r\n result => {\r\n if (\r\n result.d.RequestToMessagesNav.results[0].Type.toUpperCase() ===\r\n 'S'\r\n ) {\r\n if (\r\n result.d.RequestToResponseNav.results.length === 1\r\n ) {\r\n vm.primaryBp =\r\n result.d.RequestToResponseNav.results[0].BusinessPartner;\r\n load();\r\n } else {\r\n //throw Page level error message if profile is associated with multiple BP\r\n vm.multipleBpPresent = true;\r\n vm.loaded = true;\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors)\r\n $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n () => {},\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n () => {},\r\n );\r\n } else {\r\n vm.currentUser = {\r\n businessPartnerId: '',\r\n emailId: '', // Get Primary Bp\r\n cdpId: '', // Get CDPID\r\n };\r\n\r\n vm.primaryBp = vm.currentUser.businessPartnerId;\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('RecurringContributionsManage', RecurringContributionsManage);\r\n\r\nRecurringContributionsManage.$inject = [\r\n 'assetService',\r\n '$state',\r\n 'sessionStorageService',\r\n '$scope',\r\n '$anchorScroll',\r\n];\r\n\r\nfunction RecurringContributionsManage(\r\n assetService,\r\n $state,\r\n sessionStorageService,\r\n $scope,\r\n $anchorScroll,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.customerAssistanceStorage = null;\r\n vm.data = {\r\n customerAssistance: null,\r\n isEnrolled: false,\r\n };\r\n vm.hideHeader = false;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n vm.data.customerAssistance = vm.customerAssistanceStorage;\r\n vm.data.isEnrolled =\r\n vm.customerAssistanceStorage.status !==\r\n assetService.recurringContributionsButtons.NOT_ENROLLED;\r\n }\r\n\r\n function load() {\r\n vm.customerAssistanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.customerAssistance,\r\n );\r\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_TYPE);\r\n setModels();\r\n }\r\n\r\n $scope.$on(\r\n assetService.strings.RECURRING_CONTRIBUTIONS.REDIRECT_TO,\r\n (_, event, url) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n url = url || '';\r\n window.location.href = url;\r\n },\r\n );\r\n $scope.$on(assetService.strings.RECURRING_CONTRIBUTIONS.SCROLL_TOP, () =>\r\n $anchorScroll(),\r\n );\r\n $scope.$on(\r\n assetService.strings.RECURRING_CONTRIBUTIONS.HIDE_HEADER,\r\n (_, bool) => (vm.hideHeader = bool || false),\r\n );\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-plusplus */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-nested-ternary */\r\n/* eslint-disable no-undef */\r\nfunction ccRateAnalysisController(\r\n ccMeterSelectorService,\r\n accountSearchService,\r\n errorHandlingService,\r\n genericHelperService,\r\n getInvoiceListService,\r\n getInvoiceDetailsService,\r\n getRateComparisonService,\r\n sessionStorageService,\r\n commonService,\r\n assetService,\r\n $location,\r\n $scope,\r\n $element,\r\n $window,\r\n $http,\r\n $timeout,\r\n $rootScope,\r\n getLoggedInUserDetailsService,\r\n energyService,\r\n getRateComparisonPdfService,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n const vm = this;\r\n vm.meterText = '';\r\n vm.billDate = new Date();\r\n vm.currentRateCategory = '';\r\n vm.meterObject = {};\r\n vm.accountSearchItems = [];\r\n vm.accountSearchArray = [];\r\n vm.invoiceListArray = [];\r\n vm.invoiceDetailsArray = [];\r\n vm.rateHistory = {};\r\n vm.rateHistoryText = '';\r\n vm.rateHistoryArray = [];\r\n vm.rateHistoryItems = [];\r\n vm.rateAlternate = {};\r\n vm.rateAlternateText = '';\r\n vm.rateAlternateIndex = 0;\r\n vm.rateAlternateArray = [];\r\n vm.rateAlternateItems = [];\r\n vm.rateComparison = {};\r\n vm.rateSpinner = true;\r\n vm.isBlankState = false;\r\n vm.isNoAltRate = false;\r\n vm.isBlankStateNonAMI = false;\r\n vm.contractAccountId = '';\r\n vm.showToast = false;\r\n vm.isTileDescriptionElig = false;\r\n $rootScope.roleBase = {};\r\n // eslint-disable-next-line no-use-before-define\r\n vm.closeToast = closeToast;\r\n vm.showToast = false;\r\n // eslint-disable-next-line no-use-before-define\r\n vm.attributePush = attributePush;\r\n\r\n vm.businessFunction = $('#hdn-plan').attr('businessFunction');\r\n vm.headLine = $('#hdn-planHeadLine').attr('headLine');\r\n vm.altSubhead = $('#hdn-plan').attr('altSubhead');\r\n vm.pdfText = $('#hdn-plan').attr('pdfText');\r\n vm.currentSubhead = $('#hdn-plan').attr('currentSubhead');\r\n vm.errorHeadline = $('#hdn-plan').attr('errorHeadline');\r\n vm.erorContent = $('#hdn-plan').attr('erorContent');\r\n vm.meterSelector = $('#hdn-plan').attr('meterSelector');\r\n\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n vm.is_mobile =\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ||\r\n $(window).width() < 767;\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n $(window).resize(() => {\r\n vm.is_mobile = $(window).width() < 767;\r\n });\r\n\r\n function selectDownloadPdf() {\r\n // will update this to use service.\r\n const params = {\r\n ContractAccount: vm.contractAccountId,\r\n MeterNumber: vm.meterObject.meterNumber,\r\n AltRatePlan: vm.rateAlternateText,\r\n };\r\n $rootScope.download = true;\r\n attributePush(\r\n `workFlow:${vm.businessFunction}`,\r\n `buttonText:${vm.pdfText}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${vm.rateHistoryText}`,\r\n `addedEvent:${vm.rateAlternateText}`,\r\n );\r\n return getRateComparisonPdfService.sitecore\r\n .getRateComparisonPdf(params)\r\n .then(result => {\r\n try {\r\n if (result && result.d) {\r\n const data = result.d.Value;\r\n if (data) {\r\n const hexValue = data;\r\n if (hexValue) {\r\n // eslint-disable-next-line no-inner-declarations\r\n function hexToBase64(string) {\r\n return btoa(\r\n string\r\n .match(/\\w{2}/g)\r\n .map(arra => String.fromCharCode(parseInt(arra, 16)))\r\n .join(''),\r\n );\r\n }\r\n const base64Value = hexToBase64(hexValue);\r\n const byteCharacters = atob(base64Value);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let inte = 0; inte < byteCharacters.length; inte++) {\r\n byteNumbers[inte] = byteCharacters.charCodeAt(inte);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const file = new Blob([byteArray], { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n window.open(fileURL);\r\n }\r\n } else {\r\n $rootScope.download = false;\r\n vm.showToast = true;\r\n vm.data = {};\r\n vm.data.option = 'error';\r\n vm.data.messageOption =\r\n 'Sorry we are not able to download at this time';\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${result.d.Number}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${result.d.Message}`,\r\n `addedEvent:${vm.data.messageOption}`,\r\n );\r\n }\r\n } else {\r\n $rootScope.download = false;\r\n vm.showToast = true;\r\n vm.data = {};\r\n vm.data.option = 'error';\r\n vm.data.messageOption =\r\n 'Sorry we are not able to download at this time';\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${result.d.Number}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${result.d.Message}`,\r\n `addedEvent:${vm.data.messageOption}`,\r\n );\r\n }\r\n } catch (error) {\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${vm.errorHeadline}`,\r\n `headline:${vm.headLine}`,\r\n );\r\n broadcastService.failedStateNotificationTriggered(true);\r\n }\r\n });\r\n }\r\n\r\n function getRole() {\r\n switch (globalAccountInfo.accountSelected.role) {\r\n case assetService.roles.owner:\r\n $rootScope.roleBase.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n $rootScope.roleBase.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n $rootScope.roleBase.viewerRole = true;\r\n break;\r\n default:\r\n $rootScope.roleBase.viewerRole = true;\r\n }\r\n }\r\n\r\n function closeToast() {\r\n vm.showToast = false;\r\n }\r\n\r\n vm.closeToast = closeToast;\r\n vm.selectDownloadPdf = selectDownloadPdf;\r\n function getRateComparisonDetails(value, alternatePlan) {\r\n if (value === 'Yearly Total') {\r\n vm.temp = vm.getRateComparisonResponse.d.RateAnalysis.MonthYear.results.filter(\r\n data => data.Month === 'Yearly' || data.Month === value,\r\n );\r\n } else {\r\n vm.temp = vm.getRateComparisonResponse.d.RateAnalysis.MonthYear.results.filter(\r\n data =>\r\n data.Month === moment(value).format('MM') &&\r\n data.Year === moment(value).format('YYYY'),\r\n );\r\n }\r\n vm.isTileDescriptionElig = value === 'Yearly Total';\r\n const item = vm.temp[0].CurrentPlan;\r\n vm.rateHistory = {\r\n TotalCost:\r\n parseFloat(item.TotalCost.split('.')).toLocaleString('en') +\r\n '.' +\r\n item.TotalCost.split('.')[1],\r\n CurrentRateCategory: item.CurrentRateCategory,\r\n rateData: _.map(item.CurrentPlanDetails.results, valu => ({\r\n Description: valu.Name,\r\n Consumption:\r\n valu.Unit === '$'\r\n ? `${valu.Unit}${valu.Value} per month`\r\n : `${valu.Value} ${valu.Unit}`,\r\n })),\r\n };\r\n const altItem = vm.temp[0].AlternatePlan.results.filter(\r\n altData => altData.AltRateType === alternatePlan,\r\n );\r\n vm.rateAlternate = {\r\n TotalCost:\r\n parseFloat(altItem[0].TotalCost.split('.')).toLocaleString('en') +\r\n '.' +\r\n altItem[0].TotalCost.split('.')[1],\r\n AltRateType: altItem[0].AltRateType,\r\n rateData: _.map(altItem[0].AlternatePlanDetails.results, valu => ({\r\n Description: valu.Name,\r\n Consumption:\r\n valu.Unit === '$'\r\n ? `${valu.Unit}${valu.Value} per month`\r\n : `${valu.Value} ${valu.Unit}`,\r\n })),\r\n };\r\n\r\n function comparer(otherArray) {\r\n return function(current) {\r\n return (\r\n otherArray.filter(other => other.Description === current.Description)\r\n .length === 0\r\n );\r\n };\r\n }\r\n vm.onlyInrateAlternate = vm.rateAlternate.rateData.filter(\r\n comparer(vm.rateHistory.rateData),\r\n );\r\n vm.onlyInrateHistory = vm.rateHistory.rateData.filter(\r\n comparer(vm.rateAlternate.rateData),\r\n );\r\n\r\n angular.forEach(vm.onlyInrateHistory, value1 => {\r\n const tempInRate = {\r\n Description: value1.Description,\r\n Consumption: 'N/A',\r\n };\r\n\r\n vm.rateAlternate.rateData.unshift(tempInRate);\r\n });\r\n angular.forEach(vm.onlyInrateAlternate, value2 => {\r\n const tempInAlt = {\r\n Description: value2.Description,\r\n Consumption: 'N/A',\r\n };\r\n vm.rateHistory.rateData.push(tempInAlt);\r\n });\r\n if (vm.onlyInrateHistory.length > 0) {\r\n vm.temprateHistoryTile = [];\r\n angular.forEach(vm.rateHistory.rateData, currentTilePos => {\r\n const itemPostion = vm.rateAlternate.rateData.findIndex(\r\n xxxx => xxxx.Description === currentTilePos.Description,\r\n );\r\n vm.temprateHistoryTile[itemPostion] = currentTilePos;\r\n });\r\n vm.rateHistory.rateData = vm.temprateHistoryTile;\r\n }\r\n }\r\n function selectRateHistory(date, onload) {\r\n vm.rateHistoryText = date.text;\r\n vm.rateHistoryDate = date.date;\r\n if (!onload) {\r\n attributePush(\r\n `workFlow:${vm.businessFunction}`,\r\n `buttonText:${vm.rateHistoryText}`,\r\n `headline:${vm.headLine}`,\r\n `subheadline:${vm.currentSubhead}`,\r\n );\r\n }\r\n getRateComparisonDetails(date.date, vm.rateAlternateText);\r\n }\r\n vm.selectRateHistory = selectRateHistory;\r\n function selectRateAlternate(rate) {\r\n vm.rateAlternateText = rate.text;\r\n attributePush(\r\n `workFlow:${vm.businessFunction}`,\r\n `buttonText:${vm.rateAlternateText}`,\r\n `headline:${vm.headLine}`,\r\n `subheadline:${vm.altSubhead}`,\r\n );\r\n getRateComparisonDetails(vm.rateHistoryDate, vm.rateAlternateText);\r\n }\r\n vm.selectRateAlternate = selectRateAlternate;\r\n function getRateHistory() {\r\n vm.rateSpinner = true;\r\n const params = {\r\n ContractAccount: vm.contractAccountId,\r\n meterNumber: vm.meterObject.meterNumber,\r\n };\r\n\r\n return getRateComparisonService.sitecore\r\n .getRateComparison(params)\r\n .then(result => {\r\n try {\r\n if (result.d.Message.Type === 'S') {\r\n vm.getRateComparisonResponse = result;\r\n vm.isAlternateTileEligible = result.d.Message.MessageNum === '431';\r\n if (vm.isAlternateTileEligible) {\r\n vm.rateAlternateItems = _.map(\r\n result.d.RateAnalysis.AlternativePlan.results,\r\n data => ({\r\n text: data.AltRatePlan,\r\n value: data.AltRatePlan,\r\n }),\r\n );\r\n vm.tempAlternate =\r\n result.d.RateAnalysis.MonthYear.results[\r\n result.d.RateAnalysis.MonthYear.results.length - 1\r\n ].AlternatePlan.results;\r\n const res = vm.tempAlternate.reduce(function(prev, current) {\r\n return prev.TotalCost < current.TotalCost ? prev : current;\r\n });\r\n vm.rateAlternateText = res.AltRateType;\r\n vm.rateHistoryItems = _.map(\r\n result.d.RateAnalysis.MonthYear.results,\r\n data => ({\r\n text:\r\n data.Month === 'Yearly'\r\n ? 'Yearly Total'\r\n : moment(\r\n moment(`${data.Month}/01/${data.Year}`, 'MM/DD/YYYY'),\r\n ).format('MMMM YYYY'),\r\n value:\r\n data.Month === 'Yearly'\r\n ? 'Yearly Total'\r\n : moment(\r\n moment(`${data.Month}/01/${data.Year}`, 'MM/DD/YYYY'),\r\n ).format('MMMM YYYY'),\r\n date:\r\n data.Month === 'Yearly'\r\n ? 'Yearly Total'\r\n : moment(`${data.Month}/01/${data.Year}`, 'MM/DD/YYYY'),\r\n }),\r\n );\r\n vm.rateHistoryItems = _.orderBy(\r\n vm.rateHistoryItems,\r\n ['date'],\r\n ['desc', 'asc'],\r\n );\r\n vm.rateHistoryText =\r\n vm.rateHistoryItems[vm.rateHistoryItems.length - 1].text;\r\n vm.rateHistoryDate =\r\n vm.rateHistoryItems[vm.rateHistoryItems.length - 1].date;\r\n vm.selectRateHistory(\r\n vm.rateHistoryItems[vm.rateHistoryItems.length - 1],\r\n true,\r\n );\r\n } else if (result.d.Message.MessageNum === '926') {\r\n const item =\r\n result.d.RateAnalysis.MonthYear.results[0].CurrentPlan;\r\n\r\n vm.rateHistory = {\r\n TotalCost: item.TotalCost,\r\n CurrentRateCategory: item.CurrentRateCategory,\r\n rateData: _.map(item.CurrentPlanDetails.results, valu => ({\r\n Description: valu.Name,\r\n Consumption:\r\n valu.Value !== null && valu.Value !== ''\r\n ? valu.Unit === '$'\r\n ? `${valu.Unit}${valu.Value} per month`\r\n : `${valu.Value} ${valu.Unit}`\r\n : 'N/A',\r\n })),\r\n };\r\n vm.eligibleDate = moment(\r\n moment(`${result.d.Message.Messagev1}`, 'YYYYMMDD'),\r\n ).format('MM/DD/YYYY');\r\n }\r\n vm.rateSpinner = false;\r\n } else {\r\n if (\r\n result.d.Message.Type === 'E' &&\r\n result.d.Message.MessageNum === '927'\r\n ) {\r\n vm.isNoAltRate = true;\r\n vm.isBlankState = false;\r\n vm.rateSpinner = false;\r\n vm.isBlankStateNonAMI = false;\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${result.d.Message.MessageNum}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${result.d.Message.Message}`,\r\n `addedEvent:${vm.errorHeadline}`,\r\n );\r\n } else {\r\n vm.isNoAltRate = false;\r\n vm.isBlankStateNonAMI = true;\r\n vm.rateSpinner = false;\r\n vm.isBlankState = false;\r\n setBlankState();\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${result.d.Message.MessageNum}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${result.d.Message.Message}`,\r\n `addedEvent:${vm.errorHeadline}`,\r\n );\r\n }\r\n }\r\n } catch (error) {\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${vm.errorHeadline}`,\r\n `headline:${vm.headLine}`,\r\n );\r\n broadcastService.failedStateNotificationTriggered(true);\r\n }\r\n });\r\n }\r\n\r\n function setBlankState(){\r\n vm.blankStateList = vm.accountSearchData.filter(\r\n items =>\r\n items.meterType === 'NON-AMI',\r\n );\r\n vm.blankListArray = [];\r\n vm.blankStateList.forEach(elem => {\r\n vm.blankListArray.push({\r\n value: {\r\n meterNumber: elem.meterNumber,\r\n meterType: elem.meterType,\r\n netMeter: elem.netMeter,\r\n serviceType: elem.serviceType,\r\n activeDate: elem.activeDate,\r\n MoveOutDate: elem.MoveOutDate,\r\n imageUrl:\r\n elem.serviceType === energyService.serviceType.Electric\r\n ? vm.electricIcon\r\n : '',\r\n },\r\n text: `${elem.serviceType} Meter - ${elem.meterNumber}`,\r\n });\r\n });\r\n if (vm.blankListArray.length > 0) {\r\n vm.accountSearchItems = genericHelperService.createDropdownList(\r\n vm.blankListArray,\r\n );\r\n selectMeter(vm.accountSearchItems[0], true);\r\n }\r\n }\r\n\r\n function selectMeter(meterSelected, fromLoad) {\r\n vm.meterObject.meterNumber = meterSelected.value.meterNumber;\r\n vm.meterObject.meterType = meterSelected.value.meterType;\r\n vm.meterObject.netMeter = meterSelected.value.netMeter;\r\n vm.meterObject.serviceType = meterSelected.value.serviceType;\r\n vm.meterObject.unitOfMeasure =\r\n meterSelected.value.serviceType === 'Gas' ? 'CCF' : 'kWh';\r\n vm.meterObject.periodType = 'Months';\r\n vm.meterText = meterSelected.text;\r\n vm.meterType =\r\n meterSelected.value.serviceType === 'Electric'\r\n ? 'Electric Meter'\r\n : 'Gas Meter';\r\n if (!fromLoad) {\r\n attributePush(\r\n `workFlow:${vm.businessFunction}`,\r\n `buttonText:${vm.meterType}`,\r\n `headline:${vm.headLine}`,\r\n `subheadline:${vm.meterSelector}`,\r\n );\r\n }\r\n if(!vm.isBlankStateNonAMI)\r\n getRateHistory();\r\n }\r\n\r\n vm.selectMeter = selectMeter;\r\n\r\n function csrAttribute(...theArguments) {\r\n vm.arrayElements = theArguments;\r\n vm.arrayElements.push(`headline:${vm.headLine}`);\r\n commongaTaggingService.attributePush(vm.arrayElements);\r\n }\r\n vm.csrAttribute = csrAttribute;\r\n\r\n function getAccountList() {\r\n const params = {\r\n contractAccountId: vm.contractAccountId,\r\n };\r\n return accountSearchService.sitecore\r\n .cacheAccountSearch(params)\r\n .then(result => {\r\n try {\r\n if (result) {\r\n const dataTemp = [];\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(\r\n items => {\r\n items.PropToInst.results.forEach(outData =>\r\n dataTemp.push(outData),\r\n );\r\n },\r\n );\r\n vm.electricIcon = $('#hdn-plan').attr('electricIcon');\r\n vm.accountSearchData = _.map(dataTemp, outData => ({\r\n meterNumber: outData.MeterNumber,\r\n meterType: outData.MeterType,\r\n netMeter: outData.IsSmartGridMeterInd,\r\n activeDate: new Date(outData.ActiveDate),\r\n activeStatus:\r\n outData.MoveOutDate &&\r\n Date.parse(outData.MoveOutDate) > new Date().getTime()\r\n ? '(Active)'\r\n : '(Closed)',\r\n MoveOutDate: new Date(outData.MoveOutDate),\r\n serviceType:\r\n outData.Division === '02'\r\n ? energyService.serviceType.Gas\r\n : energyService.serviceType.Electric,\r\n }));\r\n vm.arraySearchList = vm.accountSearchData.filter(\r\n items =>\r\n items.serviceType === energyService.serviceType.Electric &&\r\n items.meterType === 'AMI' &&\r\n items.MoveOutDate &&\r\n Date.parse(items.MoveOutDate) > new Date().getTime(),\r\n );\r\n vm.accountSearchArray = [];\r\n vm.arraySearchList.forEach(elem => {\r\n vm.accountSearchArray.push({\r\n value: {\r\n meterNumber: elem.meterNumber,\r\n meterType: elem.meterType,\r\n netMeter: elem.netMeter,\r\n serviceType: elem.serviceType,\r\n activeDate: elem.activeDate,\r\n MoveOutDate: elem.MoveOutDate,\r\n imageUrl:\r\n elem.serviceType === energyService.serviceType.Electric\r\n ? vm.electricIcon\r\n : '',\r\n },\r\n text: `${elem.serviceType} Meter - ${elem.meterNumber}`,\r\n });\r\n });\r\n // eslint-disable-next-line no-magic-numbers\r\n if (vm.accountSearchArray.length > 0) {\r\n vm.accountSearchItems = genericHelperService.createDropdownList(\r\n vm.accountSearchArray,\r\n );\r\n vm.isBlankState = false;\r\n vm.isBlankStateNonAMI = false;\r\n vm.isNoAltRate = false;\r\n selectMeter(vm.accountSearchItems[0], true);\r\n } else {\r\n vm.rateSpinner = false;\r\n vm.isBlankStateNonAMI = true;\r\n vm.isNoAltRate = false;\r\n vm.isBlankState = false;\r\n setBlankState();\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${vm.errorHeadline}`,\r\n `headline:${vm.headLine}`,\r\n );\r\n }\r\n } else {\r\n vm.rateSpinner = false;\r\n vm.isBlankState = true;\r\n vm.isNoAltRate = false; \r\n vm.isBlankStateNonAMI = false; \r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${result.d.ReqToMesNav.results[0].MessageNum}`,\r\n `headline:${vm.headLine}`,\r\n `addedSpec:${result.d.ReqToMesNav.results[0].Message}`,\r\n `addedEvent:${vm.errorHeadline}`,\r\n );\r\n }\r\n } catch (error) {\r\n attributePush(\r\n `workFlow: error ${vm.businessFunction}`,\r\n `buttonText:${vm.errorHeadline}`,\r\n `headline:${vm.headLine}`,\r\n );\r\n broadcastService.failedStateNotificationTriggered(true);\r\n }\r\n });\r\n }\r\n\r\n function load() {\r\n getRole();\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n vm.rateSpinner = true;\r\n getAccountList();\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo) {\r\n if ('accountSelected' in globalAccountInfo) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n load();\r\n }\r\n }\r\n });\r\n}\r\napp.controller('ccRateAnalysisController', ccRateAnalysisController);\r\n\r\nccRateAnalysisController.$inject = [\r\n 'ccMeterSelectorService',\r\n 'accountSearchService',\r\n 'errorHandlingService',\r\n 'genericHelperService',\r\n 'getInvoiceListService',\r\n 'getInvoiceDetailsService',\r\n 'getRateComparisonService',\r\n 'sessionStorageService',\r\n 'commonService',\r\n 'assetService',\r\n '$location',\r\n '$scope',\r\n '$element',\r\n '$window',\r\n '$http',\r\n '$timeout',\r\n '$rootScope',\r\n 'getLoggedInUserDetailsService',\r\n 'energyService',\r\n 'getRateComparisonPdfService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('ServiceOrderManager', ServiceOrderManager);\r\n\r\nServiceOrderManager.$inject = ['assetService', '$state'];\r\n\r\nfunction ServiceOrderManager(assetService, $state) {\r\n /* --------------Scope Vars-----------------------*/\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n function load() {\r\n $state.go(assetService.serviceOrderRouteState.SERVICE_ORDER);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveS2MoveOutAddress', ccMoveS2MoveOutAddress);\r\n\r\nccMoveS2MoveOutAddress.$inject = [\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction ccMoveS2MoveOutAddress(\r\n $scope,\r\n $window,\r\n assetService,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n let objectEventDrop = {\r\n \"Select Address\": saveData\r\n };\r\n\r\n vm.move = {};\r\n vm.address = \"\";\r\n\r\n vm.moveOutAddress = [];\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n function formatCity(city) {\r\n city = city.replace(/[A-Za-z]+/g, function(match){\r\n return (match.trim()[0]);\r\n });\r\n\r\n city = city.replace(/\\s/g, '');\r\n\r\n return city;\r\n };\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData(value) {\r\n vm.AddressDatTemp = vm.AddressData[value];\r\n }\r\n\r\n function saveDataMoveOutAddress() {\r\n if (vm.AddressDatTemp) {\r\n vm.move.moveOutAddress = vm.AddressDatTemp;\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n console.log(vm.move);\r\n }\r\n\r\n }\r\n\r\n function loadDataMoveOutAddress() {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n if (vm.move.moveOutAddress) {\r\n vm.addressSelect = vm.move.moveOutAddress;\r\n vm.address = generateAddress(vm.addressSelect);\r\n }\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n loadDataMoveOutAddress()\r\n }\r\n\r\n\r\n\r\n function selectAddress() {\r\n let temp = vm.AddressData.map(function(value, index) {\r\n return { \"text\" : generateAddress(value) , \"value\": index }\r\n });\r\n console.log(temp);\r\n return temp\r\n }\r\n\r\n function generateAddress(add) {\r\n return `${add.streetAddress} ${add.state} ${formatCity(add.city)} ${add.zipCode}`\r\n }\r\n\r\n $scope.$on(\"dropdown\", function (event, data) {\r\n objectEventDrop[data.eventDrop](data.value);\r\n });\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveDataMoveOutAddress();\r\n loadDataMoveOutAddress();\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveS3ScheduleMoveOut', ccMoveS3ScheduleMoveOut);\r\n\r\nccMoveS3ScheduleMoveOut.$inject = [\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction ccMoveS3ScheduleMoveOut(\r\n $scope,\r\n $window,\r\n assetService,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n vm.hourStop = [];\r\n\r\n\r\n\r\n vm.move = {};\r\n vm.scheduleMoveOut = {};\r\n vm.scheduleMoveOut.dateStop =\"\";\r\n vm.scheduleMoveOut.comments =\"\";\r\n\r\n vm.selectButton = function (value) {\r\n\r\n if (value == vm.scheduleMoveOut.hourStop) {\r\n return \"select-btn\"\r\n }\r\n }\r\n\r\n vm.nameAccount = function (name,account) {\r\n return `${name} (#${account})`\r\n };\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.saveHour = function (value) {\r\n vm.scheduleMoveOut.hourStop = value;\r\n }\r\n\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData() {\r\n vm.move.scheduleMoveOut = {};\r\n vm.move.scheduleMoveOut = vm.scheduleMoveOut;\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n }\r\n\r\n\r\n\r\n function loadData () {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n if(vm.move.scheduleMoveOut) {\r\n vm.scheduleMoveOut = vm.move.scheduleMoveOut;\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveData();\r\n console.log(vm.move);\r\n });\r\n /* ---------------Initialization-------------------*/\r\n function save () {\r\n $window.scrollTo(0, 0);\r\n loadData();\r\n }\r\n\r\n const init = function () {\r\n save();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveS2LastBillAddress', ccMoveS2LastBillAddress);\r\n\r\nccMoveS2LastBillAddress.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$window',\r\n 'commonService',\r\n 'apiConfigService',\r\n 'genericHelperService',\r\n 'currentManagerFactory',\r\n];\r\n\r\nfunction ccMoveS2LastBillAddress(\r\n sessionStorageService,\r\n assetService,\r\n $state,\r\n $scope,\r\n $window,\r\n commonService,\r\n apiConfigService,\r\n genericHelperService,\r\n currentManagerFactory,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.showNewAddress = false;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n let objectEventDrop = {\r\n 'Select Address': saveData,\r\n City: filterCity,\r\n State: saveState,\r\n };\r\n\r\n vm.move = {};\r\n vm.address = '';\r\n\r\n vm.lastBillAddress = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n function filterCity(value) {\r\n vm.lastBillAddress.city = value;\r\n for (let index = 0; index < vm.cities.cities.length; index++) {\r\n if (vm.cities.cities[index].city === vm.lastBillAddress.city) {\r\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(vm.cities.cities[index].states);\r\n vm.stateDefault = 'State';\r\n vm.lastBillAddress.state = '';\r\n }\r\n }\r\n }\r\n\r\n function saveState(value) {\r\n vm.lastBillAddress.state = value;\r\n }\r\n\r\n function formatCity(city) {\r\n city = city.replace(/[A-Za-z]+/g, match => (match.trim()[0]));\r\n\r\n city = city.replace(/\\s/g, '');\r\n\r\n return city;\r\n }\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData(value) {\r\n vm.AddressDatTemp = vm.AddressData[value];\r\n }\r\n\r\n function saveDataLastBillAddress() {\r\n if (vm.showNewAddress) {\r\n vm.move.lastBillAddress = vm.lastBillAddress;\r\n } else if (vm.AddressDatTemp) {\r\n vm.move.lastBillAddress = vm.AddressDatTemp;\r\n console.log(vm.move.lastBillAddress);\r\n }\r\n sessionStorageService.set(assetService.storageKeys.move, vm.move);\r\n }\r\n\r\n function loadDataLastBillAddress() {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n if (vm.move.lastBillAddress) {\r\n vm.addressSelect = vm.move.lastBillAddress;\r\n vm.address = generateAddress(vm.addressSelect);\r\n }\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n loadDataLastBillAddress();\r\n }\r\n\r\n function selectAddress() {\r\n let temp = vm.AddressData.map((value, index) => ({ text: generateAddress(value), value: index }));\r\n console.log(temp);\r\n return temp;\r\n }\r\n\r\n function generateAddress(add) {\r\n return `${add.streetAddress} ${add.state} ${formatCity(add.city)} ${add.zipCode}`;\r\n }\r\n\r\n // city\r\n let _urlCities = apiConfigService.getCitiesAndStatesUrl();\r\n\r\n let promises = [getCitiesAndStates()];\r\n commonService.executePromises(promises).then(() => {\r\n setModel();\r\n });\r\n\r\n function getCitiesAndStates() {\r\n return currentManagerFactory.getServiceManager(_urlCities).then(\r\n (result) => {\r\n vm.cities = result;\r\n vm.city = genericHelperService.createDropdownList(vm.cities.cities, 'city', 'city');\r\n },\r\n (error) => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n $scope.$on('dropdown', (event, data) => {\r\n objectEventDrop[data.eventDrop](data.value);\r\n });\r\n\r\n $scope.$on(assetService.events.saveData, (event, data) => {\r\n saveDataLastBillAddress();\r\n loadDataLastBillAddress();\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep3', ccMoveStep3);\r\n\r\nccMoveStep3.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$window',\r\n 'genericHelperService',\r\n];\r\n\r\nfunction ccMoveStep3(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $window,\r\n genericHelperService,\r\n ) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n let objectEventDrop = {\r\n City: filterCity,\r\n State: saveState,\r\n };\r\n\r\n let objectEventRadio = {\r\n location: radioLocation,\r\n mobileHome: radioMobileHome,\r\n };\r\n\r\n vm.move = {};\r\n\r\n vm.moveInAdrressData = {\r\n \"StreetAddress\": \"\",\r\n \"AFSL\": \"\",\r\n \"zipCode\": \"\",\r\n \"state\": \"\",\r\n \"city\": \"\",\r\n \"location\": \"\",\r\n \"mobileHome\": \"\",\r\n \"service\": \"\"\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function radioLocation(value) {\r\n console.log(value);\r\n }\r\n\r\n function radioMobileHome(value) {\r\n vm.moveInAdrressData.mobileHome = value;\r\n }\r\n\r\n function filterCity(value) {\r\n vm.moveInAdrressData.city = value;\r\n console.log(value);\r\n for (let index = 0; index < vm.cities.cities.length; index++) {\r\n if (vm.cities.cities[index].city === vm.moveInAdrressData.city) {\r\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(\r\n vm.cities.cities[index].states,\r\n );\r\n vm.stateDefault = 'State';\r\n vm.moveInAdrressData.state = '';\r\n console.log(vm.cityState);\r\n }\r\n }\r\n }\r\n\r\n function saveState(value) {\r\n vm.moveInAdrressData.state = value;\r\n }\r\n\r\n function saveDataMoveInAddress() {\r\n console.log(vm.move);\r\n vm.move.moveInAdrressData = vm.moveInAdrressData;\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n }\r\n\r\n function loadDataMoveInAddress() {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n loadDataMoveInAddress();\r\n }\r\n\r\n $scope.$on(\"dropdown\", function (event, data) {\r\n objectEventDrop[data.eventDrop](data.value);\r\n });\r\n\r\n $scope.$on(\"CC-RadioButton\", function (event, data) {\r\n objectEventRadio[data.eventDrop](data.value);\r\n });\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveDataMoveInAddress();\r\n console.log(vm.move)\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveS3Install', ccMoveS3Install);\r\n\r\nccMoveS3Install.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$window',\r\n];\r\n\r\nfunction ccMoveS3Install(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $window,\r\n ) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n\r\n vm.move = {};\r\n\r\n vm.services = [\r\n {\r\n \"name\": \"House Electric\",\r\n \"numberAccount\": \"00000000\",\r\n \"price\": 10,\r\n \"active\": false\r\n },\r\n {\r\n \"name\": \"House Street Light\",\r\n \"numberAccount\": \"00000000\",\r\n \"price\": 30,\r\n \"active\": false\r\n },\r\n {\r\n \"name\": \"House Gas\",\r\n \"numberAccount\": \"00000000\",\r\n \"price\": 20,\r\n \"active\": false\r\n },\r\n {\r\n \"name\": \"Barn Gas\",\r\n \"numberAccount\": \"00000000\",\r\n \"price\": 50,\r\n \"active\": false\r\n },\r\n ];\r\n\r\n vm.nameAccount = function (name,account) {\r\n return `${name} (#${account})`\r\n };\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData() {\r\n vm.move.services = vm.services;\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n }\r\n\r\n function loadData () {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n if(vm.move.services) {\r\n vm.services = vm.move.services;\r\n }\r\n\r\n }\r\n $scope.$on(\"CheckBox-Selected\", function (event, data) {\r\n // objectEventRadio[data.eventDrop](data.value);\r\n console.log(vm.services);\r\n });\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveData();\r\n console.log(vm.move);\r\n });\r\n /* ---------------Initialization-------------------*/\r\n function save () {\r\n $window.scrollTo(0, 0);\r\n loadData();\r\n }\r\n\r\n const init = function () {\r\n save();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveS3ScheduleMoveIn', ccMoveS3ScheduleMoveIn);\r\n\r\nccMoveS3ScheduleMoveIn.$inject = [\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction ccMoveS3ScheduleMoveIn(\r\n $scope,\r\n $window,\r\n assetService,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n vm.hourStop = [];\r\n\r\n\r\n\r\n vm.move = {};\r\n vm.scheduleMoveIn = {};\r\n vm.scheduleMoveIn.dateStop =\"\";\r\n vm.scheduleMoveIn.comments =\"\";\r\n\r\n vm.selectButton = function (value) {\r\n\r\n if (value == vm.scheduleMoveIn.hourStop) {\r\n return \"select-btn\"\r\n }\r\n }\r\n\r\n vm.nameAccount = function (name,account) {\r\n return `${name} (#${account})`\r\n };\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.saveHour = function (value) {\r\n vm.scheduleMoveIn.hourStop = value;\r\n }\r\n\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData() {\r\n vm.move.scheduleMoveIn = {};\r\n vm.move.scheduleMoveIn = vm.scheduleMoveIn;\r\n sessionStorageService.set(\"move\", vm.move);\r\n }\r\n\r\n\r\n\r\n function loadData () {\r\n vm.move = sessionStorageService.get(\"move\");\r\n if(vm.move.scheduleMoveIn) {\r\n vm.scheduleMoveIn = vm.move.scheduleMoveIn;\r\n }\r\n console.log(vm.scheduleMoveIn.dateStop);\r\n }\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveData();\r\n console.log(vm.move);\r\n });\r\n /* ---------------Initialization-------------------*/\r\n function save () {\r\n $window.scrollTo(0, 0);\r\n loadData();\r\n }\r\n\r\n const init = function () {\r\n save();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep4NewBil', ccMoveStep4NewBil);\r\n\r\nccMoveStep4NewBil.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$window',\r\n 'genericHelperService',\r\n];\r\n\r\nfunction ccMoveStep4NewBil(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $window,\r\n genericHelperService,\r\n ) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.showNewAddress = false;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n let objectEventDrop = {\r\n \"Select Address\": saveData,\r\n \"City\": filterCity,\r\n \"State\": saveState\r\n };\r\n\r\n vm.move = {};\r\n vm.address = \"\";\r\n\r\n vm.newBillAddress = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n function filterCity(value) {\r\n vm.newBillAddress.city = value;\r\n console.log(value);\r\n for (let index = 0; index < vm.cities.cities.length; index++) {\r\n if (vm.cities.cities[index].city === vm.newBillAddress.city) {\r\n vm.cityState = genericHelperService.convertArraytoDukeDropDownValues(vm.cities.cities[index].states);\r\n vm.stateDefault = \"State\";\r\n vm.newBillAddress.state =\"\";\r\n }\r\n }\r\n }\r\n\r\n function saveState(value) {\r\n vm.newBillAddress.state = value;\r\n }\r\n\r\n function formatCity(city) {\r\n city = city.replace(/[A-Za-z]+/g, function(match){\r\n return (match.trim()[0]);\r\n });\r\n\r\n city = city.replace(/\\s/g, '');\r\n\r\n return city;\r\n };\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function saveData(value) {\r\n vm.AddressDatTemp = vm.AddressData[value];\r\n }\r\n\r\n function saveDataNewBillAddress() {\r\n if (vm.showNewAddress) {\r\n vm.move.newBillAddress = vm.newBillAddress;\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n } else if (vm.AddressDatTemp) {\r\n vm.move.newBillAddress = vm.AddressDatTemp;\r\n console.log(vm.move.newBillAddress);\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n }\r\n\r\n }\r\n\r\n function loadDataNewBillAddress() {\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n console.log(vm.move);\r\n if (vm.move.newBillAddress) {\r\n vm.addressSelect = vm.move.newBillAddress;\r\n vm.address = generateAddress(vm.addressSelect);\r\n\r\n }\r\n\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n loadDataNewBillAddress();\r\n }\r\n\r\n function selectAddress() {\r\n let temp = vm.AddressData.map(function(value, index) {\r\n return { \"text\" : generateAddress(value) , \"value\": index }\r\n });\r\n console.log(temp);\r\n return temp\r\n }\r\n\r\n function generateAddress(add) {\r\n return `${add.streetAddress} ${add.state} ${formatCity(add.city)} ${add.zipCode}`\r\n }\r\n\r\n $scope.$on(\"dropdown\", function (event, data) {\r\n objectEventDrop[data.eventDrop](data.value);\r\n });\r\n\r\n $scope.$on(assetService.events.saveData, function (event, data) {\r\n saveDataNewBillAddress();\r\n loadDataNewBillAddress();\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep4Review', ccMoveStep4Review);\r\n\r\nccMoveStep4Review.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$window',\r\n];\r\n\r\nfunction ccMoveStep4Review(\r\n sessionStorageService,\r\n assetService,\r\n $window,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n let options = { weekday: 'long' , month: 'long', day: 'numeric'};\r\n const vm = this;\r\n vm.addressStop = \"\";\r\n vm.addressStart = \"\";\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n vm.totalPrice = function (prices) {\r\n let result = 0;\r\n for (const price of prices) {\r\n if (price.active)\r\n {\r\n result = result + price.price;\r\n }\r\n }\r\n\r\n return result\r\n }\r\n\r\n function formatCity(city) {\r\n city = city.replace(/[A-Za-z]+/g, function(match){\r\n return (match.trim()[0]);\r\n });\r\n\r\n city = city.replace(/\\s/g, '');\r\n\r\n return city;\r\n };\r\n\r\n\r\n function generateAddress(add) {\r\n return `${add.streetAddress} ${add.state} ${formatCity(add.city)} ${add.zipCode}`\r\n }\r\n\r\n vm.nameAccount = function (name,account) {\r\n return `${name} (#${account})`\r\n};\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.move = sessionStorageService.get(assetService.storageKeys.move);\r\n console.log(vm.move);\r\n\r\n vm.addressStop = generateAddress(vm.move.moveOutAddress);\r\n vm.addressStart = generateAddress(vm.move.lastBillAddress);\r\n vm.dateStop = new Date(vm.move.scheduleMoveOut.dateStop);\r\n //vm.dateStart = new Date(vm.move.scheduleMoveIn.dateStart);\r\n //vm.dateStart = vm.dateStart.toLocaleDateString(\"en\", options);\r\n vm.dateStop = vm.dateStop.toLocaleDateString(\"en\", options);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep1ContactInfo', ccMoveStep1ContactInfo);\r\n\r\nccMoveStep1ContactInfo.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$window',\r\n];\r\n\r\nfunction ccMoveStep1ContactInfo(\r\n sessionStorageService,\r\n assetService,\r\n $state,\r\n $scope,\r\n $window,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* Contact Info */\r\n\r\n vm.phoneType = [\r\n { value: 'mobile', text: 'Mobile' },\r\n { value: 'house', text: 'House' },\r\n ];\r\n vm.contactPref = [\r\n { value: 'text', text: 'Text' },\r\n { value: 'call', text: 'Call' },\r\n ];\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.moveStorage = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n $scope.$on('nextStep', (evt, moveSteps) => {\r\n vm.moveStorage.contactInfo = vm.contactInfo;\r\n sessionStorageService.set(assetService.storageKeys.move, vm.moveStorage);\r\n $state.go(moveSteps[0].stepOne[1]);\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep1DelinquencyCheck', ccMoveStep1DelinquencyCheck);\r\n\r\nccMoveStep1DelinquencyCheck.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$window',\r\n];\r\n\r\nfunction ccMoveStep1DelinquencyCheck(\r\n sessionStorageService,\r\n assetService,\r\n $state,\r\n $scope,\r\n $window,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.moveStorage = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n $scope.$on('nextStep', (evt, moveSteps) => {\r\n // vm.moveStorage.contactInfo = vm.contactInfo;\r\n // sessionStorageService.set(\r\n // assetService.storageKeys.move, vm.moveStorage\r\n // );\r\n // $state.go(moveSteps[0].stepOne[1]);\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccMoveStep2', ccMoveStep2);\r\n\r\nccMoveStep2.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$window',\r\n];\r\n\r\nfunction ccMoveStep2(sessionStorageService, assetService, $state, $scope, $window) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n console.log('running move step 2');\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n $state.go('move.step2');\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccSsmShell', ccSsmShell);\r\n\r\nccSsmShell.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$window',\r\n];\r\n\r\nfunction ccSsmShell(\r\n sessionStorageService,\r\n assetService,\r\n $state,\r\n $scope,\r\n $window,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n console.log('running ssm shell');\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.moveStorage = {};\r\n vm.move = {};\r\n vm.moveSteps = [\r\n { stepOne: ['contactInfo', 'delinquencyCheck', 'delinquentActs'] },\r\n { stepTwo: ['x', 'y', 'z'] },\r\n { stepThree: ['x', 'y', 'z'] },\r\n ];\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.nextStep = nextStep;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n vm.mainPathStep = '';\r\n vm.mainBtnActivate = false;\r\n vm.move = {};\r\n vm.steps = [\r\n 'Contact Info',\r\n 'Move Out',\r\n 'Move In',\r\n 'Review & Confirm',\r\n ];\r\n\r\n vm.cyclePath = [\r\n {\r\n path: 'moveOutAddress',\r\n change: true,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'uninstallations',\r\n change: false,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'scheduleMoveOut',\r\n change: false,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'lastBillAddress',\r\n change: false,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'moveAddress',\r\n change: true,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'installations',\r\n change: false,\r\n pathAlt: 'ruta alterna',\r\n nameBtn: 'error',\r\n },\r\n {\r\n path: 'newBillAddress',\r\n change: true,\r\n pathAlt: 'ruta alterna',\r\n },\r\n {\r\n path: 'review',\r\n change: false,\r\n pathAlt: 'ruta alterna',\r\n vpv:'fire-vpv',\r\n vpvName: '/vpv/form/authenticated/move-service/move-service/home/review/the-following-services will-be-shut-off-at-this-location/continue',\r\n vpvError: '/vpv/form/authenticated/move-service/move-service/home/review/the-following-services will-be-shut-off-at-this-location/error'\r\n },\r\n ];\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n let temp = sessionStorageService.get(assetService.storageKeys.move);\r\n if (!temp) {\r\n sessionStorageService.set(assetService.storageKeys.move,vm.move);\r\n temp = vm.move;\r\n }\r\n\r\n $state.go('moveOutAddress');\r\n }\r\n\r\n function nextStep() {\r\n $scope.$broadcast('nextStep', vm.moveSteps);\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n\r\n vm.moveComponent = function () {\r\n vm.mainPathStep = vm.pathStep;\r\n $state.go(vm.mainpathStep);\r\n };\r\n\r\n $scope.$on(assetService.events.startStopMove, (data) => {\r\n vm.pathStep = data.path;\r\n vm.btnActivate = data.btn;\r\n });\r\n\r\n $scope.$on(assetService.events.saveDataTriggered, (event, data) => {\r\n vm.mainPathStep = data;\r\n });\r\n\r\n init();\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('ShellThirdPartySearchController', ShellThirdPartySearchController);\r\nShellThirdPartySearchController.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'commonService',\r\n '$state',\r\n 'apiApigeeConfigService',\r\n 'sessionStorageService',\r\n 'thirdPartySearchCustomer',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'componentStateHandler',\r\n];\r\n\r\nfunction ShellThirdPartySearchController(\r\n $scope,\r\n assetService,\r\n commonService,\r\n $state,\r\n apiApigeeConfigService,\r\n sessionStorageService,\r\n thirdPartySearchCustomer,\r\n $rootScope,\r\n commongaTaggingService,\r\n componentStateHandler,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let noExperience = false;\r\n /**\r\n * Global Vars\r\n */\r\n vm.dataPage = assetService.thirdPartySearch.pages;\r\n vm.stateGo = vm.dataPage.home;\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function getSelectorResponse(data) {\r\n vm.isBlankState = false;\r\n noExperience = false;\r\n return thirdPartySearchCustomer.sitecore.getBpInfo({ BusinessPartner: data }).then(\r\n (result) => {\r\n if (!result) {\r\n componentStateHandler.failedState(vm);\r\n noExperience = true;\r\n } else if (result.d.Messages.Message === 'No Data Found') {\r\n attributePush(\r\n `workFlow:${$('#TPST-nodata-gat').attr('businessfunction')}`,\r\n `headline:${$('#TPST-nodata-gat').attr('headline')}`,\r\n `buttonText:${result.d.Messages.Message}`,\r\n );\r\n virtualPagePush(\r\n $('#TPST-nodata-gat').attr('businessfunction'),\r\n $('#TPST-nodata-gat').attr('headline'),\r\n result.d.Messages.Message,\r\n );\r\n vm.isBlankState = true;\r\n noExperience = true;\r\n } else if (\r\n !result.d || !result.d.Bpdet || !result.d.Bpdet.results || result.d.Bpdet.results.length === 0\r\n ) {\r\n vm.isBlankState = true;\r\n noExperience = true;\r\n } else {\r\n const showAccountSearch = result.d.Bpdet.results[0].AccountSearch;\r\n const showPropertySearch = result.d.Bpdet.results[0].PropertySearch;\r\n $rootScope.enableBacktoPrevBtn = false;\r\n\r\n if (showAccountSearch && showPropertySearch) {\r\n $rootScope.enableBacktoPrevBtn = true;\r\n vm.stateGo = vm.dataPage.home;\r\n } else if (showAccountSearch && !showPropertySearch) {\r\n vm.stateGo = vm.dataPage.customerSearch;\r\n } else if (showPropertySearch) {\r\n vm.stateGo = vm.dataPage.propertySearch;\r\n } else {\r\n vm.isBlankState = true;\r\n noExperience = true;\r\n }\r\n }\r\n },\r\n (error) => {\r\n componentStateHandler.failedState(vm);\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /** Watchers */\r\n $scope.$on('nextStep', (index, page) => {\r\n const startIndex = page.indexOf('=');\r\n let acctNo = null;\r\n if (startIndex > 0) {\r\n acctNo = page.substring(startIndex + 1);\r\n page = page.substring(0, page.indexOf('?'));\r\n }\r\n vm.stateGo = vm.dataPage[page];\r\n // vm.loadingSpinner = true;\r\n if (acctNo !== null) {\r\n $state.go(vm.stateGo, { accountNumber: acctNo });\r\n } else {\r\n $state.go(vm.stateGo);\r\n }\r\n });\r\n\r\n $scope.$on('loadingSpinner', (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function load() {\r\n $scope.$emit('loadingSpinner', true);\r\n // const globalAccountInfo = sessionStorageService.get(\r\n // assetService.storageKeys.globalAccounts.info,\r\n // );\r\n // if (globalAccountInfo === null) {\r\n // window.location.href = 'my-account/sign-in';\r\n // }\r\n // const bpNumber = globalAccountInfo.primaryBp;\r\n const bpNumber = '';\r\n getSelectorResponse(bpNumber).then(\r\n (result) => {\r\n $scope.$emit('loadingSpinner', false);\r\n if (!noExperience) {\r\n $state.go(vm.stateGo);\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n let init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('thirdPartySearchController', thirdPartySearchController);\r\n\r\nthirdPartySearchController.$inject = [\r\n '$scope',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction thirdPartySearchController(\r\n $scope,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.tab = 1;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function setTab(tabId) {\r\n $scope.$emit('loadingSpinner', true);\r\n vm.tab = tabId;\r\n let goToPage = '';\r\n if (tabId === 1) {\r\n goToPage = 'customerSearch';\r\n } else {\r\n goToPage = 'propertySearch';\r\n }\r\n $scope.$emit('nextStep', goToPage);\r\n }\r\n\r\n function load() {\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.isSet = isSet;\r\n vm.setTab = setTab;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('UMCPublicModalController', umcPublicModalController);\r\n\r\numcPublicModalController.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'assetService',\r\n '$scope',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'modalParameters',\r\n 'updateConsentService',\r\n];\r\n\r\nfunction umcPublicModalController(\r\n $log,\r\n $modalInstance,\r\n assetService,\r\n $scope,\r\n $rootScope,\r\n commongaTaggingService,\r\n modalParameters,\r\n updateConsentService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n vm.accountData = {};\r\n const consetValues = {\r\n x: 'IGN',\r\n revoke: 'DEC',\r\n accept: 'ACC',\r\n close: '',\r\n };\r\n const EXPAND_BTN_VAL = 'Expand Terms of Use';\r\n const SHRINK_BTN_VAL = 'Show less';\r\n let jurisdiction = '';\r\n let accountNumber = '';\r\n let channel = '';\r\n let businessFunction = '';\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.umc = {};\r\n vm.activeAgreeButton = true;\r\n vm.activeCloseButton = true;\r\n vm.latestConsent = {};\r\n vm.consentValue = '';\r\n vm.isExpanded = false;\r\n vm.expandBtnText = EXPAND_BTN_VAL;\r\n\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function (category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function closeModal(event, closedFrom, GATAction) {\r\n vm.on = 'on';\r\n vm.off = 'off';\r\n pushVPV(`/vpv/authenticated/universal-marketing-consent/${businessFunction}/unlock-additional-options/on/${GATAction}`);\r\n pushDL(`universal_marketing_consent_${businessFunction}`, GATAction, 'unlock-additional-options');\r\n vm.consentValue = consetValues[closedFrom];\r\n const version = `${$rootScope.latestConsent.version}`;\r\n const payload = {\r\n contractAccountId: accountNumber,\r\n action: vm.consentValue,\r\n version,\r\n consentDate: moment().format('YYYY-MM-DDTHH:mm:ss'),\r\n jurisdiction,\r\n channel,\r\n };\r\n\r\n updateConsentService.sitecore.updateConsentPublic(payload).then(\r\n (result) => {\r\n $modalInstance.close();\r\n $rootScope.$broadcast(assetService.events.UMCUpdated, result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) { $log.error(error); }\r\n },\r\n );\r\n }\r\n\r\n function closeModalUMC($event, closedFrom) {\r\n closeModal('', closedFrom);\r\n }\r\n\r\n function toggleContent(e) {\r\n e.preventDefault();\r\n const expandBtn = document.getElementById('umc-btn');\r\n const consentText = document.getElementById('ConsentText');\r\n vm.isExpanded = !vm.isExpanded;\r\n const expanded = (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\r\n expandBtn.setAttribute('aria-expanded', !expanded);\r\n consentText.setAttribute('aria-expanded', !expanded);\r\n if (vm.isExpanded) {\r\n consentText.style.height = `${consentText.scrollHeight}px`;\r\n vm.isDisabled = false;\r\n vm.expandBtnText = SHRINK_BTN_VAL;\r\n changeButton();\r\n } else {\r\n consentText.style.height = '350px';\r\n vm.expandBtnText = EXPAND_BTN_VAL;\r\n }\r\n };\r\n\r\n function changeButton() {\r\n vm.activeAgreeButton = false;\r\n vm.activeCloseButton = false;\r\n angular\r\n .element(document.getElementById(assetService.strings.CONSENT_TEXT))\r\n .scope()\r\n .$apply();\r\n }\r\n\r\n function setGlobalValues(juris, accNum, chnl, busFn) {\r\n jurisdiction = juris;\r\n accountNumber = accNum;\r\n channel = chnl;\r\n businessFunction = busFn;\r\n }\r\n\r\n function load() {\r\n const {\r\n jurisdiction: juris,\r\n accountNumber: accNum,\r\n channel: chnl,\r\n businessFunction: busFn,\r\n } = modalParameters;\r\n setGlobalValues(juris, accNum, chnl, busFn);\r\n vm.on = 'on';\r\n pushVPV(`/vpv/authenticated/universal-marketing-consent/${busFn}/unlock-additional-options/on/impression`);\r\n setTimeout(() => {\r\n angular\r\n .element(document.getElementById(assetService.strings.CONSENT_TEXT))\r\n .bind('scroll', () => {\r\n const textarea = angular.element(\r\n document.getElementById(assetService.strings.CONSENT_TEXT),\r\n );\r\n const scrollSize = textarea[0].scrollHeight - 10;\r\n if (\r\n textarea[0].offsetHeight + Math.round(textarea[0].scrollTop) >=\r\n scrollSize\r\n ) {\r\n $scope.$apply(() => {\r\n changeButton();\r\n });\r\n }\r\n });\r\n }, 500);\r\n }\r\n\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModalUMC = closeModalUMC;\r\n vm.closeModal = closeModal;\r\n vm.toggleContent = toggleContent;\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('UMCModalController', UMCModalController);\r\n\r\nUMCModalController.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n '$rootScope',\r\n 'getLatestConsentService',\r\n 'notificationPreferencesAssetsService',\r\n 'umcModalService',\r\n 'commongaTaggingService',\r\n 'readConsentService',\r\n];\r\n\r\nfunction UMCModalController(\r\n $log,\r\n $modalInstance,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n $rootScope,\r\n getLatestConsentService,\r\n notificationPreferencesAssetsService,\r\n umcModalService,\r\n commongaTaggingService,\r\n readConsentService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n vm.accountData = {};\r\n const consetValues = {\r\n x: 'IGN',\r\n revoke: 'DEC',\r\n accept: 'ACC',\r\n close: '',\r\n };\r\n const EXPAND_BTN_VAL = 'Expand Terms of Use';\r\n const SHRINK_BTN_VAL = 'Show less';\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.showLoader = {\r\n x: false,\r\n revoke: false,\r\n accept: false,\r\n close: false,\r\n };\r\n vm.umc = {};\r\n vm.activeAgreeButton = true;\r\n vm.activeCloseButton = true;\r\n vm.latestConsent = {};\r\n vm.consentValue = '';\r\n vm.version = '';\r\n vm.channel = '';\r\n vm.isExpanded = false;\r\n vm.expandBtnText = EXPAND_BTN_VAL;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n const _strings = notificationPreferencesAssetsService.strings;\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModalUMC = closeModalUMC;\r\n vm.closeModal = closeModal;\r\n vm.save = save;\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n let _globalSelectedAccount;\r\n if (globalAccountInfo.hasOwnProperty(_strings.accountSelected)) {\r\n _globalSelectedAccount = globalAccountInfo.accountSelected;\r\n let globalSelectedAccountEmail = globalAccountInfo.userEmail;\r\n }\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n function closeModal(event, closedFrom) {\r\n var checkLoader = Object.values(vm.showLoader).every(\r\n item => item === false,\r\n );\r\n if (checkLoader) {\r\n vm.showLoader[closedFrom] = true;\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.on = 'on';\r\n vm.off = 'off';\r\n if (closedFrom === 'close') {\r\n $modalInstance.close();\r\n if ($rootScope.closeBtn === false) {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-off').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-off').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-off').attr('consentStatusclose')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-off').attr('businessFunction'),\r\n $('#hdn-toggle-off').attr('headLine'),\r\n vm.off,\r\n $('#hdn-toggle-off').attr('consentStatusclose'),\r\n );\r\n } else {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-on').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-on').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-on').attr('consentStatusclose')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessFunction'),\r\n $('#hdn-toggle-on').attr('headLine'),\r\n vm.off,\r\n $('#hdn-toggle-on').attr('consentStatusclose'),\r\n );\r\n }\r\n //$rootScope.closeBtn = false;\r\n } else {\r\n vm.consentValue = consetValues[closedFrom];\r\n if ($rootScope.newMajorVersion) {\r\n if (vm.consentValue === 'IGN') {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-on').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-on').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-on').attr('consentStatusdecline')}`,\r\n `subheadline:${$('#hdn-toggle-on').attr(\r\n 'consentUpgradeText',\r\n )}${parseInt($rootScope.currentVersion)}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessFunction'),\r\n $('#hdn-toggle-on').attr('headLine'),\r\n $('#hdn-toggle-on').attr('consentUpgradeText') +\r\n parseInt($rootScope.currentVersion),\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentStatusdecline'),\r\n );\r\n }\r\n if (vm.consentValue === 'ACC') {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-on').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-on').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-on').attr('consentStatusaccept')}`,\r\n `subheadline:${$('#hdn-toggle-on').attr(\r\n 'consentUpgradeText',\r\n )}${parseInt($rootScope.currentVersion)}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessFunction'),\r\n $('#hdn-toggle-on').attr('headLine'),\r\n $('#hdn-toggle-on').attr('consentUpgradeText') +\r\n parseInt($rootScope.currentVersion),\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentStatusaccept'),\r\n );\r\n }\r\n } else if (!$rootScope.newMajorVersion) {\r\n if (vm.consentValue === 'IGN') {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-on').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-on').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-on').attr('consentStatusdecline')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessFunction'),\r\n $('#hdn-toggle-on').attr('headLine'),\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentStatusdecline'),\r\n );\r\n // virtualPagePush($(\"#hdn-toggle-on\").attr(\"businessFunction\"), $(\"#hdn-toggle-on\").attr(\"headLine\"), $(\"#hdn-toggle-on\").attr(\"consentUpgradeText\") + $rootScope.currentVersion, vm.on , $(\"#hdn-toggle-on\").attr(\"consentStatusdecline\"));\r\n }\r\n if (vm.consentValue === 'ACC') {\r\n attributePush(\r\n `workFlow:${$('#hdn-toggle-on').attr('businessFunction')}`,\r\n `headline:${$('#hdn-toggle-on').attr('headLine')}`,\r\n `buttonText:${$('#hdn-toggle-on').attr('consentStatusaccept')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessFunction'),\r\n $('#hdn-toggle-on').attr('headLine'),\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentStatusaccept'),\r\n );\r\n // virtualPagePush($(\"#hdn-toggle-on\").attr(\"businessFunction\"), $(\"#hdn-toggle-on\").attr(\"headLine\"), $(\"#hdn-toggle-on\").attr(\"consentUpgradeText\") + $rootScope.currentVersion, vm.on , $(\"#hdn-toggle-on\").attr(\"consentStatusaccept\"));\r\n }\r\n }\r\n\r\n umcModalService.UMCUpdateConsent(vm.consentValue).then(\r\n result => {\r\n $modalInstance.close();\r\n if (\r\n $rootScope.channel === '010' &&\r\n result !== undefined &&\r\n result.d.Type === 'E'\r\n ) {\r\n $rootScope.showToast = 'error';\r\n let message =\r\n closedFrom === 'revoke'\r\n ? $('#hdn-toggle-off').attr('RevokeErrorMessage')\r\n : $('#hdn-toggle-on').attr('AcceptErrorMessage');\r\n\r\n const toastMessage = {\r\n option: 'error',\r\n messageOption: message,\r\n showToast: 'error',\r\n };\r\n $rootScope.umcErrorOnToggle = true;\r\n $rootScope.$broadcast(\r\n assetService.events.reloadAdditionalOptions,\r\n toastMessage,\r\n );\r\n } else {\r\n const toastMessage = {\r\n option: 'success',\r\n showToast: 'success',\r\n };\r\n $rootScope.$broadcast(\r\n assetService.events.reloadAdditionalOptions,\r\n toastMessage,\r\n );\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n }\r\n\r\n function closeModalUMC($event, closedFrom) {\r\n closeModal('', closedFrom);\r\n }\r\n\r\n function save() {\r\n // Update consent service\r\n }\r\n\r\n vm.toggleContent = function(e) {\r\n e.preventDefault();\r\n const expandBtn = document.getElementById('umc-btn');\r\n const consentText = document.getElementById('ConsentText');\r\n vm.isExpanded = !vm.isExpanded;\r\n const expanded =\r\n (expandBtn && consentText).getAttribute('aria-expanded') === 'true';\r\n expandBtn.setAttribute('aria-expanded', !expanded);\r\n consentText.setAttribute('aria-expanded', !expanded);\r\n if (vm.isExpanded) {\r\n consentText.style.height = `${consentText.scrollHeight}px`;\r\n vm.isDisabled = false;\r\n vm.expandBtnText = SHRINK_BTN_VAL;\r\n changeButton();\r\n } else {\r\n consentText.style.height = '350px';\r\n vm.expandBtnText = EXPAND_BTN_VAL;\r\n }\r\n };\r\n\r\n function changeButton() {\r\n vm.activeAgreeButton = false;\r\n vm.activeCloseButton = false;\r\n angular\r\n .element(document.getElementById(assetService.strings.CONSENT_TEXT))\r\n .scope()\r\n .$apply();\r\n }\r\n\r\n function load() {\r\n vm.on = 'on';\r\n setTimeout(() => {\r\n angular\r\n .element(document.getElementById(assetService.strings.CONSENT_TEXT))\r\n .bind('scroll', () => {\r\n const textarea = angular.element(\r\n document.getElementById(assetService.strings.CONSENT_TEXT),\r\n );\r\n const scrollSize = textarea[0].scrollHeight - 10;\r\n if (\r\n textarea[0].offsetHeight + Math.round(textarea[0].scrollTop) >=\r\n scrollSize\r\n ) {\r\n $scope.$apply(() => {\r\n changeButton();\r\n });\r\n }\r\n });\r\n }, 500);\r\n setTimeout(() => {\r\n if ($rootScope.channel === '005') {\r\n if ($rootScope.currentVersion == '') {\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessfunction'),\r\n $('#hdn-toggle-on').attr('headline'),\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentstatusimpression'),\r\n );\r\n } else {\r\n virtualPagePush(\r\n $('#hdn-toggle-on').attr('businessfunction'),\r\n $('#hdn-toggle-on').attr('headline'),\r\n $('#hdn-toggle-on').attr('consentUpgradeText') +\r\n $rootScope.currentVersion,\r\n vm.on,\r\n $('#hdn-toggle-on').attr('consentstatusimpression'),\r\n );\r\n }\r\n }\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function() {\r\n vm.umc = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.umcCard,\r\n );\r\n vm.channel = $rootScope.channel;\r\n load();\r\n };\r\n\r\n init();\r\n\r\n /* --------------------------------------Analytics--------------------------------------*/\r\n // function layerPushFor(onclose) {\r\n // const vpnName = `/vpv/authenticated/universal-marketing-consent/unlock-additional-options/you-are-currently-using-${vm.version}/on/${onclose}`;\r\n // $rootScope.virtualPagePush({ event: 'fire-vpv', 'vpv-name': vpnName });\r\n // }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCViewAllAccounts', CCViewAllAccounts);\r\nCCViewAllAccounts.$inject = [\r\n 'assetService',\r\n 'broadcastService',\r\n '$modalInstance',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction CCViewAllAccounts(\r\n assetService,\r\n broadcastService,\r\n $modalInstance,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n\r\n vm.accountSel = '';\r\n vm.allAccountsStorage = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.selectOneAccount = selectOneAccount;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n vm.allAccountsStorage = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n }\r\n\r\n function saveData() {\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountSelector, vm.allAccountsStorage,\r\n );\r\n }\r\n\r\n function selectOneAccount(accNumber) {\r\n vm.allAccountsStorage.selectedFromModal = accNumber;\r\n saveData();\r\n closeModal();\r\n broadcastService.modalChangeAccount();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('HowToPay', HowToPay);\r\n\r\nHowToPay.$inject = [\r\n '$scope',\r\n '$state',\r\n '$window',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'speedpayService',\r\n 'getLoggedInUserDetailsService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n '$rootScope',\r\n 'broadcastService',\r\n];\r\n\r\nfunction HowToPay(\r\n $scope,\r\n $state,\r\n $window,\r\n assetService,\r\n sessionStorageService,\r\n speedpayService,\r\n getLoggedInUserDetailsService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n $rootScope,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _active = 'active';\r\n let selectedAddressData = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.balanceStorage = {};\r\n vm.buttonContinue = true;\r\n vm.ebillEnrollment = false;\r\n vm.enrolledStatus = '';\r\n vm.howToPaySpinner = true;\r\n vm.PB_BigPadding = false;\r\n vm.PB_ClickEnroll = undefined;\r\n vm.PB_Description = assetService.strings.EASILY_ENROLL;\r\n vm.PB_LinkText = undefined;\r\n vm.PB_ManageButton = undefined;\r\n vm.PB_ToggleComponent = true;\r\n vm.singleAccount = false;\r\n vm.mainBtnActivate = true;\r\n vm.currentUser = {};\r\n vm.disableBankAccount = false;\r\n vm.disableSpeedPay = false;\r\n vm.showContinue = true;\r\n vm.accountLength = '';\r\n vm.formToPaySpinner = false;\r\n vm.user = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.nextPage = nextPage;\r\n vm.speedpayRedirect = speedpayRedirect;\r\n vm.prevPage = prevPage;\r\n vm.jurisdictionsContent = jurisdictionsContent;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function enrolledNotif() {\r\n // Should call a service to enroll or unenroll from Paperless\r\n vm.enrolledStatus = vm.enrolledStatus === '' ? _active : '';\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n return $scope.$parent.formatTotalAmount(amount);\r\n }\r\n\r\n function speedpayRedirect() {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/clickthrough/pay-my-bill/credit-debit-echeck-with-speedpay',\r\n );\r\n // Speedpay process\r\n const zipcode = vm.accountLength.length > 1 ? '' : vm.user.zipCode;\r\n vm.altId = $rootScope.altId;\r\n vm.alternateId = vm.altId.filter(\r\n item => item.AccountNum == vm.accountBalRegSession.contractAccountNumber,\r\n );\r\n const alternateAccountId = vm.alternateId[0].AlternateAccountID;\r\n speedpayService\r\n .getSpeedpayUrl({\r\n UserID: vm.currentUser.cdpId,\r\n login: vm.accountBalRegSession.contractAccountNumber,\r\n password: zipcode,\r\n returnUrl: window.location.origin + $scope.url.dashboard,\r\n speedpayAuth: 'auth',\r\n speedpayAltID: alternateAccountId,\r\n action: assetService.strings.START,\r\n })\r\n .then(url => {\r\n window.location.href = url;\r\n });\r\n }\r\n\r\n function nextPage() {\r\n vm.formToPaySpinner = true;\r\n if (\r\n vm.accountLength !== null &&\r\n vm.accountLength.length > 1 &&\r\n vm.accountLength.length <= 20\r\n ) {\r\n if (!$rootScope.fromBillsPage) {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/choose-account-to-pay/na/multiple',\r\n );\r\n broadcastService.loadBills();\r\n } else {\r\n $rootScope.fromBillsPage = false;\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/choose-account-to-pay/na/multiple',\r\n );\r\n storeAndGo(assetService.balanceRouteStates.BILLS);\r\n }\r\n } else {\r\n storeAndGo(assetService.balanceRouteStates.FORM_TO_PAY);\r\n }\r\n jurisdictionsContent();\r\n }\r\n\r\n function jurisdictionsContent() {\r\n $rootScope.deProgress = $scope.url.jurisdictions[0];\r\n $rootScope.deCarolinas = $scope.url.jurisdictions[1];\r\n $rootScope.deFlorida = $scope.url.jurisdictions[2];\r\n $rootScope.deKentucky = $scope.url.jurisdictions[3];\r\n $rootScope.deOhio = $scope.url.jurisdictions[4];\r\n $rootScope.deIndiana = $scope.url.jurisdictions[5];\r\n }\r\n\r\n function prevPage() {\r\n storeAndGo(assetService.balanceRouteStates.BILLS);\r\n }\r\n\r\n function storeAndGo(state) {\r\n // emit Variable, emit value and state\r\n // Add data to Storage before $emit\r\n //vm.balanceStorage.payMethodSelected = vm.newPayMethodSelected;\r\n // sessionStorageService.set(\r\n // assetService.storageKeys.balanceStorage,\r\n // vm.balanceStorage,\r\n // );\r\n\r\n $state.go(state);\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n pushVPV('vpv/de/page/pay-bill/load/pay-my-bill/payment-type');\r\n // LOAD sessionStorageService\r\n vm.messagePriority = '';\r\n sessionStorageService.delete('filterAmountLength');\r\n sessionStorageService.set('savedOtherAmount', false);\r\n sessionStorageService.delete('lengthError');\r\n let _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n vm.accountLength = sessionStorageService.get(\r\n assetService.storageKeys.accountLength,\r\n );\r\n vm.accountBalRegSession = sessionStorageService.get(\r\n assetService.storageKeys.accountBalRegSession,\r\n );\r\n\r\n if (\r\n vm.accountBalRegSession !== null ||\r\n vm.accountBalRegSession !== undefined\r\n ) {\r\n if (vm.accountBalRegSession.noCardsInd === 'T') {\r\n vm.disableSpeedPay = true;\r\n } else if (vm.accountBalRegSession.noCheckDraftInd === 'T') {\r\n vm.disableBankAccount = true;\r\n } else if (vm.accountBalRegSession.cashOnly === 'T') {\r\n window.location.href = $scope.url.dashboard;\r\n }\r\n }\r\n\r\n if (vm.accountLength !== null && vm.accountLength.length < 2) {\r\n if (vm.balanceStorage.billsQuantity < 2) {\r\n vm.singleAccount = true;\r\n } else {\r\n vm.singleAccount = false;\r\n }\r\n vm.user = vm.accountLength[0];\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('SuccessPay', SuccessPay);\r\n\r\nSuccessPay.$inject = [\r\n '$sce',\r\n '$filter',\r\n '$scope',\r\n 'assetService',\r\n 'broadcastService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n 'getAccountBalanceForRegularAccountService',\r\n '$stateParams',\r\n 'ccSitecoreGenericCachingService',\r\n 'commonService',\r\n '$rootScope',\r\n];\r\n\r\nfunction SuccessPay(\r\n $sce,\r\n $filter,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n getAccountBalanceForRegularAccountService,\r\n $stateParams,\r\n ccSitecoreGenericCachingService,\r\n commonService,\r\n $rootScope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.balanceStorage = {};\r\n vm.accountForPay = {};\r\n vm.totalAmount = 0;\r\n vm.lastFourDigits = '';\r\n vm.bankAccount = '';\r\n vm.loadingSpinner = true;\r\n vm.balanceStorage.displayDate = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.formatLastFourDigits = formatLastFourDigits;\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function formatTotalAmount(amount, subscript) {\r\n const formattedAmount = String(amount).split('.');\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n if (subscript) {\r\n return $sce.trustAsHtml(\r\n `$${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n } else {\r\n return $sce.trustAsHtml(\r\n `$${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n }\r\n\r\n function formatLastFourDigits(number) {\r\n const lastDigits = String(number).slice(12, 16);\r\n return lastDigits;\r\n }\r\n\r\n \r\n\r\n // function deleteDataFromSitecoreCache(payload) {\r\n // return ccSitecoreGenericCachingService\r\n // .removeFromSitecoreCache(payload)\r\n // .then(\r\n // response => response,\r\n // () => {},\r\n // );\r\n // }\r\n\r\n // function printData() {\r\n // window.print();\r\n // }\r\n\r\n function getAccountBalanceForRegularAccount(accountData) {\r\n vm.loadingSpinner = true;\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(accountData)\r\n .then(\r\n result => {\r\n vm.loadingSpinner = false;\r\n if (result.getAccountAndBillingInfoResList.length > 0) {\r\n if (vm.balanceStorage.selectedAccounts.length > 0) {\r\n vm.balanceStorage.selectedAccounts.forEach(index => {\r\n const contractAccount = index.accountNumber;\r\n let temp = [];\r\n temp = result.getAccountAndBillingInfoResList.filter(\r\n element => element.contractAccountNumber == contractAccount,\r\n );\r\n index.message = temp[0].messageList[0].message;\r\n index.messagePriority = temp[0].messageList[0].messagePriority;\r\n });\r\n }\r\n }\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.loadingSpinner = true;\r\n vm.accountNickName =\r\n $rootScope.accountNickName === undefined ||\r\n $rootScope.accountNickName === ''\r\n ? 'Account'\r\n : $rootScope.accountNickName;\r\n vm.accountNumber = $rootScope.accountNumber;\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n let currentDate = new Date();\r\n let currESTDate = currentDate.toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n });\r\n vm.balanceStorage.displayDate = moment(currESTDate).format('MM/DD/YYYY');\r\n vm.bankDetails = $rootScope.bankData;\r\n const selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n const { accountSelected } = selectedAddressData;\r\n\r\n const data = {\r\n businessPartnerId: accountSelected.relatedBp\r\n ? accountSelected.relatedBp\r\n : accountSelected.primaryBp,\r\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber,\r\n };\r\n\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n const accountData = {\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n vm.balanceStorage.globalSelectedAccount.accountNumber,\r\n },\r\n ],\r\n };\r\n\r\n const promises = [\r\n getAccountBalanceForRegularAccount(accountData),\r\n ];\r\n //vm.totalAmount = 0;\r\n vm.balanceStorage.selectedAccounts.forEach((ele) => {\r\n vm.totalAmount = ele.confirmationCode ? ele.totalDonationAmount ? (vm.totalAmount + Number(ele.totalDonationAmount)) : vm.totalAmount + Number(ele.billAmount) : vm.totalAmount + 0;\r\n });\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.balanceStorage.selectedAccounts) {\r\n sessionStorageService.set(\r\n assetService.events.care,\r\n vm.balanceStorage.selectedAccounts[0].accountNumber,\r\n );\r\n }\r\n $rootScope.paymentSpinner = false;\r\n vm.loadingSpinner = false;\r\n // deleteDataFromSitecoreCache({ Key: vm.cacheId }).then(\r\n // result => {},\r\n // error => {},\r\n // );\r\n });\r\n }\r\n\r\n // initialice CARE\r\n $scope.$on(assetService.events.careLoad, (event, data) => {\r\n initCare();\r\n });\r\n\r\n function initCare() {\r\n if (sessionStorageService.get(assetService.events.care)) {\r\n broadcastService.care(\r\n sessionStorageService.get(assetService.events.care),\r\n );\r\n }\r\n }\r\n\r\n function virtualPagePush() {\r\n // const arrayElements = Array.prototype.slice.call(arguments);\r\n // const accountsSelected = $scope.$parent.selectedAccountsAmount;\r\n // const accountText =\r\n // accountsSelected === 1 ? 'single account' : 'multiple account';\r\n // arrayElements.splice(1, 0, accountText);\r\n // commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-inner-declarations */\r\napp.controller('ActivityShellController', ActivityShellController);\r\nActivityShellController.$inject = [\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n '$scope',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction ActivityShellController(\r\n apiApigeeConfigService,\r\n assetService,\r\n $scope,\r\n sessionStorageService,\r\n) {\r\n /* -----------------------Scope Vars---------------------------*/\r\n let globalAccountInfo = {};\r\n /* -----------------------Global Vars---------------------------*/\r\n const vm = this;\r\n\r\n /* --------------Function Definitions------------------------*/\r\n function loading(value) {\r\n vm.loadingSpinner = value;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n function load() {\r\n vm.prepaid = globalAccountInfo.hasOwnProperty('accountSelected')\r\n ? globalAccountInfo.accountSelected.prepaid\r\n : true;\r\n }\r\n /* -------------------------Scope On------------------------- */\r\n /* --------------Function Declarations-----------------------*/\r\n let init = init;\r\n\r\n /* ---------------Initialization-------------------*/\r\n init = function() {};\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-inner-declarations */\r\napp.controller('BalanceActivityController', BalanceActivityController);\r\nBalanceActivityController.$inject = [\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n '$scope',\r\n 'sessionStorageService',\r\n 'balanceActivityService',\r\n 'dateHelperService',\r\n 'BPACSVService',\r\n 'prepaidService',\r\n 'commongaTaggingService',\r\n 'commonService',\r\n 'componentStateHandler',\r\n 'getPaymentHistoryService',\r\n];\r\n\r\nfunction BalanceActivityController(\r\n apiApigeeConfigService,\r\n assetService,\r\n $scope,\r\n sessionStorageService,\r\n balanceActivityService,\r\n dateHelperService,\r\n bpacsvService,\r\n prepaidService,\r\n commongaTaggingService,\r\n commonService,\r\n componentStateHandler,\r\n getPaymentHistoryService,\r\n) {\r\n /* -----------------------Scope Vars---------------------------*/\r\n\r\n /* -----------------------Global Vars---------------------------*/\r\n const vm = this;\r\n vm.init = init;\r\n const pageCase = 'balance';\r\n let globalAccountInfo = {};\r\n const fileName = prepaidService.strings.ExportedData;\r\n let globalSelectedAccount = {};\r\n const _dailyUsage = prepaidService.strings.DAILY_USAGE;\r\n const _payment = prepaidService.strings.PAYMENT;\r\n const _pending = prepaidService.strings.PENDING;\r\n vm.loadingSpinner = true;\r\n const noOfDays = '365';\r\n vm.attributePush = attributePush;\r\n\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n };\r\n vm.balanceActivity = {\r\n dailyUsage: [],\r\n payment: [],\r\n paymentFees: [],\r\n fullPayment: [],\r\n };\r\n\r\n vm.dropdownOptions = [\r\n { value: '', text: assetService.strings.TEXT_ALLACTIVITY },\r\n {\r\n text: _dailyUsage,\r\n value: _dailyUsage,\r\n },\r\n {\r\n text: _payment,\r\n value: _payment,\r\n },\r\n ];\r\n\r\n vm.minusTableHeaders = [\r\n {\r\n column: assetService.strings.DATE,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.TYPE,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.AMOUNT,\r\n sortAsc: true,\r\n },\r\n ];\r\n vm.keyDates = [];\r\n vm.usageDates = [];\r\n vm.payDates = [];\r\n vm.lastDate = 0;\r\n vm.dateLis = [];\r\n vm.limit = 7;\r\n vm.activitiesLimit = 7; // Initial displayed rows in Table\r\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\r\n vm.orderPos = 0;\r\n vm.sortAsc = true;\r\n vm.filteredByCategory = '';\r\n vm.filterName = '';\r\n vm.showPrevWeek = false;\r\n vm.workFlow = '';\r\n vm.headline = '';\r\n vm.buttonText = '';\r\n let dailyUsageDetails = null;\r\n let paymentHistoryDetails = null;\r\n let paymentDetails = null;\r\n\r\n /* Function definitions */\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function loading(value) {\r\n vm.loadingSpinner = value;\r\n }\r\n\r\n function sortByColumn(value) {\r\n vm.orderBy = vm.minusTableHeaders[value].column;\r\n vm.orderPos = value;\r\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\r\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\r\n }\r\n\r\n function activateDetails(item) {\r\n item.active = !item.active;\r\n }\r\n\r\n function load() {\r\n loading(true);\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n vm.prepaid = globalAccountInfo.hasOwnProperty('accountSelected')\r\n ? globalAccountInfo.prepaid\r\n : true;\r\n\r\n const balanceActivityRequest = {\r\n contractAccountId: vm.contractAccountId,\r\n prepaid: vm.prepaid,\r\n numberOfDays: noOfDays,\r\n };\r\n\r\n commonService\r\n .executePromises([\r\n getPaymentHistory({\r\n businessPartner: _globalAccountInfo.bpNumber,\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n }),\r\n getBalanceActivity({\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n numberOfDays: noOfDays,\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n setModels();\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n //populate daily usage\r\n if (dailyUsageDetails) {\r\n vm.balanceActivity.dailyUsage = _.map(dailyUsageDetails, item => ({\r\n type: _dailyUsage,\r\n dailyElectricUsage: Math.trunc(item.TotalKwh),\r\n dailyElectricCost: item.DailyUsageAmount,\r\n date: moment(item.ToDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(item.ToDateStr).toDate(),\r\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\r\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\r\n amount: item.DailyUsageAmount,\r\n pendingText: '',\r\n }));\r\n }\r\n\r\n // Populate Payment fees details\r\n if (paymentDetails) {\r\n paymentDetails.forEach(paymentDetailsFees => {\r\n if (\r\n paymentDetailsFees.Description === 'RETURN_CHECK_FEE' ||\r\n paymentDetailsFees.Description === 'LATE_PAYMENT_FEE' ||\r\n paymentDetailsFees.Description === 'NEW_SERVICE_FEE'\r\n ) {\r\n let paymentItemFees = {\r\n type: _payment,\r\n status: paymentDetailsFees.Description,\r\n confirmationNumber: '',\r\n date: moment(paymentDetailsFees.PostingDate).format('MM/DD/YYYY'),\r\n dateForSort: moment(paymentDetailsFees.PostingDate).toDate(),\r\n paymentMetod: '',\r\n amount: parseFloat(paymentDetailsFees.Amount),\r\n };\r\n vm.balanceActivity.paymentFees.push(paymentItemFees);\r\n }\r\n });\r\n }\r\n\r\n //populate payment history\r\n if (paymentHistoryDetails) {\r\n paymentHistoryDetails.forEach(paymentHistory => {\r\n if (\r\n paymentHistory.Payment_Status === 'PENDING' ||\r\n paymentHistory.Payment_Status === 'COMPLETED' ||\r\n paymentHistory.Payment_Status === 'RETURNED'\r\n ) {\r\n let paymentItem = {\r\n type: _payment,\r\n status: paymentHistory.Payment_Status,\r\n confirmationNumber: paymentHistory.Confirmation_Code,\r\n date: moment(paymentHistory.PaymentDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(paymentHistory.PaymentDateStr).toDate(),\r\n paymentMetod: paymentHistory.Payment_Method,\r\n payment: paymentHistory.Payment_Amount,\r\n deferredBalance: 0,\r\n amount: parseFloat(paymentHistory.Payment_Amount),\r\n pendingText:\r\n paymentHistory.Payment_Status === 'PENDING' ? _pending : '',\r\n };\r\n vm.balanceActivity.payment.push(paymentItem);\r\n }\r\n });\r\n }\r\n\r\n const dataToMerge = [\r\n vm.balanceActivity.dailyUsage,\r\n vm.balanceActivity.payment,\r\n vm.balanceActivity.paymentFees,\r\n ];\r\n vm.balance = _.spread(_.union)(dataToMerge);\r\n\r\n vm.balance.forEach(element => {\r\n const numberOfWeek = dateHelperService.getWeekNumber(element.date);\r\n const year = new Date(element.date).getFullYear();\r\n\r\n element.dateId = year * 100 + numberOfWeek;\r\n });\r\n\r\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(\r\n activity => activity.dateId,\r\n );\r\n\r\n vm.dateLis.sort((first, second) => second - first);\r\n vm.filterWeek();\r\n\r\n loading(false);\r\n }\r\n\r\n function getBalanceActivity(request) {\r\n return balanceActivityService.sitecore.balanceActivity(request).then(\r\n result => {\r\n dailyUsageDetails = result.d.Balactivitytodailyusage.results;\r\n paymentDetails = result.d.BalActivityToCharges_Nav.results;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function getPaymentHistory(request) {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(request).then(\r\n result => {\r\n paymentHistoryDetails = result.d.Req_Inp.results[0].Inp_Res.results;\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function exportCSV() {\r\n if (vm.filteredByCategory == '') {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'addedSpec:' + $('#hdn-dd').attr('subhead'),\r\n 'buttonText:' + $('#hdn-dd').attr('button'),\r\n );\r\n } else {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'addedSpec:' + $('#hdn-dd').attr('subhead'),\r\n 'buttonText:' + vm.filterName,\r\n );\r\n }\r\n let sortedData = vm.balanceList\r\n .slice()\r\n .sort((a, b) => b.dateForSort - a.dateForSort);\r\n bpacsvService.exportToCSV(pageCase, sortedData, fileName);\r\n }\r\n\r\n function printData() {\r\n if (vm.filteredByCategory == '') {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'addedSpec:' + $('#hdn-dd').attr('subhead2'),\r\n 'buttonText:' + $('#hdn-dd').attr('button'),\r\n );\r\n } else {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'addedSpec:' + $('#hdn-dd').attr('subhead2'),\r\n 'buttonText:' + vm.filterName,\r\n );\r\n }\r\n window.print();\r\n }\r\n\r\n function filterWeek() {\r\n vm.balanceActivity.fullPayment = _.filter(\r\n vm.balance,\r\n element => element.type === 'Payment',\r\n );\r\n vm.usageDateLis = _.uniq(\r\n vm.balanceActivity.dailyUsage,\r\n assetService.strings.dateId,\r\n ).map(activity => activity.dateId);\r\n vm.usageDateLis.sort((first, second) => second - first);\r\n vm.usageDateList = _.uniq(vm.usageDateLis);\r\n\r\n vm.payDateLis = _.uniq(\r\n vm.balanceActivity.fullPayment,\r\n assetService.strings.dateId,\r\n ).map(activity => activity.dateId);\r\n vm.payDateLis.sort((first, second) => second - first);\r\n vm.payDateList = _.uniq(vm.payDateLis);\r\n\r\n vm.dateList = _.uniq(vm.dateLis);\r\n\r\n if (vm.filterName === '' || vm.filterName === 'All Activity') {\r\n if (vm.keyDates.length < vm.dateList.length) {\r\n vm.keyDates.push(vm.dateList[vm.keyDates.length]);\r\n\r\n vm.balanceList = _.filter(vm.balance, actvity => {\r\n let find = false;\r\n vm.keyDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n vm.activitiesLimit = vm.balanceList.length;\r\n vm.fullList = vm.dateList;\r\n vm.presentList = vm.keyDates;\r\n }\r\n } else if (vm.filterName && vm.filterName === 'Daily Usage') {\r\n if (vm.usageDates.length < vm.usageDateList.length) {\r\n vm.usageDates.push(vm.usageDateList[vm.usageDates.length]);\r\n vm.balanceList = _.filter(vm.balanceActivity.dailyUsage, actvity => {\r\n let find = false;\r\n vm.usageDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n vm.activitiesLimit = vm.balanceList.length;\r\n vm.onlyUsageList = vm.balanceList;\r\n vm.fullList = vm.balanceActivity.dailyUsage;\r\n vm.presentList = vm.onlyUsageList;\r\n }\r\n } else if (vm.filterName && vm.filterName === 'Payment') {\r\n if (vm.payDates.length < vm.payDateList.length) {\r\n vm.payDates.push(vm.payDateList[vm.payDates.length]);\r\n\r\n vm.balanceList = _.filter(vm.balanceActivity.fullPayment, actvity => {\r\n let find = false;\r\n vm.payDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n\r\n vm.activitiesLimit = vm.balanceList.length;\r\n vm.onlyPaymentList = vm.balanceList;\r\n vm.fullList = vm.balanceActivity.fullPayment;\r\n vm.presentList = vm.onlyPaymentList;\r\n }\r\n }\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n\r\n $scope.$on('dropdown', (index, data) => {\r\n vm.filterName = data.valueName;\r\n attributePush(\r\n 'workFlow:' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'buttonText:' + vm.taggingElements.buttonText,\r\n 'addedSpec:' + data.valueName,\r\n );\r\n vm.filteredByCategory = data.value;\r\n\r\n if (vm.filterName && vm.filterName === 'Daily Usage') {\r\n vm.balanceList = [];\r\n vm.usageDates = [];\r\n vm.usageDates.push(vm.usageDateList[0]);\r\n vm.balanceList = _.filter(vm.balanceActivity.dailyUsage, actvity => {\r\n let find = false;\r\n vm.usageDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n vm.usages = vm.balanceList;\r\n vm.fullList = vm.balanceActivity.dailyUsage;\r\n vm.presentList = vm.usages;\r\n } else if (vm.filterName && vm.filterName === 'Payment') {\r\n vm.balanceList = [];\r\n vm.payDates = [];\r\n vm.payDates.push(vm.payDateList[0]);\r\n vm.balanceList = _.filter(vm.balanceActivity.fullPayment, actvity => {\r\n let find = false;\r\n vm.payDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n vm.payments = vm.balanceList;\r\n vm.fullList = vm.balanceActivity.fullPayment;\r\n vm.presentList = vm.payments;\r\n } else {\r\n vm.balanceList = [];\r\n vm.keyDates = [];\r\n vm.keyDates.push(vm.dateList[0]);\r\n vm.balanceList = _.filter(vm.balance, actvity => {\r\n let find = false;\r\n vm.keyDates.forEach(element => {\r\n if (!find) find = actvity.dateId === element;\r\n });\r\n\r\n return find;\r\n });\r\n vm.fullList = vm.dateList;\r\n vm.presentList = vm.keyDates;\r\n }\r\n });\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.activateDetails = activateDetails;\r\n vm.sortByColumn = sortByColumn;\r\n vm.filterWeek = filterWeek;\r\n vm.exportCSV = exportCSV;\r\n vm.printData = printData;\r\n\r\n /* ---------------Initialization-------------------*/\r\n function populateGATagging(obj) {\r\n vm.workFlow = obj.workFlow;\r\n vm.headline = obj.headline;\r\n vm.buttonText = obj.buttonText;\r\n }\r\n\r\n function balanceActivity(dataObj) {\r\n return balanceActivityService.sitecore\r\n .balanceActivity(dataObj)\r\n .then(result => {\r\n if (result) {\r\n vm.balanceActivity.dailyUsage = _.map(\r\n result.d.Balactivitytodailyusage.results,\r\n item => ({\r\n type: _dailyUsage,\r\n dailyElectricUsage: Math.trunc(item.TotalKwh),\r\n dailyElectricCost: item.DailyUsageAmount,\r\n date: moment(item.FromDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(item.FromDateStr).toDate(),\r\n miscAdjustments: prepaidService.strings.MOCK_MISC_ADJ,\r\n meterReadNumber: prepaidService.strings.MOCK_METER_READ_NUM,\r\n amount: item.DailyUsageAmount,\r\n }),\r\n );\r\n vm.balanceActivity.payment = _.map(\r\n result.d.Balactivitytopaymenthistory.results,\r\n item => ({\r\n type: _payment,\r\n confirmationNumber: prepaidService.strings.MOCK_CONF_NUM,\r\n date: moment(item.PaymentDateStr).format('MM/DD/YYYY'),\r\n dateForSort: moment(item.PaymentDateStr).toDate(),\r\n paymentMetod: prepaidService.strings.MOCK_PAYMENT_METOD,\r\n payment: item.PrepaidAmount,\r\n deferredBalance: item.DeferredAmount,\r\n amount:\r\n parseFloat(item.PrepaidAmount) +\r\n parseFloat(item.DeferredAmount),\r\n }),\r\n );\r\n const dataToMerge = [\r\n vm.balanceActivity.dailyUsage,\r\n vm.balanceActivity.payment,\r\n ];\r\n vm.balance = _.spread(_.union)(dataToMerge);\r\n\r\n vm.balance.forEach(element => {\r\n const numberOfWeek = dateHelperService.getWeekNumber(element.date);\r\n const year = new Date(element.date).getFullYear();\r\n\r\n element.dateId = year * 100 + numberOfWeek;\r\n });\r\n\r\n vm.dateLis = _.uniq(vm.balance, assetService.strings.dateId).map(\r\n activity => activity.dateId,\r\n );\r\n\r\n vm.dateLis.sort((first, second) => second - first);\r\n vm.filterWeek();\r\n\r\n loading(false);\r\n }\r\n });\r\n }\r\n\r\n function init(workflow, headline, buttonText, addedSpec) {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.taggingElements.workflow = workflow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.buttonText = buttonText;\r\n vm.taggingElements.addedSpec = addedSpec;\r\n load();\r\n }\r\n\r\n //init();\r\n}\r\n","app.controller(\r\n 'BillingAndPaymentActivityController',\r\n BillingAndPaymentActivityController,\r\n);\r\nBillingAndPaymentActivityController.$inject = [\r\n '$log',\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'BPACSVService',\r\n 'commonService',\r\n 'getLoggedInUserDetailsService',\r\n 'invoiceImageService',\r\n 'invoiceTransformImageService',\r\n 'getInvoiceDetailsService',\r\n 'getInvoiceListService',\r\n 'getPaymentHistoryService',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'accountSearchService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'commongaTaggingService',\r\n 'ccBPAInvoiceSelectorService',\r\n '$rootScope',\r\n '$timeout',\r\n 'getBillingSummaryService',\r\n];\r\n\r\nfunction BillingAndPaymentActivityController(\r\n $log,\r\n $scope,\r\n $window,\r\n assetService,\r\n bpacsvService,\r\n commonService,\r\n getLoggedInUserDetailsService,\r\n invoiceImageService,\r\n invoiceTransformImageService,\r\n getInvoiceDetailsService,\r\n getInvoiceListService,\r\n getPaymentHistoryService,\r\n modalService,\r\n sessionStorageService,\r\n accountSearchService,\r\n getAccountBalanceForRegularAccountService,\r\n commongaTaggingService,\r\n ccBPAInvoiceSelectorService,\r\n $rootScope,\r\n $timeout,\r\n getBillingSummaryService,\r\n) {\r\n /* -----------------------Scope Vars---------------------------*/\r\n let dataObj = {};\r\n const dueDate = assetService.strings.SORTBY_DATEFORSORT;\r\n const fileName = 'ExportedData';\r\n let bpName = '';\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n let globalSelectedAccountEmail = '';\r\n let invoiceDetailsData = [];\r\n let invoiceListData = [];\r\n let invoiceCommonListData = [];\r\n let mergedData = [];\r\n const pageCase = 'bill';\r\n let paramObj = {};\r\n let paymentsData = [];\r\n let paymentsListData = [];\r\n let invoiceListDataModified = [];\r\n let paymentDescription = {};\r\n let windowReference = null;\r\n const isSafari =\r\n navigator.vendor.match(/apple/i) &&\r\n !navigator.userAgent.match(/crios/i) &&\r\n !navigator.userAgent.match(/fxios/i) &&\r\n !navigator.userAgent.match(/Opera|OPT\\//);\r\n\r\n /* -----------------------Global Vars---------------------------*/\r\n const vm = this;\r\n vm.init = init;\r\n vm.paymentMethod = [];\r\n vm.accountSearch = {};\r\n vm.activeDetails = [];\r\n vm.activeError = [];\r\n vm.currentUser = {};\r\n vm.contractAccountId = null;\r\n vm.emptyState = false;\r\n vm.dropdownOptions = [\r\n { value: '', text: assetService.strings.TEXT_ALLACTIVITY },\r\n {\r\n value: assetService.strings.TYPE_BILL,\r\n text: assetService.strings.TEXT_BILLS,\r\n },\r\n {\r\n value: assetService.strings.TYPE_PAYMENT,\r\n text: assetService.strings.TEXT_PAYMENTS,\r\n },\r\n ];\r\n vm.filteredByCategory = '';\r\n vm.limit = 13; // Initial displayed rows in Table\r\n vm.loadingSpinner = true;\r\n vm.mergedData = null;\r\n vm.minusTableHeaders = [\r\n {\r\n column: assetService.strings.SORTBY_DATEFORSORT,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.SORTBY_DESC,\r\n sortAsc: true,\r\n },\r\n {\r\n column: assetService.strings.SORTBY_DUEAMOUNT,\r\n sortAsc: true,\r\n },\r\n ];\r\n vm.orderBy = assetService.strings.SORTBY_DATEFORSORT;\r\n vm.orderPos = 0;\r\n vm.sortAsc = true;\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.hasGasAccount = false;\r\n vm.hasElectricMeter = false;\r\n vm.editPayment = editPayment;\r\n vm.cancelPayment = cancelPayment;\r\n vm.editOnetimePayment = editOnetimePayment;\r\n vm.cancelOnetimePayment = cancelOnetimePayment;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.hideAccount = hideAccount;\r\n vm.closeToast = closeToast;\r\n vm.showEditPaymentToastEvents = showEditPaymentToastEvents;\r\n vm.showToast = false;\r\n vm.contributionProgram = [];\r\n vm.data = {\r\n messageOption: '', //vm.sessionData.messageOption;\r\n option: '', //vm.sessionData.option;\r\n show: '',\r\n };\r\n vm.dropdownSelected = assetService.strings.TEXT_ALLACTIVITY;\r\n vm.isClosed = false;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n /* --------------Function Definitions------------------------*/\r\n function loading(value) {\r\n vm.loadingSpinner = value;\r\n }\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case assetService.roles.owner:\r\n vm.ownerRole = true;\r\n break;\r\n case assetService.roles.admin:\r\n vm.adminRole = true;\r\n break;\r\n case assetService.roles.viewer:\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n function hasUsage() {\r\n vm.hasGasAccount = globalSelectedAccount.isGasAccount ? true : false;\r\n vm.hasElectricMeter = globalSelectedAccount.isElectricMeter ? true : false;\r\n vm.isClosed = globalSelectedAccount.status == 'Closed' ? true : false;\r\n }\r\n function closeToast() {\r\n vm.data.show = 'fade-out';\r\n vm.showToast = false;\r\n }\r\n\r\n function editPayment(index) {\r\n const itemId = vm.mergedData[index].itemId;\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n 'billingAndPaymentAcivity',\r\n );\r\n }\r\n\r\n function cancelPayment(index) {\r\n const itemId = vm.mergedData[index].itemId;\r\n const contractAccountID = vm.contractAccountId;\r\n const businessPartnerId = vm.businessPartnerId;\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n itemId,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.contractAccountID,\r\n contractAccountID,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.businessPartnerId,\r\n businessPartnerId,\r\n );\r\n modalService.cancelPayment();\r\n }\r\n\r\n function editOnetimePayment(item) {\r\n const itemId = item;\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n itemId,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.editScheduledPayment,\r\n item,\r\n );\r\n }\r\n\r\n function cancelOnetimePayment(item) {\r\n const itemId = item.itemId;\r\n const contractAccountID = vm.contractAccountId;\r\n const businessPartnerId = vm.businessPartnerId;\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n itemId,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.contractAccountID,\r\n contractAccountID,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.businessPartnerId,\r\n businessPartnerId,\r\n );\r\n ccBPAInvoiceSelectorService.setInvoiceObject(item);\r\n modalService.cancelOnetimePayment();\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function viewBillAttributePush() {\r\n //let subheadlineValue = 'view-bill-|-bill-generated-successfully';\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'buttonText:' + $('#hdn-dd').attr('labelPDF'),\r\n );\r\n }\r\n\r\n function pdfNotFoundAttibutePush() {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('eventCategoryPDF'),\r\n 'headline:' + $('#hdn-dd').attr('businessFunction'),\r\n 'subheadline:' + $('#hdn-dd').attr('labelPDF'),\r\n 'buttonText:' + 'not-set',\r\n 'addedSpec:' + assetService.sitecoreEndpoints.InvoiceImage,\r\n 'addedEvent:' + $('#hdn-dd').attr('eventActionPDF'),\r\n );\r\n virtualPagePush(\r\n $('#hdn-dd').attr('businessFunction'),\r\n $('#hdn-dd').attr('businessFunction'),\r\n $('#hdn-dd').attr('labelPDF'),\r\n 'error',\r\n 'not set',\r\n );\r\n }\r\n\r\n function emptyPageAttibutePush() {\r\n attributePush(\r\n 'headline:' + $('#hdn-dd').attr('eventCategoryLoad'),\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'subheadline:' + $('#hdn-dd').attr('evenActionLoad'),\r\n );\r\n }\r\n\r\n function sortByColumn(value) {\r\n vm.orderBy = vm.minusTableHeaders[value].column;\r\n vm.orderPos = value;\r\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\r\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\r\n }\r\n\r\n function showError(value, rule) {\r\n if (rule !== 0) {\r\n vm.activeError[value] = true;\r\n } else {\r\n for (let index = 0; index < vm.activeError.length; index++) {\r\n vm.activeError[index] = false;\r\n }\r\n }\r\n }\r\n\r\n function activateDetails(item) {\r\n vm.mergedData.forEach(data => {\r\n data.active = data != item ? false : item.active;\r\n });\r\n\r\n if (!item.active) {\r\n if (item.type === assetService.strings.TYPE_BILL) {\r\n dataObj.invoiceId = item.itemId;\r\n const detailsPromise = [getDetails(dataObj)];\r\n commonService.executePromises(detailsPromise).then(() => {\r\n elemDetails = invoiceDetailsData;\r\n // invoiceDetailsData.forEach(elemDetails => {\r\n item.prevAmountDue = Number(elemDetails.PastDueAmt);\r\n item.paymentReceived = Number(elemDetails.PaymentRecieved);\r\n item.currentCharges = Number(elemDetails.CurrentCharges);\r\n item.totalAmountDue = Number(invoiceCommonListData[0].totalAmountDue);\r\n item.totalElectricUsage = Number(elemDetails.TotalKwhqt);\r\n item.avgDailyElectricCost = Number(elemDetails.DailyKwhCost);\r\n item.totalGasUsage = Number(elemDetails.TotCcfqt);\r\n item.avgDailyGasCost = Number(elemDetails.DailyCcfCost);\r\n // });\r\n });\r\n }\r\n }\r\n\r\n item.active = !item.active;\r\n }\r\n\r\n function getDetails(dataObj) {\r\n return getBillingSummaryService.sitecore\r\n .getBillingSummary(dataObj)\r\n .then(result => {\r\n invoiceCommonListData = invoiceListData.filter(\r\n listElement => listElement.itemId == dataObj.invoiceId,\r\n );\r\n paymentsListData = paymentsData.filter(\r\n payments => payments.dueAmount == invoiceCommonListData[0].dueAmount,\r\n );\r\n invoiceDetailsData = _.map(result.d.InvoiceDetails, details => ({\r\n active: true,\r\n invID: details.InvoiceId,\r\n prevAmountDue: details.PastDueAmt ? Number(details.PastDueAmt) : '', // Waiting to be added to the JSON response\r\n paymentReceived: details.PaymentRecieved\r\n ? Number(details.PaymentRecieved)\r\n : '', // Waiting to be added to the JSON response\r\n currentCharges: details.CurrentCharges\r\n ? Number(details.CurrentCharges)\r\n : '',\r\n totalAmountDue: invoiceCommonListData[0].totalAmountDue\r\n ? Number(invoiceCommonListData[0].totalAmountDue)\r\n : '', // Waiting to be added to the JSON response\r\n totalElectricUsage: details.TotalKwhqt,\r\n avgDailyElectricCost: details.DailyKwhCost,\r\n totalGasUsage: details.TotCcfqt,\r\n avgDailyGasCost: details.DailyCcfCost,\r\n // ...details, //Checking if is necesary to attach the whole info.\r\n }));\r\n invoiceDetailsData = result.d.InvoiceDetails;\r\n });\r\n }\r\n\r\n function printData() {\r\n const attributeElement = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(attributeElement);\r\n window.print();\r\n }\r\n\r\n function BPToExport(mergedData) {\r\n vm.loadingSpinner = true;\r\n let mergedBillData = _.filter(mergedData, item => {\r\n if (item.type === assetService.strings.TYPE_BILL) {\r\n return item;\r\n }\r\n });\r\n let counter = 0;\r\n mergedData.forEach((elem, index) => {\r\n if (elem.type === assetService.strings.TYPE_BILL) {\r\n dataObj.invoiceId = elem.itemId;\r\n return getBillingSummaryService.sitecore\r\n .getBillingSummary(dataObj)\r\n .then(result => {\r\n const elemDetails = result.d.InvoiceDetails;\r\n elem.totalElectricUsage = Number(elemDetails.TotalKwhqt);\r\n elem.avgDailyElectricCost = Number(elemDetails.DailyKwhCost);\r\n elem.totalGasUsage = Number(elemDetails.TotCcfqt);\r\n elem.avgDailyGasCost = Number(elemDetails.DailyCcfCost);\r\n elem.currentCharges = Number(elemDetails.CurrentCharges);\r\n elem.prevAmountDue = Number(elemDetails.PastDueAmt);\r\n elem.paymentReceived = Number(elemDetails.PaymentRecieved);\r\n\r\n if (counter == mergedBillData.length - 1) {\r\n if (!globalSelectedAccount.prepaid) {\r\n const dataToMerge = [invoiceListData, paymentsData];\r\n mergedData = _.spread(_.union)(dataToMerge);\r\n vm.mergedData = _.orderBy(\r\n mergedData,\r\n [dueDate],\r\n ['desc', 'asc'],\r\n );\r\n } else {\r\n vm.mergedData = _.orderBy(\r\n paymentsData,\r\n [dueDate],\r\n ['desc', 'asc'],\r\n );\r\n }\r\n $timeout(function() {\r\n vm.loadingSpinner = false;\r\n bpacsvService.exportToCSV(\r\n pageCase,\r\n vm.mergedData,\r\n fileName,\r\n vm.contributionProgram[0],\r\n );\r\n }, 1000);\r\n }\r\n counter = counter + 1;\r\n });\r\n }\r\n });\r\n }\r\n function hideAccount(value) {\r\n let convertedValue = value;\r\n if (convertedValue && !isNaN(convertedValue)) {\r\n const stringLength = convertedValue.length,\r\n visibleDigits = 4;\r\n if (stringLength > visibleDigits) {\r\n convertedValue = convertedValue.slice(-visibleDigits);\r\n }\r\n convertedValue = `*****${convertedValue}`;\r\n }\r\n return convertedValue;\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n 'billing-And-Payment-Acivity',\r\n );\r\n vm.contractAccountId = globalAccountInfo.hasOwnProperty('accountSelected')\r\n ? globalSelectedAccount.accountNum\r\n : '';\r\n let relatedBPInSession = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n vm.zipCode = globalAccountInfo.hasOwnProperty('accountSelected')\r\n ? globalAccountInfo.accountSelected.zipCode\r\n : '';\r\n if (\r\n globalAccountInfo.accountSelected &&\r\n globalAccountInfo.accountSelected.relatedBP\r\n )\r\n vm.businessPartnerId = globalAccountInfo.accountSelected.relatedBP;\r\n else if (relatedBPInSession) vm.businessPartnerId = relatedBPInSession;\r\n else {\r\n console.warn('[WARNING] Related BP is unavailable. Using primary BP.');\r\n vm.businessPartnerId = globalAccountInfo.hasOwnProperty('accountSelected')\r\n ? globalSelectedAccount.bpNumber\r\n : '';\r\n }\r\n\r\n vm.EmailID = globalSelectedAccountEmail;\r\n\r\n dataObj = {\r\n contractAccountId: vm.contractAccountId,\r\n businessPartner: vm.businessPartnerId,\r\n invoiceId: null,\r\n EmailID: vm.EmailID,\r\n userId: vm.currentUser.cdpId,\r\n requestedBy: vm.currentUser.emailId, //Get RequestedBy Value\r\n zipCode: vm.zipCode,\r\n };\r\n getRole();\r\n\r\n const promises = [\r\n getBills(),\r\n getPayments(),\r\n getAccountBalance({\r\n accountList: [\r\n {\r\n contractAccountNumber: dataObj.contractAccountId,\r\n zipCode: dataObj.zipCode,\r\n },\r\n ],\r\n }),\r\n accountSearch(),\r\n ];\r\n commonService.executePromises(promises).then(() => {\r\n if (!globalSelectedAccount.prepaid) {\r\n const dataToMerge = [invoiceListData, paymentsData];\r\n mergedData = _.spread(_.union)(dataToMerge);\r\n vm.mergedData = _.orderBy(mergedData, [dueDate], ['desc', 'asc']);\r\n } else {\r\n vm.mergedData = _.orderBy(paymentsData, [dueDate], ['desc', 'asc']);\r\n }\r\n if (vm.mergedData.length === 0) {\r\n vm.emptyState = true;\r\n emptyPageAttibutePush();\r\n } else {\r\n vm.emptyState = false;\r\n }\r\n vm.allActivityData = vm.mergedData;\r\n hasUsage();\r\n loading(false);\r\n });\r\n }\r\n\r\n function showPDFModal() {\r\n pdfNotFoundAttibutePush();\r\n modalService.pdfNotFound();\r\n }\r\n\r\n function accountSearch() {\r\n return accountSearchService.sitecore\r\n .cacheAccountSearch({\r\n contractAccountId: vm.contractAccountId,\r\n })\r\n .then(\r\n result => {\r\n vm.accountSearch = {\r\n installationNumber:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .InstallationNumber,\r\n meterNumber:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .MeterNumber,\r\n meterType:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0]\r\n .MeterType,\r\n division:\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0].Division,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalance(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n if (\r\n result.getAccountAndBillingInfoResList[0].messageList.length > 0 &&\r\n result.getAccountAndBillingInfoResList[0].messageList[0]\r\n .messageCode !== '80 ' &&\r\n result.getAccountAndBillingInfoResList[0].messageList[0]\r\n .messageCode !== 'PO'\r\n ) {\r\n const response = _.map(\r\n result.getAccountAndBillingInfoResList[0].messageList,\r\n msg => ({\r\n displayCPIMessage: true,\r\n message: msg.message,\r\n }),\r\n );\r\n vm.displayCPIMessage = response[0].displayCPIMessage;\r\n vm.message = response[0].message;\r\n }\r\n let accountSelected = result.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber ==\r\n globalAccountInfo.accountSelected.accountNum,\r\n );\r\n const infoResList = accountSelected[0];\r\n let _dueAmount = infoResList.totalDueDlrs\r\n ? infoResList.totalDueDlrs\r\n : '0.00';\r\n sessionStorageService.set('fullDueAmount', _dueAmount);\r\n\r\n bpName = result.getAccountAndBillingInfoResList[0].businessCustName;\r\n vm.paynowStatus =\r\n result.getAccountAndBillingInfoResList[0].cashOnly === 'T'\r\n ? false\r\n : true;\r\n return _dueAmount;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getDocument(item) {\r\n if (isSafari) {\r\n windowReference = window.open();\r\n windowReference.document.body.innerHTML = 'Please wait...';\r\n }\r\n const invoiceId = item.archieveId;\r\n paramObj = {\r\n documentNumber: invoiceId,\r\n };\r\n return invoiceImageService.sitecore.invoceImage(paramObj).then(\r\n result => {\r\n if (\r\n result &&\r\n result.MessageReply &&\r\n result.MessageReply.replyCode &&\r\n result.MessageReply.replyCode != ''\r\n ) {\r\n let hexValue = result.MessageReply.replyCode;\r\n if (hexValue && item.isImageAvailable) {\r\n let base64Value = hexToBase64(hexValue);\r\n function hexToBase64(str) {\r\n return btoa(\r\n str\r\n .match(/\\w{2}/g)\r\n .map(function(a) {\r\n return String.fromCharCode(parseInt(a, 16));\r\n })\r\n .join(''),\r\n );\r\n }\r\n const byteCharacters = atob(base64Value);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const file = new Blob([byteArray], { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n viewBillAttributePush();\r\n if (isSafari) {\r\n windowReference.location = fileURL;\r\n } else {\r\n window.open(fileURL);\r\n }\r\n }\r\n //viewBillAttributePush();\r\n } else {\r\n if (isSafari) {\r\n windowReference.close();\r\n }\r\n showPDFModal();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function getBills() {\r\n return getInvoiceListService.sitecore.getInvoiceList(dataObj).then(\r\n result => {\r\n invoiceListData = _.map(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n invoice => ({\r\n itemId: invoice.InvId,\r\n archieveId: invoice.InvArchieveId,\r\n active: false,\r\n payBillVisible: false,\r\n dateForSort: invoice.InvDateStr,\r\n dueDate: moment(invoice.InvDateStr).format('MM/DD/YY'),\r\n type: assetService.strings.TYPE_BILL,\r\n description: `${moment(invoice.BillStartDate)\r\n .utc()\r\n .format('MMM DD')} to ${moment(invoice.BillEndDate)\r\n .utc()\r\n .format('MMM DD')} Bill (${invoice.BillDays}Days)`, // Blocked, waiting to be added to the JSON response\r\n dueAmount: Number(invoice.InvAmt),\r\n errorFlag: invoice.PastDueFlg,\r\n // Details to be reassigned on next GET DETAILS\r\n prevAmountDue: Number(invoice.PastDueAmt), //pastamountdue\r\n paymentReceived: -Number(invoice.TotalAmount),\r\n currentCharges: Number(invoice.Charges),\r\n totalAmountDue: Number(invoice.InvAmt),\r\n totalElectricUsage: Number(invoice.totalElectricUsage),\r\n avgDailyElectricCost: Number(invoice.avgDailyElectricCost),\r\n totalGasUsage: Number(invoice.totalGasUsage),\r\n avgDailyGasCost: Number(invoice.avgDailyGasCost),\r\n bpName: vm.currentUser.emailId,\r\n accountNumber: globalSelectedAccount.accountNum,\r\n address: globalAccountInfo.accountSelected.address,\r\n billDays: Number(invoice.BillDays),\r\n billDate: `${moment(invoice.BillStartDate)\r\n .utc()\r\n .format('MMM DD')} to ${moment(invoice.BillEndDate)\r\n .utc()\r\n .format('MMM DD')}`,\r\n isImageAvailable: invoice.IsImageAvlbl,\r\n\r\n //totalAmountPaid : Number(invoice.totalAmountPaid)\r\n // ...invoice, //Checking if is necesary to attach the whole info.\r\n }),\r\n );\r\n if (invoiceListData.length > 0) {\r\n invoiceListDataModified = invoiceListData;\r\n invoiceListDataModified = _.orderBy(\r\n invoiceListDataModified,\r\n [dueDate],\r\n ['desc', 'asc'],\r\n );\r\n invoiceListDataModified[0].payBillVisible = true;\r\n invoiceListData = invoiceListDataModified;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function exportCSV() {\r\n BPToExport(invoiceListData);\r\n }\r\n\r\n function getPayments() {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(\r\n result => { \r\n paymentsData = _.map(\r\n result.d.Req_Inp.results[0].Inp_Res.results,\r\n payment => ({\r\n itemId: payment.Payment_Doc,\r\n active: false,\r\n dateForSort:\r\n payment.Payment_Status == 'SCHEDULED'\r\n ? payment.Payment_Due_Date\r\n : payment.Payment_Date,\r\n paymentDateLabel:\r\n payment.Payment_Status == 'SCHEDULED'\r\n ? 'Payment Created:'\r\n : 'Payment Date:',\r\n paymentDate:\r\n payment.Payment_Status == 'SCHEDULED'\r\n ? moment(payment.Payment_Due_Date)\r\n .utc()\r\n .format('MM/DD/YY')\r\n : moment(payment.Payment_Date)\r\n .utc()\r\n .format('MM/DD/YY'),\r\n dueDate:\r\n payment.Payment_Status == 'SCHEDULED'\r\n ? moment(payment.Payment_Due_Date)\r\n .utc()\r\n .format('MM/DD/YY')\r\n : moment(payment.Payment_Date)\r\n .utc()\r\n .format('MM/DD/YY'), // Same as paymentDate\r\n type: assetService.strings.TYPE_PAYMENT,\r\n description: payment.Payment_Desc ? `${payment.Payment_Desc}` : '',\r\n dueAmount:\r\n payment.Payment_Status == 'RETURNED'\r\n ? Number(payment.Payment_Amount)\r\n : -Number(payment.Payment_Amount), // Same as paymentAmount\r\n confirmNumber: payment.Confirmation_Code,\r\n paymentMethod: paymentDescription[payment.Payment_Method]\r\n ? paymentDescription[payment.Payment_Method]\r\n : '',\r\n routingNumber: payment.Routing_No,\r\n accountNumber: payment.Payment_Account\r\n ? `- Bank Account ${hideAccount(payment.Payment_Account)}`\r\n : '',\r\n accountNumberExpand: payment.Payment_Account,\r\n paymentStatus: payment.Payment_Status,\r\n contributionMethod: payment.ContributionProg,\r\n energyNeighborFund: payment.ContributionAmount,\r\n isConrtributionEligible:\r\n payment.ContributionProg && payment.ContributionAmount\r\n ? true\r\n : false,\r\n totalAmountPaid: payment.Payment_Amount,\r\n kubra: payment.Confirmation_Code !== '' ? true : false,\r\n oneTimePayment:\r\n payment.Confirmation_Code && payment.Payment_Status == 'SCHEDULED'\r\n ? true\r\n : false,\r\n excludedContributionAmount: payment.ExcludedContributionAmount,\r\n contributionStatus:\r\n payment.ContributionAmount !== '' ? true : false,\r\n // ...payment, //Checking if is necesary to attach the whole info.\r\n }),\r\n );\r\n\r\n if(paymentsData) { \r\n paymentsData.forEach(item => {\r\n if(item.dateForSort && _.includes(item.dateForSort, (\"/Date(\"))) { \r\n let dateString = item.dateForSort.substring(6); \r\n let currentTime = new Date(parseInt(dateString )); \r\n let month = currentTime.getMonth() + 1; \r\n let day = currentTime.getDate() + 1;\r\n let year = currentTime.getFullYear();\r\n if(day && day === 32) {\r\n day = 01;\r\n month = month + 1;\r\n if(month && month === 13) {\r\n month = 01;\r\n year = year + 1;\r\n } \r\n }\r\n let date = month + \"/\" + day + \"/\" + year;\r\n let getTheDate = moment(date).utc().format('YYYY-MM-DD');\r\n item.dateForSort = getTheDate;\r\n }\r\n }); \r\n } \r\n \r\n vm.contributionProgram = _.filter(paymentsData, item => {\r\n if (item.isConrtributionEligible) {\r\n return item.contributionMethod;\r\n }\r\n }); \r\n paymentsData = _.filter(paymentsData, item => {\r\n if (item.paymentStatus != 'CANCELLED') {\r\n return item;\r\n }\r\n });\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n ); \r\n }\r\n\r\n // function showEditPaymentToast() {\r\n // if (vm.fromEditScheduledpayment) {\r\n // if (vm.data.option == 'success') {\r\n // setTimeout(function() {\r\n // vm.data.show = 'fade-out';\r\n // vm.showToast = false;\r\n // vm.fromEditScheduledpayment = false;\r\n // sessionStorageService.set(\r\n // assetService.storageKeys.billingAndPaymentActivity.showToast,\r\n // false,\r\n // );\r\n // }, 12000);\r\n // }\r\n // }\r\n // }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on('dropdown', (index, data) => {\r\n vm.dropdownSelected = data.valueName;\r\n vm.filteredByCategory = data.value;\r\n vm.limit = 13;\r\n attributePush(\r\n 'workFlow:' + $('#hdn-dd').attr('businessFunction'),\r\n 'headline:' + $('#hdn-dd').attr('headLine'),\r\n 'addedSpec:' + data.valueName,\r\n 'buttonText:' + $('#hdn-dd').attr('addedSpec'),\r\n );\r\n if (data && data.valueName && data.valueName === 'Bills') {\r\n vm.mergedData = invoiceListData;\r\n } else if (data && data.valueName && data.valueName === 'Payments') {\r\n vm.mergedData = paymentsData;\r\n } else {\r\n vm.mergedData = vm.allActivityData;\r\n }\r\n //showToast();\r\n });\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\r\n }\r\n\r\n vm.loadingSpinner = true;\r\n init();\r\n });\r\n\r\n function showEditPaymentToastEvents() {\r\n let windowTitle = document.title;\r\n if (vm.data.option == 'success') {\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + windowTitle,\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n windowTitle,\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n setTimeout(() => {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.data.show = 'fade-out';\r\n vm.showToast = false;\r\n }, 12000);\r\n } else if (vm.data.option == 'error') {\r\n vm.showToast = true;\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + windowTitle,\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n windowTitle,\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.reloadBillingAndPaymentAct, () => {\r\n vm.loadingSpinner = true;\r\n vm.fromCancelpayment = true;\r\n vm.fromCancelOnetimepayment = true;\r\n let windowTitle = document.title;\r\n init();\r\n if (vm.data.option == 'success') {\r\n attributePush(\r\n 'workFlow:' + $('#hdn-toast').attr('businessFunction'),\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + windowTitle,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n windowTitle,\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n setTimeout(function() {\r\n //document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\r\n vm.data.show = 'fade-out';\r\n vm.showToast = false;\r\n }, 12000);\r\n } else if (vm.data.option == 'error') {\r\n vm.showToast = true;\r\n attributePush(\r\n 'workFlow:' + $('#hdn-toast').attr('businessFunction'),\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + windowTitle,\r\n );\r\n virtualPagePush(\r\n $('#hdn-toast').attr('businessFunction'),\r\n windowTitle,\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n }\r\n });\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.activateDetails = activateDetails;\r\n vm.exportCSV = exportCSV;\r\n vm.getDocument = getDocument;\r\n vm.loading = loading;\r\n vm.printData = printData;\r\n vm.showError = showError;\r\n vm.sortByColumn = sortByColumn;\r\n vm.fromCancelpayment = false;\r\n vm.fromCancelOnetimepayment = false;\r\n vm.fromEditScheduledpayment = false;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n if ($scope.paymentMethod) {\r\n vm.paymentMethod = $scope.paymentMethod;\r\n vm.paymentMethod.forEach(item => {\r\n paymentDescription[item.split(':')[0]] = item.split(':')[1];\r\n });\r\n }\r\n vm.fromEditScheduledpayment = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.showToast,\r\n );\r\n\r\n $window.scrollTo(0, 0);\r\n if (\r\n vm.fromCancelpayment ||\r\n vm.fromCancelOnetimepayment ||\r\n vm.fromEditScheduledpayment\r\n ) {\r\n vm.showToast = true;\r\n vm.data.option = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.toastNotification,\r\n );\r\n vm.data.messageOption = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n );\r\n vm.data.show = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n );\r\n if (vm.fromEditScheduledpayment === true) {\r\n showEditPaymentToastEvents();\r\n }\r\n } else vm.showToast = false;\r\n if (assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n globalSelectedAccountEmail = globalAccountInfo.userEmail;\r\n }\r\n vm.currentUser = {\r\n emailId: $rootScope.currentUserEmailId,\r\n cdpId: $rootScope.currentUserCdpId,\r\n };\r\n load();\r\n vm.fromEditScheduledpayment = false;\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.showToast,\r\n false,\r\n );\r\n // showEditPaymentToast();\r\n }\r\n $scope.sharedCtrl.dataCodeTreatment.h1 = $('#hdn-dd').attr(\r\n 'businessFunction',\r\n );\r\n if (!$scope.sharedCtrl.dataCodeTreatment.h1.length)\r\n $scope.sharedCtrl.dataCodeTreatment.h1 = 'Billing & Payment Activity.';\r\n }\r\n}\r\n","app.controller('CCCancelOnetimePaymentModal', CCCancelOnetimePaymentModal);\r\nCCCancelOnetimePaymentModal.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'broadcastService',\r\n 'cancelScheduledPaymentsKubraService',\r\n 'ccAutoPayAssetService',\r\n 'commonService',\r\n 'getPaymentHistoryService',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'ccBPAInvoiceSelectorService',\r\n 'commongaTaggingService',\r\n 'makeOneTimeMonthlyContributionService',\r\n 'returnApplicableProgramsService',\r\n];\r\nfunction CCCancelOnetimePaymentModal(\r\n $log,\r\n assetService,\r\n broadcastService,\r\n cancelScheduledPaymentsKubraService,\r\n ccAutoPayAssetService,\r\n commonService,\r\n getPaymentHistoryService,\r\n sessionStorageService,\r\n $modalInstance,\r\n ccBPAInvoiceSelectorService,\r\n commongaTaggingService,\r\n makeOneTimeMonthlyContributionService,\r\n returnApplicableProgramsService,\r\n) {\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n let _documentId = null;\r\n let _premisseId = null;\r\n const _cancel =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Cancel;\r\n const _onePayment =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.ONE_TIME_PAYMENT;\r\n\r\n /* --------------Scope Vars-----------------------*/\r\n vm.data = {};\r\n vm.reqObj = {};\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.contributionProgram = {};\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function returnApplicablePrograms(data) {\r\n return returnApplicableProgramsService.sitecore\r\n .returnApplicablePrograms(data)\r\n .then(\r\n result => {\r\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(\r\n ':',\r\n );\r\n vm.contributionProgram = {\r\n id: _temporalProgram[0].trim(),\r\n name: _temporalProgram[1],\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function makeContributionPayment(data) {\r\n return makeOneTimeMonthlyContributionService.sitecore\r\n .makeOneTimeMonthlyContribution(data)\r\n .then(\r\n result => {\r\n vm.makeContributionPaymentResponse = {\r\n replyCode: result.d.Message.ZreplyCode,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function cancelOneTimeContribution() {\r\n _dataToPostContributionCancel = {\r\n action: _cancel,\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: _businessPartnerId,\r\n programName: vm.contributionProgram.id,\r\n donationAmount: `${vm.reqObj.energyNeighborFund}`,\r\n monthly: _onePayment,\r\n numberMonths: '',\r\n };\r\n //if contribution already present, cancel the existing\r\n if (vm.reqObj.isConrtributionEligible) {\r\n makeContributionPayment(_dataToPostContributionCancel);\r\n }\r\n }\r\n\r\n function cancelPayment() {\r\n vm.reqObj = ccBPAInvoiceSelectorService.getInvoiceObject();\r\n const data = {\r\n businessPartnerId: _businessPartnerId,\r\n //amount: vm.reqObj.contributionMethod ? vm.reqObj.excludedContributionAmount : vm.reqObj.totalAmountPaid,\r\n amount: vm.reqObj.totalAmountPaid,\r\n date: moment(vm.reqObj.dueDate).format('YYYY-MM-DDTHH:mm:ss'),\r\n paymentId: vm.reqObj.confirmNumber,\r\n contractAccountId: _contractAccountId,\r\n cardType: 'BankCard',\r\n };\r\n // service to cancel Kubra payment\r\n cancelScheduledPaymentsKubraService.sitecore\r\n .cancelScheduledPayment(data)\r\n .then(\r\n result => {\r\n if (result.success) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n 'Your payment has been successfully cancelled.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n cancelOneTimeContribution(); //Cancel any active contribution\r\n $modalInstance.close();\r\n broadcastService.reloadBPActivity();\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n 'We were unable to cancel your payment, please try again later.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n 'fade-infinite',\r\n );\r\n $modalInstance.close();\r\n broadcastService.reloadBPActivity();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getPayments() {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(\r\n result => {\r\n const paymentData = _.find(\r\n result.d.Req_Inp.results[0].Inp_Res.results,\r\n { Payment_Doc: _documentId },\r\n );\r\n vm.data.paymentData = {\r\n itemId: paymentData.Payment_Doc,\r\n active: false,\r\n dueDate: moment(paymentData.Payment_Date).format('MM/DD/YY'), // Same as paymentDate\r\n description: `(${paymentData.Payment_Status}) ${paymentData.Payment_Method} ${paymentData.Payment_Account}`,\r\n dueAmount: Number(paymentData.Payment_Amount), // Same as paymentAmount\r\n confirmNumber: paymentData.Confirmation_Code,\r\n paymentMethod: paymentData.Payment_Method,\r\n routingNumber: paymentData.Routing_No,\r\n accountNumber: paymentData.Payment_Account,\r\n paymentStatus: paymentData.Payment_Status,\r\n oneTimePayment:\r\n paymentData.Confirmation_Code &&\r\n paymentData.Payment_Status == 'SCHEDULED'\r\n ? true\r\n : false,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n _contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.contractAccountID,\r\n );\r\n _businessPartnerId = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.businessPartnerId,\r\n );\r\n _documentId = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _premisseId = _globalAccountInfo.accountSelected.premiseID;\r\n }\r\n vm.isContributionEligible = sessionStorageService.get(\r\n 'contributionEligibleStatus',\r\n );\r\n console.log(vm.isContributionEligible);\r\n dataObjApplicableProg = {\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: _businessPartnerId,\r\n premiseId: _premisseId,\r\n };\r\n dataObj = {\r\n contractAccountId: _contractAccountId,\r\n businessPartner: _businessPartnerId,\r\n };\r\n const promises = [\r\n getPayments(dataObj),\r\n returnApplicablePrograms(dataObjApplicableProg),\r\n ];\r\n commonService.executePromises(promises).then(() => {});\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.cancelPayment = cancelPayment;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('CCCancelPaymentModal', CCCancelPaymentModal);\r\nCCCancelPaymentModal.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'broadcastService',\r\n 'ccAutoPayAssetService',\r\n 'commonService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'getPaymentHistoryService',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'toastNotificationsService',\r\n 'commongaTaggingService',\r\n];\r\nfunction CCCancelPaymentModal(\r\n $log,\r\n assetService,\r\n broadcastService,\r\n ccAutoPayAssetService,\r\n commonService,\r\n enrollInBillingAndPaymentProgramsService,\r\n getPaymentHistoryService,\r\n sessionStorageService,\r\n $modalInstance,\r\n toastNotificationsService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n let _documentId = null;\r\n let _contractAccountId = null;\r\n let _businessPartnerId = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n const _success = assetService.replyCodes.ERROR;\r\n const _block = assetService.serviceActions.enrollInBillingAndPaymentPrograms.BLOCK;\r\n const globalSelectedAccount = {};\r\n /* --------------Scope Vars-----------------------*/\r\n vm.data = {};\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function cancelPayment() {\r\n enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms({\r\n action: _block,\r\n contractAccountId: _contractAccountId,\r\n progName: _DIRDEB,\r\n }).then((result) => {\r\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type === assetService.replyCodes.S) {\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'success');\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'Your payment has been successfully cancelled.');\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-in-out');\r\n $modalInstance.close();\r\n broadcastService.reloadBPActivity();\r\n } else {\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotification, 'error');\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationMessage, 'We were unable to cancel your payment, please try again later.');\r\n sessionStorageService.set(assetService.storageKeys.billingAndPaymentActivity.toastNotificationtime, 'fade-infinite');\r\n $modalInstance.close();\r\n broadcastService.reloadBPActivity();\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function getPayments() {\r\n return getPaymentHistoryService.sitecore.getPaymentHistory(dataObj).then(\r\n (result) => {\r\n const paymentData = _.find(result.d.Req_Inp.results[0].Inp_Res.results, { Payment_Doc: _documentId });\r\n vm.data.paymentData = {\r\n itemId: paymentData.Payment_Doc,\r\n active: false,\r\n dueDate: moment(paymentData.Payment_Date).format('MM/DD/YY'), // Same as paymentDate\r\n description: `(${paymentData.Payment_Status}) ${paymentData.Payment_Method} ${paymentData.Payment_Account}`,\r\n dueAmount: Number(paymentData.Payment_Amount), // Same as paymentAmount\r\n confirmNumber: paymentData.Confirmation_Code,\r\n paymentMethod: paymentData.Payment_Method,\r\n routingNumber: paymentData.Routing_No,\r\n accountNumber: paymentData.Payment_Account,\r\n paymentStatus: paymentData.Payment_Status,\r\n kubraPayment: paymentData.Confirmation_Code !== '',\r\n };\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n _contractAccountId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.contractAccountID);\r\n _businessPartnerId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.businessPartnerId);\r\n _documentId = sessionStorageService.get(assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment);\r\n dataObj = {\r\n contractAccountId: _contractAccountId,\r\n businessPartner: _businessPartnerId,\r\n };\r\n const promises = [getPayments(dataObj)];\r\n commonService.executePromises(promises).then(() => {\r\n\r\n });\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.cancelPayment = cancelPayment;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('CCEditPayment', CCEditPayment);\r\nCCEditPayment.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'cancelScheduledPaymentsKubraService',\r\n 'commonService',\r\n 'ccAutoPayAssetService',\r\n 'genericHelperService',\r\n 'makeOneTimeMonthlyContributionService',\r\n 'returnApplicableProgramsService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'modalService',\r\n 'ccBPAInvoiceSelectorService',\r\n '$scope',\r\n 'payNowOrScheduledService',\r\n 'broadcastService',\r\n 'getLoggedInUserDetailsService',\r\n 'getPaymentHistoryService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCEditPayment(\r\n $log,\r\n assetService,\r\n cancelScheduledPaymentsKubraService,\r\n commonService,\r\n ccAutoPayAssetService,\r\n genericHelperService,\r\n makeOneTimeMonthlyContributionService,\r\n returnApplicableProgramsService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n modalService,\r\n ccBPAInvoiceSelectorService,\r\n $scope,\r\n payNowOrScheduledService,\r\n broadcastService,\r\n getLoggedInUserDetailsService,\r\n getPaymentHistoryService,\r\n $rootScope,\r\n commongaTaggingService,\r\n) {\r\n /* -----------------------Global Vars---------------------------*/\r\n const vm = this;\r\n const _bankAccountId = ccAutoPayAssetService.strings.bankAccountId;\r\n const _bankDescription = ccAutoPayAssetService.strings.bankDescription;\r\n const _notEnrolled = assetService.recurringContributionsButtons.NOT_ENROLLED;\r\n const _donation =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Donation;\r\n const _update =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Update;\r\n const _cancel =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Cancel;\r\n const _onePayment =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.ONE_TIME_PAYMENT;\r\n const _toFixed = 2;\r\n let _bankAccountsOriginal = null;\r\n let _globalAccountInfo = null;\r\n let _newBankAccountIdGenerated = null;\r\n let _premisseId = null;\r\n let _documentId = null;\r\n let globalSelectedAccount = {};\r\n let isSetDate = false;\r\n let isSetAmount = false;\r\n let isSetPayment = false;\r\n vm.showSpinningLoader = false;\r\n vm.samePaymentError = false;\r\n /* -----------------------Scope Vars---------------------------*/\r\n vm.accountSelected = {\r\n accountId: null,\r\n accountNumber: null,\r\n nickname: null,\r\n rountingNumber: null,\r\n bankbpnumber: null,\r\n };\r\n vm.contributionProgram = {};\r\n vm.currentDayFormat = moment().format('MM/DD/YYYY');\r\n vm.dropdowns = {\r\n bankAccounts: null,\r\n };\r\n vm.endDate = moment()\r\n .add(1, 'years')\r\n .format('MM/DD/YYYY');\r\n vm.enrolledInKubra = true;\r\n vm.form = {\r\n editPayment: null,\r\n bankAccount: null,\r\n paymentDate: null,\r\n daysBeforePaymentDate: null,\r\n };\r\n vm.loaded = false;\r\n vm.loadingSpinner = true;\r\n (vm.accountWasNotSelected = true), (vm.makeContributionPaymentResponse = {});\r\n vm.makeContributionObj = {};\r\n vm.paymentData = {};\r\n vm.paymentHistory = {};\r\n vm.dueDate = '';\r\n vm.dueAmount = '';\r\n vm.startDate = moment()\r\n .add(1, 'days')\r\n .format('MM/DD/YYYY');\r\n vm.prepaidDetails = {};\r\n vm.addBankAccount = addBankAccount;\r\n vm.selectAccount = selectAccount;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.selectCalendarDate = selectCalendarDate;\r\n vm.contributionAmountCheck = contributionAmountCheck;\r\n vm.showDrops = true;\r\n vm.paymentObj = {};\r\n vm.isRedirect = false;\r\n vm.currentUser = {};\r\n vm.paydata = {};\r\n vm.showToastForEdit = false;\r\n vm.displayDate = {};\r\n vm.currentDate = new Date();\r\n var d = vm.currentDate.getDate();\r\n var m = vm.currentDate.getMonth();\r\n var y = vm.currentDate.getFullYear();\r\n vm.currentDatePlusOne = new Date(y, m, d);\r\n vm.amountToPay = undefined;\r\n vm.amountLength = undefined;\r\n vm.lengthError = false;\r\n vm.submitFullAmount = submitFullAmount;\r\n vm.checkPayment = false;\r\n vm.checkAmoutPaid = checkAmoutPaid;\r\n vm.savePaymentModal = savePaymentModal;\r\n vm.savePayment = savePayment;\r\n vm.getTheDue = undefined;\r\n vm.checkForError = false;\r\n vm.canPay = false;\r\n vm.checkAmtLimit = undefined;\r\n vm.amtLimit = undefined;\r\n vm.disableBtn = false;\r\n vm.creditAmount = '';\r\n vm.showAmountError = false;\r\n vm.showContriError = false;\r\n vm.showContriLimitError = false;\r\n vm.showBanner = false;\r\n vm.displayDueDate = true;\r\n vm.calendarTouched = false;\r\n vm.showBankError = false;\r\n vm.lastSelectedDate = '';\r\n //vm.paidAmount = 0;\r\n\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, () => {\r\n _newBankAccountIdGenerated = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n );\r\n reload();\r\n });\r\n\r\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, () => {\r\n _newBankAccountIdGenerated = null;\r\n reload();\r\n });\r\n /* --------------Function Definitions------------------------*/\r\n\r\n $scope.getAmountLimit = function(amountLimit, extraAmountLimit) {\r\n vm.checkAmtLimit = parseInt(extraAmountLimit);\r\n vm.amtLimit = parseInt(amountLimit);\r\n };\r\n\r\n function selectCalendarDate() {\r\n vm.calendarTouched = true;\r\n if (vm.form.selectDate !== undefined && vm.form.selectDate !== '') {\r\n if (vm.form.selectDate.indexOf(' ') > 0) {\r\n vm.form.selectDate = vm.form.selectDate.replace(/\\s+/g, '');\r\n vm.lastSelectedDate = vm.form.selectDate;\r\n }\r\n if (\r\n new Date(vm.form.selectDate).getTime() >=\r\n vm.currentDatePlusOne.getTime()\r\n ) {\r\n vm.disableSaveButton = false;\r\n }\r\n } else {\r\n vm.disableSaveButton = true;\r\n }\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function loading(value) {\r\n vm.loadingSpinner = value;\r\n }\r\n function reload() {\r\n vm.loaded = false;\r\n load();\r\n }\r\n\r\n function changeDate() {\r\n if (!vm.date.selectDate) {\r\n if ($scope.dateEnd.selectDate.$modelValue) {\r\n vm.date.selectDate = $scope.dateEnd.selectDate.$modelValue;\r\n }\r\n }\r\n }\r\n\r\n function returnApplicablePrograms(data) {\r\n return returnApplicableProgramsService.sitecore\r\n .returnApplicablePrograms(data)\r\n .then(\r\n result => {\r\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(\r\n ':',\r\n );\r\n vm.contributionProgram = {\r\n id: _temporalProgram[0].trim(),\r\n name: _temporalProgram[1],\r\n status:\r\n result.d.Programtores_nav.results[0].Status === _notEnrolled\r\n ? false\r\n : true,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function makeContributionPayment(data) {\r\n return makeOneTimeMonthlyContributionService.sitecore\r\n .makeOneTimeMonthlyContribution(data)\r\n .then(\r\n result => {\r\n vm.makeContributionPaymentResponse = {\r\n replyCode: result.d.Message.ZreplyCode,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function selectAccount(optionSelected) {\r\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\r\n addBankAccount();\r\n } else {\r\n findAccountAndSelectIt();\r\n }\r\n }\r\n function setDropdowns() {\r\n vm.showDrops = true;\r\n if (_bankAccountsOriginal && _bankAccountsOriginal.length > 0) {\r\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList(\r\n _bankAccountsOriginal,\r\n _bankAccountId,\r\n _bankDescription,\r\n );\r\n\r\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.bankAccounts,\r\n ccAutoPayAssetService.strings.value,\r\n _newBankAccountIdGenerated || vm.accountSelected.accountId,\r\n );\r\n } else {\r\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList(\r\n [],\r\n '',\r\n '',\r\n );\r\n vm.showDrops = false;\r\n }\r\n vm.dropdowns.bankAccounts.push({\r\n text: 'Add Account',\r\n value: ccAutoPayAssetService.strings.addAccount,\r\n });\r\n }\r\n\r\n function findAccountAndSelectIt() {\r\n const accountFound = _.find(\r\n _bankAccountsOriginal,\r\n account => account.BankAccountId === vm.form.bankAccount,\r\n );\r\n if (accountFound) {\r\n vm.accountSelected = {\r\n accountId: accountFound.BankAccountId,\r\n nickname: accountFound.BankDescription,\r\n rountingNumber: accountFound.BankRoutingNumber,\r\n accountNumber: accountFound.BankAccountNumber,\r\n bankbpnumber: accountFound.BankBp,\r\n };\r\n vm.accountWasNotSelected = false;\r\n }\r\n if (!isSetPayment) {\r\n $('#hdn_scheduledPay').attr('addedEvent', 'Payment Method');\r\n isSetPayment = true;\r\n }\r\n checkAmoutPaid();\r\n return accountFound;\r\n }\r\n function makeContribution() {\r\n _dataToPostContributionCancel = {\r\n action: _cancel,\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: _businessPartnerId,\r\n programName: vm.contributionProgram.id,\r\n donationAmount: `${vm.paymentData.energyNeighborFund}`,\r\n monthly: _onePayment,\r\n numberMonths: '',\r\n };\r\n _dataToPostContribution = {\r\n action: _donation,\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: _businessPartnerId,\r\n programName: vm.contributionProgram.id,\r\n donationAmount: isNaN(vm.form.contributionAmount)\r\n ? isNaN(vm.form.contributionAmount.charAt(0))\r\n ? vm.form.contributionAmount.substring(1).replace(/,/g, '')\r\n : String(vm.form.contributionAmount)\r\n : String(vm.form.contributionAmount),\r\n monthly: _onePayment,\r\n numberMonths: '',\r\n };\r\n //if contribution already present, cancel the existing\r\n if (vm.paymentData.isConrtributionEligible) {\r\n vm.makeContributionObj = _dataToPostContributionCancel;\r\n makeContributionPayment(vm.makeContributionObj);\r\n }\r\n //make a donation\r\n vm.makeContributionObj = _dataToPostContribution;\r\n makeContributionPayment(vm.makeContributionObj);\r\n }\r\n\r\n //Function to show modal when amount is greater than due\r\n function savePaymentModal() {\r\n if (vm.checkPayment == true) {\r\n vm.showSaveModal = true;\r\n } else {\r\n vm.showSaveModal = false;\r\n }\r\n if (!vm.showDrops) {\r\n vm.showBanner = true;\r\n vm.showSpinningLoader = false;\r\n }\r\n else if(vm.showDrops && vm.form.bankAccount == undefined) {\r\n vm.showBankError = true;\r\n vm.showSpinningLoader = false;\r\n } else {\r\n modalService.savePaymentModal();\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.updateSavedPayment, () => {\r\n save('my-account/billing-and-payment-activity');\r\n });\r\n\r\n $scope.$on(assetService.events.closePaymentModal, () => {\r\n vm.showSpinningLoader = false;\r\n });\r\n\r\n function savePayment() {\r\n vm.showSpinningLoader = true;\r\n if (!vm.showDrops) {\r\n vm.showBanner = true;\r\n vm.showSpinningLoader = false;\r\n document.getElementById('bankAccount').focus();\r\n return;\r\n }\r\n if(vm.showDrops && vm.form.bankAccount == undefined) {\r\n vm.showBankError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (vm.form.bankAccount == undefined) {\r\n document.getElementById('bankAccount').focus();\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (\r\n (vm.form.paymentDate == '2' &&\r\n vm.calendarTouched &&\r\n !vm.form.selectDate) ||\r\n vm.selectedDate == undefined ||\r\n vm.selectedDate == null\r\n ) {\r\n vm.showSpinningLoader = false;\r\n document.getElementById('selectDate').focus();\r\n return;\r\n }\r\n if (\r\n vm.paymentData.totalAmountPaid == _paymentAmount &&\r\n moment(vm.paymentData.dueDate).format('YYYY-MM-DD') ==\r\n moment(_paymentDate).format('YYYY-MM-DD') &&\r\n (vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) == \r\n vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4))\r\n ) {\r\n vm.isSameAmount = true;\r\n document.getElementById('editPayment')\r\n ? document.getElementById('editPayment').focus()\r\n : '';\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (vm.form.paymentAmount && (vm.showAmountError || vm.lengthError)) {\r\n document.getElementById('editPayment').focus();\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (vm.form.contribution) {\r\n if (!vm.form.contributionAmount) {\r\n vm.showContriError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n var contributionAmount =\r\n vm.form.contributionAmount[0] == '$'\r\n ? vm.form.contributionAmount.substring(1).replace(/,/g, '')\r\n : vm.form.contributionAmount;\r\n if (contributionAmount <= 0) {\r\n vm.showContriError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n } else {\r\n vm.showContriError = false;\r\n }\r\n if (contributionAmount > 500) {\r\n vm.showContriLimitError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n } else {\r\n vm.showContriLimitError = false;\r\n }\r\n }\r\n if (\r\n vm.canPay == false &&\r\n (vm.paymentData.totalAmountPaid != vm.form.otherAmount ||\r\n moment(vm.paymentData.dueDate).format('YYYY-MM-DD') !=\r\n moment(_paymentDate).format('YYYY-MM-DD') ||\r\n vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) != \r\n vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4))\r\n ) {\r\n vm.showSpinningLoader = false;\r\n savePaymentModal();\r\n } else {\r\n vm.isSameAmount = true;\r\n vm.showSpinningLoader = false;\r\n document.getElementById('editPayment').focus();\r\n }\r\n }\r\n\r\n function save(url) {\r\n vm.showSpinningLoader = true;\r\n if (!vm.showDrops) {\r\n vm.showBanner = true;\r\n vm.showSpinningLoader = false;\r\n document.getElementById('bankAccount')\r\n ? document.getElementById('bankAccount').focus()\r\n : '';\r\n return;\r\n }\r\n if(vm.showDrops && vm.form.bankAccount == undefined) {\r\n vm.showBankError = true;\r\n vm.showSpinningLoader = false; \r\n return;\r\n } \r\n if (vm.form.bankAccount == undefined) {\r\n document.getElementById('bankAccount')\r\n ? document.getElementById('bankAccount').focus()\r\n : '';\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (\r\n (vm.form.paymentDate == '2' &&\r\n vm.calendarTouched &&\r\n !vm.form.selectDate) ||\r\n vm.selectedDate == undefined ||\r\n vm.selectedDate == null\r\n ) {\r\n vm.showSpinningLoader = false;\r\n document.getElementById('selectDate')\r\n ? document.getElementById('selectDate').focus()\r\n : '';\r\n return;\r\n }\r\n if (vm.form.paymentAmount && (vm.showAmountError || vm.lengthError)) {\r\n document.getElementById('editPayment')\r\n ? document.getElementById('editPayment').focus()\r\n : '';\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n if (vm.form.contribution) {\r\n if (!vm.form.contributionAmount) {\r\n vm.showContriError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n var contributionAmount =\r\n vm.form.contributionAmount[0] == '$'\r\n ? vm.form.contributionAmount.substring(1).replace(/,/g, '')\r\n : vm.form.contributionAmount;\r\n if (contributionAmount <= 0) {\r\n vm.showContriError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n } else {\r\n vm.showContriError = false;\r\n }\r\n if (contributionAmount > 500) {\r\n vm.showContriLimitError = true;\r\n vm.showSpinningLoader = false;\r\n return;\r\n } else {\r\n vm.showContriLimitError = false;\r\n }\r\n }\r\n if (vm.selectedDate.indexOf(' ') > 0) {\r\n vm.selectedDate = vm.selectedDate.replace(/\\s+/g, '');\r\n }\r\n\r\n switch (vm.form.paymentDate) {\r\n case '0':\r\n _paymentDate = vm.currentDayFormat;\r\n break;\r\n case '1':\r\n _paymentDate = vm.dueData.dueDate;\r\n break;\r\n case '2':\r\n _paymentDate =\r\n vm.selectedDate !== undefined ? vm.selectedDate : vm.startDate;\r\n break;\r\n }\r\n\r\n switch (vm.form.paymentAmount) {\r\n case '0':\r\n _paymentAmount = vm.getFullAmount;\r\n break;\r\n case '1':\r\n _paymentAmount =\r\n vm.form.otherAmount[0] == '$'\r\n ? vm.form.otherAmount.substring(1).replace(/,/g, '')\r\n : vm.form.otherAmount;\r\n break;\r\n }\r\n\r\n if (\r\n vm.paymentData.totalAmountPaid == _paymentAmount &&\r\n moment(vm.paymentData.dueDate).format('YYYY-MM-DD') ==\r\n moment(_paymentDate).format('YYYY-MM-DD') &&\r\n (vm.accountSelected.accountNumber.substr(vm.accountSelected.accountNumber.length - 4) == \r\n vm.paymentData.accountNumberExpand.substr(vm.paymentData.accountNumberExpand.length - 4))\r\n ) {\r\n vm.isSameAmount = true;\r\n document.getElementById('editPayment')\r\n ? document.getElementById('editPayment').focus()\r\n : '';\r\n vm.showSpinningLoader = false;\r\n return;\r\n }\r\n // Call for cancel scheduled payment\r\n cancelScheduledPaymentsKubraService.sitecore\r\n .cancelScheduledPayment({\r\n businessPartnerId: _businessPartnerId,\r\n //amount: vm.paymentData.contributionMethod ? vm.paymentData.excludedContributionAmount : vm.paymentData.totalAmountPaid,\r\n amount: vm.paymentData.totalAmountPaid,\r\n date: moment(vm.paymentData.dueDate).format('YYYY-MM-DDTHH:mm:ss'),\r\n paymentId: vm.paymentData.confirmNumber,\r\n contractAccountId: _contractAccountId,\r\n cardType: 'BankCard',\r\n })\r\n .then(\r\n result => {\r\n if (result.success) {\r\n const payNow = [\r\n {\r\n language: 'EN',\r\n BusinessPartner: _businessPartnerId,\r\n accountNumber: _contractAccountId,\r\n amount: _paymentAmount,\r\n clientReferenceId: _businessPartnerId,\r\n date: _paymentDate,\r\n\r\n paySource: {\r\n channel: {\r\n type: 'Enrolled',\r\n enrolled: 'MobileWeb',\r\n unEnrolled: 'None',\r\n },\r\n },\r\n\r\n payType: {\r\n routing: 'Standard',\r\n mode: 'BankAccount',\r\n },\r\n payer: {\r\n payerName: '',\r\n eMail: vm.currentUser.emailId,\r\n },\r\n sapWalletProfile: {\r\n sapBankAccountId: vm.accountSelected.accountId,\r\n sapBankBp: vm.accountSelected.bankbpnumber,\r\n },\r\n BusinessPartner: _businessPartnerId,\r\n },\r\n ];\r\n\r\n //call to schedule kubra payment\r\n payNowOrScheduledService.sitecore.payNowOrScheduled(payNow).then(\r\n result => {\r\n if (\r\n result.errorResult == null ||\r\n result.errorResult !== undefined\r\n ) {\r\n if (vm.form.contribution && vm.form.contributionAmount) {\r\n makeContribution();\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n 'Your payment has been successfully saved.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n 'fade-in-out',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .showToast,\r\n true,\r\n );\r\n attributePush(\r\n `workFlow:${$('#hdn_scheduledPay').attr(\r\n 'businessFunction',\r\n )}`,\r\n `headline:${$('#hdn_scheduledPay').attr(\r\n 'businessFunction',\r\n )}`,\r\n `buttonText:${$('#hdn_scheduledPay').attr('buttonText')}`,\r\n `addedSpec:${$('#hdn_scheduledPay').attr('addedSpec')}`,\r\n `addedEvent:${$('#hdn_scheduledPay').attr('addedEvent')}`,\r\n );\r\n virtualPagePush(\r\n $('#hdn_scheduledPay').attr('businessFunction'),\r\n $('#hdn_scheduledPay').attr('businessFunction'),\r\n isSetDate ? $('#hdn_scheduledPay').attr('buttonText') : '',\r\n isSetAmount ? $('#hdn_scheduledPay').attr('addedSpec') : '',\r\n isSetPayment\r\n ? $('#hdn_scheduledPay').attr('addedEvent')\r\n : '',\r\n $('#hdn_scheduledPay').attr('headline'),\r\n 'success',\r\n );\r\n window.location.href = url;\r\n vm.showSpinningLoader = false;\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n 'We were unable to save your payment, please try again later.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n 'fade-infinite',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .showToast,\r\n true,\r\n );\r\n vm.showSpinningLoader = false;\r\n window.location.href = url;\r\n }\r\n },\r\n error => {\r\n vm.showSpinningLoader = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n error => {\r\n vm.showSpinningLoader = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n //Kubra error redirection\r\n $scope.$on(assetService.events.kubraDuplicateError, () => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationMessage,\r\n 'We were unable to save your payment, please try again later.',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .toastNotificationtime,\r\n 'fade-infinite',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.billingAndPaymentActivity.showToast,\r\n true,\r\n );\r\n window.location.href = url;\r\n vm.showSpinningLoader = false;\r\n });\r\n }\r\n\r\n function setModels() {\r\n vm.form.contribution = vm.paymentData.isConrtributionEligible;\r\n if (vm.paymentData.isConrtributionEligible) {\r\n vm.form.contributionAmount = parseFloat(\r\n vm.paymentData.energyNeighborFund,\r\n );\r\n document.getElementById('contribution').checked = true;\r\n } else {\r\n document.getElementById('contribution').checked = false;\r\n }\r\n\r\n const accountFound = _.find(\r\n _bankAccountsOriginal,\r\n account =>\r\n account.BankRoutingNumber === vm.paymentData.routingNumber &&\r\n account.BankAccountNumber.substr(-4) ===\r\n vm.paymentData.accountNumberExpand.substr(-4),\r\n );\r\n\r\n if (!_newBankAccountIdGenerated && accountFound) {\r\n vm.accountSelected = {\r\n accountId: accountFound.BankAccountId,\r\n nickname: accountFound.BankDescription,\r\n rountingNumber: accountFound.BankRoutingNumber,\r\n accountNumber: accountFound.BankAccountNumber,\r\n bankbpnumber: accountFound.BankBp,\r\n };\r\n }\r\n if (_newBankAccountIdGenerated) {\r\n vm.form.bankAccount = _newBankAccountIdGenerated;\r\n findAccountAndSelectIt();\r\n } else {\r\n vm.form.bankAccount = vm.accountSelected.accountId;\r\n }\r\n loading(false);\r\n }\r\n\r\n function validateForm(cardName) {\r\n if(!vm.form.hasOwnProperty('selectDate') || vm.form.selectDate==null || vm.form.selectDate == ''){\r\n if(vm.calendarTouched == true && vm.lastSelectedDate!=''&&vm.form.paymentDate == '2' &&\r\n cardName == 'Payment Date '){\r\n vm.form.selectDate = vm.lastSelectedDate;\r\n }\r\n }\r\n vm.form.selectDate &&\r\n vm.form.paymentDate == '2' &&\r\n cardName == 'Payment Date '\r\n ? (vm.selectedDate = vm.form.selectDate)\r\n : '';\r\n if (vm.form.paymentAmount == '0') {\r\n vm.disableSaveButton = false;\r\n vm.checkPayment = false;\r\n vm.lengthError = false;\r\n vm.canPay = false;\r\n vm.checkForError = false;\r\n vm.showAmountError = false;\r\n vm.isSameAmount = false;\r\n if (vm.form.otherAmount) {\r\n vm.form.otherAmount = '';\r\n }\r\n } else if (vm.form.paymentAmount == '1') {\r\n if(vm.form.otherAmount == \"\") {\r\n vm.showAmountError = true;\r\n vm.isSameAmount = false;\r\n }\r\n else {\r\n vm.showAmountError = false;\r\n }\r\n if (vm.form.otherAmount) {\r\n var otherAmount =\r\n vm.form.otherAmount[0] == '$'\r\n ? vm.form.otherAmount.substring(1).replace(/,/g, '')\r\n : vm.form.otherAmount;\r\n if (otherAmount <= 0) {\r\n vm.showAmountError = true;\r\n } else {\r\n vm.showAmountError = false;\r\n }\r\n let checkAmount = otherAmount;\r\n vm.amountToPay = String(checkAmount).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.checkAmtLimit) {\r\n vm.lengthError = true;\r\n vm.canPay = true;\r\n } else {\r\n vm.lengthError = false;\r\n vm.canPay = false;\r\n }\r\n checkAmoutPaid();\r\n }\r\n }\r\n if (vm.form.selectDate == null && typeof vm.form.selectDate == 'object') {\r\n vm.dateRequiredError = true;\r\n } else {\r\n vm.dateRequiredError = false;\r\n }\r\n if (cardName.trim() == 'Payment Date' && !isSetDate) {\r\n $('#hdn_scheduledPay').attr('buttonText', cardName.trim());\r\n isSetDate = true;\r\n }\r\n if (cardName.trim() == 'Payment Amount' && !isSetAmount) {\r\n $('#hdn_scheduledPay').attr('addedSpec', cardName.trim());\r\n isSetAmount = true;\r\n }\r\n }\r\n function contributionAmountCheck() {\r\n var contributionAmount =\r\n vm.form.contributionAmount[0] == '$'\r\n ? vm.form.contributionAmount.substring(1).replace(/,/g, '')\r\n : vm.form.contributionAmount;\r\n if (vm.form.contribution && contributionAmount <= 0) {\r\n vm.showContriError = true;\r\n } else {\r\n vm.showContriError = false;\r\n }\r\n if (vm.form.contribution && contributionAmount > 500) {\r\n vm.showContriLimitError = true;\r\n } else {\r\n vm.showContriLimitError = false;\r\n }\r\n }\r\n //Function to check if amount entered is greater than due\r\n function checkAmoutPaid() {\r\n vm.getTheDue = sessionStorageService.get('fullDueAmount');\r\n let getDueAmt = Number(vm.getTheDue);\r\n const fullAmtDue = sessionStorageService.get(\r\n 'billing-and-payment-activity-managed-payment',\r\n );\r\n let currentDate = moment(new Date())\r\n .utc()\r\n .format('MM/DD/YY');\r\n let tdayDate = currentDate.toString();\r\n let checkDueDate = fullAmtDue.dueDate;\r\n if (checkDueDate == currentDate) {\r\n vm.paidAmount = Number(fullAmtDue.totalAmountPaid)\r\n ? Number(fullAmtDue.totalAmountPaid)\r\n : Number('0.00');\r\n } else {\r\n vm.paidAmount = Number('0.00');\r\n }\r\n let totalDueAmt = Number(getDueAmt + vm.paidAmount).toFixed(_toFixed);\r\n const totalAmtToPay = parseFloat(\r\n vm.form.otherAmount.toString().replace(/[^0-9._-]/g, ''),\r\n );\r\n if (totalAmtToPay > totalDueAmt) {\r\n vm.checkPayment = true;\r\n } else {\r\n vm.checkPayment = false;\r\n }\r\n if (\r\n vm.checkPayment == true ||\r\n vm.lengthError == true ||\r\n vm.isSameAmount == true\r\n ) {\r\n vm.checkForError = true;\r\n } else {\r\n vm.checkForError = false;\r\n }\r\n checkSameAmount();\r\n }\r\n function checkSameAmount() {\r\n const fullAmtDue = sessionStorageService.get(\r\n 'billing-and-payment-activity-managed-payment',\r\n );\r\n switch (vm.form.paymentDate) {\r\n case '0':\r\n _paymentDate = moment().format('MM/DD/YY');\r\n break;\r\n case '1':\r\n _paymentDate = moment(vm.displayDate.dueDate).format('MM/DD/YY');\r\n break;\r\n case '2':\r\n _paymentDate = \r\n vm.selectedDate !== undefined ? \r\n moment(vm.selectedDate).format('MM/DD/YY') : \r\n moment(vm.startDate).format('MM/DD/YY');\r\n break;\r\n }\r\n\r\n switch (vm.form.paymentAmount) {\r\n case '0':\r\n _paymentAmount = vm.getFullAmount;\r\n break;\r\n case '1':\r\n _paymentAmount =\r\n vm.form.otherAmount[0] == '$'\r\n ? vm.form.otherAmount.substring(1).replace(/,/g, '')\r\n : vm.form.otherAmount;\r\n break;\r\n }\r\n\r\n if (\r\n fullAmtDue.totalAmountPaid ==\r\n vm.form.otherAmount.substring(1).replace(/,/g, '') &&\r\n fullAmtDue.dueDate == _paymentDate &&\r\n vm.accountSelected.accountNumber.substr(\r\n vm.accountSelected.accountNumber.length - 4,\r\n ) ==\r\n fullAmtDue.accountNumberExpand.substr(\r\n fullAmtDue.accountNumberExpand.length - 4,\r\n )\r\n ) {\r\n vm.isSameAmount = true;\r\n vm.canPay = true;\r\n } else {\r\n vm.isSameAmount = false;\r\n vm.canPay = false;\r\n }\r\n if (\r\n vm.checkPayment == true ||\r\n vm.lengthError == true ||\r\n vm.isSameAmount == true\r\n ) {\r\n vm.checkForError = true;\r\n } else {\r\n vm.checkForError = false;\r\n }\r\n }\r\n\r\n //Function to show error when amount length is greater than 6\r\n function submitFullAmount() {\r\n var otherAmounts = vm.form.otherAmount.substring(1).replace(/,/g, '');\r\n let checkAmount = otherAmounts;\r\n vm.amountToPay = String(checkAmount).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.amtLimit) {\r\n vm.lengthError = true;\r\n vm.canPay = true;\r\n }\r\n }\r\n\r\n function getPrepaidDetails(data) {\r\n getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(\r\n result => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n _bankAccountsOriginal.forEach(item => {\r\n item.value = item.BankAccountId;\r\n });\r\n setModels();\r\n setDropdowns();\r\n },\r\n error => {\r\n setDropdowns();\r\n loading(false);\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function addBankAccount() {\r\n modalService.addNewBankAccount();\r\n if (vm.showDrops) {\r\n getPrepaidDetails(dataObjPrepaid);\r\n }\r\n if (!isSetPayment) {\r\n $('#hdn_scheduledPay').attr('addedEvent', 'Payment Method');\r\n isSetPayment = true;\r\n }\r\n }\r\n\r\n function load() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n _documentId = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity\r\n .managedScheduledPayment,\r\n );\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n vm.showAmountError = false;\r\n vm.lengthError = false;\r\n vm.getFullAmount = sessionStorageService.get('fullDueAmount');\r\n if (vm.getFullAmount == 0 || vm.getFullAmount < 0) {\r\n vm.disableBtn = true;\r\n vm.creditAmount = Math.abs(vm.getFullAmount).toFixed(2);\r\n }\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n _contractAccountId = globalSelectedAccount.accountNum;\r\n _businessPartnerId = orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : globalSelectedAccount.bpNumber;\r\n _premisseId = _globalSelectedAccount.premiseID;\r\n }\r\n\r\n vm.paymentData = sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.editScheduledPayment,\r\n );\r\n vm.dueData = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.dueData,\r\n );\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n if (\r\n vm.balanceStorage !== null &&\r\n (moment(vm.paymentData.dateForSort).format('MM/DD/YYYY') ==\r\n vm.balanceStorage.displayDate ||\r\n moment(vm.paymentData.dateForSort).format('MM/DD/YY') ==\r\n vm.balanceStorage.displayDate) &&\r\n vm.paymentData.totalAmountPaid == vm.balanceStorage.newTotalAmount\r\n ) {\r\n vm.form.otherAmount = '';\r\n vm.form.selectDate = vm.balanceStorage.calendarDate\r\n ? vm.balanceStorage.calendarDate\r\n : '';\r\n vm.startDate = vm.form.selectDate;\r\n vm.form.paymentDate =\r\n vm.balanceStorage.dateSelected.name == 'Other Date'\r\n ? '2'\r\n : vm.balanceStorage.dateSelected.name == 'Pay Now'\r\n ? '0'\r\n : '1';\r\n if (vm.balanceStorage.newAmountsArray && vm.balanceStorage.newAmountsArray.length > 0) {\r\n vm.tempArray = vm.balanceStorage.newAmountsArray.filter(\r\n amount => amount.id == _contractAccountId,\r\n );\r\n vm.form.otherAmount = vm.tempArray ? vm.tempArray[0].bill : '';\r\n }\r\n vm.form.paymentAmount = vm.balanceStorage.amountSelected;\r\n vm.displayDate.dueDate = moment(vm.dueData.dueDate).format('MM/DD/YY');\r\n //vm.displayDate.totalAmountPaid = vm.dueData.dueAmmount;\r\n vm.displayDate.totalAmountPaid = vm.getFullAmount;\r\n } else {\r\n vm.displayDate.dueDate = moment(vm.dueData.dueDate).format('MM/DD/YY');\r\n //vm.displayDate.totalAmountPaid = vm.dueData.dueAmmount;\r\n vm.displayDate.totalAmountPaid = vm.getFullAmount;\r\n }\r\n if (\r\n new Date(vm.displayDate.dueDate).getTime() <\r\n vm.currentDatePlusOne.getTime()\r\n ) {\r\n vm.displayDueDate = false;\r\n }\r\n\r\n vm.form.paymentDate =\r\n moment.utc(vm.displayDate.dueDate).format('MM/DD/YY') ==\r\n moment.utc(vm.paymentData.dateForSort).format('MM/DD/YY')\r\n ? '1'\r\n : moment.utc(vm.currentDate).format('MM/DD/YY') ==\r\n moment.utc(vm.paymentData.dateForSort).format('MM/DD/YY')\r\n ? '0'\r\n : '2';\r\n\r\n vm.selectedDate =\r\n vm.form.paymentDate == '2'\r\n ? moment.utc(vm.paymentData.dateForSort).format('MM/DD/YYYY')\r\n : vm.startDate;\r\n\r\n vm.form.paymentAmount =\r\n vm.paymentData.totalAmountPaid == vm.getFullAmount ? '0' : '1';\r\n vm.form.otherAmount = (vm.form.paymentAmount && vm.form.paymentAmount == '1') ? \r\n vm.paymentData.totalAmountPaid : '0.00';\r\n\r\n dataObj = {\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : _businessPartnerId,\r\n premiseId: _premisseId,\r\n };\r\n dataObjPrepaid = {\r\n contractAccountId: _contractAccountId,\r\n businessPartnerId: orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : _businessPartnerId,\r\n };\r\n\r\n const promises = [\r\n getPrepaidDetails(dataObjPrepaid),\r\n returnApplicablePrograms(dataObj),\r\n ];\r\n commonService.executePromises(promises).then(() => {});\r\n vm.loaded = true;\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.changeDate = changeDate;\r\n vm.save = save;\r\n vm.validateForm = validateForm;\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n //load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCPDFNotFoundModal', CCPDFNotFoundModal);\r\nCCPDFNotFoundModal.$inject = [\r\n '$modalInstance',\r\n];\r\n\r\nfunction CCPDFNotFoundModal(\r\n $modalInstance,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Global Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n /* empty function*/\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n init();\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\napp.controller('CCPOCToastModalPageController', POCToastModalPageController);\r\n// eslint-disable-next-line no-use-before-define\r\nPOCToastModalPageController.$inject = [\r\n 'assetService',\r\n 'apiApigeeConfigService',\r\n 'deEnrollFromProgramService',\r\n 'FPBroadcastService',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction POCToastModalPageController(\r\n assetService,\r\n apiApigeeConfigService,\r\n deEnrollFromProgramService,\r\n FPBroadcastService,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n\r\n /* --------------Global Vars-----------------------*/\r\n const vm = this;\r\n vm.dataToDeEnroll = {\r\n contractAccountId: '',\r\n programName: 'DIRDEB',\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.validUnenroll = function () {\r\n // eslint-disable-next-line no-use-before-define\r\n deEnroll();\r\n };\r\n\r\n function deEnroll() {\r\n return deEnrollFromProgramService.test.deEnrollFromProgram(vm.dataToDeEnroll)\r\n .then(\r\n (result) => {\r\n // eslint-disable-next-line no-console\r\n console.log(result);\r\n const typeResponse = result.d.DeEnroll_Bill_Pay_Message_Nav.results[0].ReplyCode;\r\n if (assetService.replyCodes[typeResponse]) {\r\n responseNotificationsService.successResponse(result.ReturnCodeTreatment);\r\n } else if (typeResponse === 'ERROR') {\r\n responseNotificationsService.errorResponse(result.ReturnCodeTreatment);\r\n }\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (result.d.DeEnroll_Bill_Pay_Message_Nav.results.hasOwnProperty('0')) {\r\n vm.successDeEnrollRes = result.d.DeEnroll_Bill_Pay_Message_Nav.results[0].ReplyCode === 'SUCESS';\r\n }\r\n },\r\n );\r\n }\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function load() {\r\n /* empty function */\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","function ccCareComponentController(\r\n ccCareProgramsFactory,\r\n apiConfigService,\r\n assetService,\r\n commonService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let url = null;\r\n /* --------------Global Vars-----------------------*/\r\n vm.careProgramasData = null;\r\n vm.data = {\r\n carePrograms: [],\r\n };\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n vm.data.carePrograms = vm.careProgramasData.carePrograms;\r\n console.log(vm.data.carePrograms);\r\n }\r\n \r\n function getCarePrograms() {\r\n return ccCareProgramsFactory.getCarePrograms(url).then(\r\n (result) => {\r\n vm.careProgramasData = result;\r\n },\r\n (error) => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n function load() {\r\n url = apiConfigService.developUrls.getCarePrograms();\r\n const promises = [getCarePrograms()];\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n });\r\n }\r\n /* --------------Function Declarations-----------------------*/\r\n let init = init;\r\n /* ---------------Initialization-------------------*/\r\n init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\nccCareComponentController.$inject = [\r\n 'ccCareProgramsFactory',\r\n 'apiConfigService',\r\n 'assetService',\r\n 'commonService',\r\n];\r\napp.controller('ccCareComponentController', ccCareComponentController);\r\n","app.controller('FPModalAcceptWorkOrder', FPModalAcceptWorkOrder);\r\nFPModalAcceptWorkOrder.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'updateCEPServiceOrdersService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction FPModalAcceptWorkOrder(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n indexedDbDataService,\r\n updateCEPServiceOrdersService,\r\n $modalInstance,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const _activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n const _baseUrl = window.location.origin;\r\n let _dataToPatch = null;\r\n let _putAcceptedOrders = [];\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.selectedOrders = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.form = {\r\n selectedOrders: null,\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.updateSelectedServiceOrders, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.acceptWorkOrder = acceptWorkOrder;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function acceptWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n _dataToPatch = _.map(vm.selectedOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: {\r\n code: assetService.status.ACCEPTED.code,\r\n },\r\n }));\r\n\r\n _dataToPatch = dtoService.patchWrapper(_dataToPatch);\r\n\r\n _putAcceptedOrders = [];\r\n _.forEach(vm.selectedOrders, (so) => {\r\n const putSO = dtoService.transformServiceOrder(so);\r\n putSO.soStatus.code = assetService.status.ACCEPTED.code;\r\n putSO.soStatus.name = assetService.status.ACCEPTED.value;\r\n putSO.soStatusName = assetService.status.ACCEPTED.value;\r\n _putAcceptedOrders.push(putSO);\r\n });\r\n\r\n patchServiceOrder(_dataToPatch).then(\r\n (result) => {\r\n putAcceptedOrders(_putAcceptedOrders).then(\r\n () => {\r\n if(assetService.apiConfig.showAppErrors) $log.error({\r\n title: assetService.notifications.success.message,\r\n message: assetService.notifications.success.message,\r\n });\r\n window.location.replace(_baseUrl + _activeOrdersUrl);\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n const serviceOrders = serviceOrdersFactory._getSelectedOrders();\r\n if (serviceOrders && serviceOrders.length > 0) {\r\n const selectedOrders = serviceOrders;\r\n\r\n setSelectedOrders(selectedOrders);\r\n setModels();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then((result) => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return indexedDbDataService.putAcceptedOrders(serviceOrders)\r\n .then(\r\n (result) => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n selectedOrders: vm.selectedOrders,\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setSelectedOrders(serviceOrders) {\r\n vm.selectedOrders = _.map(serviceOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: serviceOrder.soStatus,\r\n soStatusName: serviceOrder.soStatusName,\r\n soType: serviceOrder.soType,\r\n soTypeName: serviceOrder.soTypeName,\r\n program: serviceOrder.program,\r\n programName: serviceOrder.programName,\r\n }));\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalAdvancedFilter', FPModalAdvancedFilter);\r\nFPModalAdvancedFilter.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n];\r\n\r\nfunction FPModalAdvancedFilter(\r\n $scope,\r\n assetService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.dropdowns = {\r\n allTechnicians: null,\r\n };\r\n vm.form = {};\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.loadingSpinner = true;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n setDropdowns();\r\n });\r\n\r\n $scope.$watch('vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n }, true);\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n\r\n function load() {\r\n /*empty function*/\r\n }\r\n\r\n function setDropdowns() {\r\n /*empty function*/\r\n }\r\n\r\n function setModels() {\r\n /*empty function*/\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n console.log('test');\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalAssignWorkOrder', FPModalAssignWorkOrder);\r\nFPModalAssignWorkOrder.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'sessionStorageService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalAssignWorkOrder(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n sessionStorageService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n let _allTechnicians = [];\r\n let _assignedTechnician = {};\r\n let _putAcceptedOrders = [];\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const kwCdpId = assetService.strings.CDPID;\r\n const kwName = assetService.strings.NAME;\r\n const kwValue = assetService.strings.VALUE;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.selectedOrders = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.dropdowns = {\r\n allTechnicians: null,\r\n };\r\n vm.form = {\r\n selectedOrders: null,\r\n totalBundleWorkOrders: null,\r\n assignedTechnician: null,\r\n };\r\n vm.serviceOrders = [];\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.updateSelectedServiceOrders, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.assignWorkOrder = assignWorkOrder;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function assignWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const assignedTechnicianIndex = _.findIndex(\r\n _allTechnicians,\r\n technician => technician.cdpId === vm.form.assignedTechnician.cdpId,\r\n );\r\n\r\n dataToPatch = _.map(vm.selectedOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: {\r\n code: genericHelperService.getStatusCode(serviceOrder),\r\n },\r\n assignedTechnician: {\r\n cdpId: _allTechnicians[assignedTechnicianIndex].cdpId,\r\n },\r\n }));\r\n\r\n _putAcceptedOrders = [];\r\n _.forEach(dataToPatch, (dataToPatchSO) => {\r\n const originalSO = _.find(\r\n vm.serviceOrders,\r\n so => so.serviceOrderId === dataToPatchSO.serviceOrderId,\r\n );\r\n\r\n if (originalSO) {\r\n const putSO = dtoService.transformServiceOrder(originalSO);\r\n putSO.soStatus.code = assetService.status.DISPATCHED.code;\r\n putSO.soStatus.name = assetService.status.DISPATCHED.value;\r\n putSO.soStatusName = assetService.status.DISPATCHED.value;\r\n putSO.assignedTechnician.cdpId = dataToPatchSO.assignedTechnician.cdpId;\r\n\r\n _putAcceptedOrders.push(putSO);\r\n }\r\n });\r\n\r\n dataToPatch = dtoService.patchWrapper(dataToPatch);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n putAcceptedOrders(_putAcceptedOrders).then(() => {\r\n window.location.replace(baseUrl + activeOrdersUrl);\r\n });\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\r\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\r\n if (vm.serviceOrders.length === 1) {\r\n _assignedTechnician = vm.serviceOrders[0].assignedTechnician;\r\n } else {\r\n _assignedTechnician = {\r\n badgeId: null,\r\n cdpId: null,\r\n name: null,\r\n phone: null,\r\n };\r\n }\r\n\r\n setSelectedOrders(vm.serviceOrders);\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setDropdowns() {\r\n const users = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n _allTechnicians = users.filter(\r\n user => user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE,\r\n );\r\n const data = _.sortBy(_allTechnicians, technician => technician.name);\r\n vm.dropdowns = {\r\n allTechnicians: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(data, kwCdpId, kwName),\r\n kwValue,\r\n _assignedTechnician.cdpId,\r\n ),\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n selectedOrders: vm.selectedOrders,\r\n totalBundleWorkOrders: getTotalOfSelectedOrders(),\r\n assignedTechnician: _assignedTechnician,\r\n };\r\n }\r\n\r\n function getTotalOfSelectedOrders() {\r\n let total = 0;\r\n\r\n _.forEach(vm.selectedOrders, (serviceOrder) => {\r\n total += serviceOrder.totalOrderCost;\r\n });\r\n\r\n return total;\r\n }\r\n\r\n function setSelectedOrders(serviceOrders) {\r\n vm.selectedOrders = _.map(serviceOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: serviceOrder.soStatus,\r\n soStatusName: serviceOrder.soStatusName,\r\n soType: serviceOrder.soType,\r\n soTypeName: serviceOrder.soTypeName,\r\n program: serviceOrder.program,\r\n programName: serviceOrder.programName,\r\n // totalOrderCost: serviceOrder.orderCostTimeDetails.totalOrderCost.value,\r\n totalOrderCost: 0,\r\n }));\r\n }\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalBundleWorkOrder', FPModalBundleWorkOrder);\r\nFPModalBundleWorkOrder.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalBundleWorkOrder(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n sessionStorageService,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _acceptedOrdersToDelete = [];\r\n let _putInvoiceOrders = [];\r\n const activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const woorSRTypeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.error = false;\r\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\r\n vm.selectedOrders = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrders = [];\r\n vm.form = {\r\n selectedOrders: null,\r\n contractorInvoiceNumber: null,\r\n totalBundleWorkOrders: null,\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.updateSelectedServiceOrders, () => {\r\n load();\r\n });\r\n\r\n $scope.$on(assetService.events.error.duplicateInvoiceId, () => {\r\n vm.errorMsg = sessionStorageService.get(assetService.storageKeys.errorMsg);\r\n vm.error = true;\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.readyForInvoice = readyForInvoice;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function putInvoiceOrders(serviceOrders) {\r\n return indexedDbDataService.putInvoiceOrders(serviceOrders).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function deleteAcceptedOrders(serviceOrderIds) {\r\n return indexedDbDataService.deleteAcceptedOrders(serviceOrderIds).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore\r\n .updateCEPServiceOrders(serviceOrder)\r\n .then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function readyForInvoice(event) {\r\n vm.error = false;\r\n broadcastService.patchEventStarted();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n dataToPatch = _.map(vm.selectedOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: {\r\n code: assetService.status.READY_FOR_INVOICE.code,\r\n },\r\n contractorInvoiceNumber: vm.form.contractorInvoiceNumber,\r\n }));\r\n\r\n _acceptedOrdersToDelete = [];\r\n _putInvoiceOrders = [];\r\n\r\n _.forEach(dataToPatch, (dataToPatchSO) => {\r\n const originalSO = _.find(\r\n vm.serviceOrders,\r\n so => so.serviceOrderId === dataToPatchSO.serviceOrderId,\r\n );\r\n\r\n if (originalSO) {\r\n const putSO = dtoService.transformServiceOrder(originalSO);\r\n putSO.soStatus.code = assetService.status.READY_FOR_INVOICE.code;\r\n putSO.soStatus.name = assetService.status.READY_FOR_INVOICE.value;\r\n putSO.soStatusName = assetService.status.READY_FOR_INVOICE.value;\r\n putSO.contractorInvoiceNumber = dataToPatchSO.contractorInvoiceNumber;\r\n\r\n _putInvoiceOrders.push(putSO);\r\n _acceptedOrdersToDelete.push(putSO.serviceOrderId);\r\n }\r\n });\r\n\r\n const batchDataSet = _.chunk(dataToPatch, 75);\r\n const queue = [];\r\n\r\n _.forEach(batchDataSet, (batchData) => {\r\n const wrappedDatat = dtoService.patchWrapper(batchData);\r\n queue.push(patchServiceOrder(wrappedDatat));\r\n });\r\n\r\n commonService.executePromises(queue).then(() => {\r\n if (!vm.error) {\r\n const promises = [\r\n putInvoiceOrders(_putInvoiceOrders),\r\n deleteAcceptedOrders(_acceptedOrdersToDelete),\r\n ];\r\n commonService.executePromises(promises).then(() => {\r\n window.location.replace(baseUrl + activeOrdersUrl);\r\n });\r\n }\r\n });\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n selectedOrders: vm.selectedOrders,\r\n totalBundleWorkOrders: getTotalOfSelectedOrders(),\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function load() {\r\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\r\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\r\n const selectedOrders = vm.serviceOrders;\r\n\r\n setSelectedOrders(selectedOrders);\r\n setModels();\r\n }\r\n }\r\n\r\n function getTotalOfSelectedOrders() {\r\n let total = 0;\r\n\r\n _.forEach(vm.selectedOrders, (serviceOrder) => {\r\n total += serviceOrder.totalOrderCost;\r\n });\r\n\r\n return total;\r\n }\r\n\r\n function setSelectedOrders(serviceOrders) {\r\n vm.selectedOrders = _.map(serviceOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: serviceOrder.soStatus,\r\n soStatusName: serviceOrder.soStatusName,\r\n soType: serviceOrder.soType,\r\n soTypeName: serviceOrder.soTypeName,\r\n program: serviceOrder.program,\r\n programName: serviceOrder.programName,\r\n totalOrderCost:\r\n serviceOrder.woorSR === woorSRTypeServiceRequest\r\n ? serviceOrder.orderCostTimeDetails.regularLaborCost.value\r\n + serviceOrder.orderCostTimeDetails.entitlementLaborCost.value\r\n + serviceOrder.orderCostTimeDetails.partsCost.value\r\n + serviceOrder.orderCostTimeDetails.tripFee.value\r\n : serviceOrder.orderCostTimeDetails.tripFee.value\r\n + serviceOrder.orderCostTimeDetails.laborCost.value\r\n + serviceOrder.orderCostTimeDetails.materialCost.value,\r\n contractorInvoiceNumber: vm.form.contractorInvoiceNumber,\r\n }));\r\n }\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalCancel', FPModalCancel);\r\nFPModalCancel.$inject = [\r\n '$log',\r\n '$scope',\r\n 'FPBroadcastService',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalCancel(\r\n $log,\r\n $scope,\r\n broadcastService,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const kwCode = assetService.strings.CODE;\r\n const kwName = assetService.strings.NAME;\r\n const kwValue = assetService.strings.VALUE;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.dropdowns = {\r\n cancelReasonType: [],\r\n };\r\n vm.form = {\r\n cancelledReason: {\r\n cancelReasonType: {\r\n code: null,\r\n },\r\n reasonComments: null,\r\n },\r\n serviceOrderId: null,\r\n };\r\n vm.formInvalid = true;\r\n vm.reasonTypeOther = assetService.strings.OTHER;\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function cancelWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n dataToPatch = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n soStatus: {\r\n code: assetService.status.CONTRACTOR_CANCELLED.code,\r\n },\r\n cancelledReason: {\r\n cancelReasonType: {\r\n code: vm.form.cancelledReason.cancelReasonType.code,\r\n },\r\n reasonComments: vm.form.cancelledReason.reasonComments,\r\n },\r\n };\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n deleteAcceptedOrder(vm.serviceOrder.serviceOrderId).then(\r\n () => {\r\n window.location.replace(baseUrl + activeOrdersUrl);\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n if (vm.serviceOrder) {\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function setDropdowns() {\r\n indexedDbDataService.getCancelledReasonTypes().then(data => {\r\n const cancelledReasonTypesList = genericHelperService.createDropdownList(\r\n data,\r\n kwCode,\r\n kwName,\r\n );\r\n vm.dropdowns.cancelReasonType = genericHelperService.setSelectedProp(\r\n cancelledReasonTypesList,\r\n kwValue,\r\n vm.serviceOrder.cancelledReason.cancelReasonType.code,\r\n );\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n });\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n cancelledReason: {\r\n cancelReasonType: {\r\n code: vm.serviceOrder.cancelledReason.cancelReasonType.code,\r\n },\r\n reasonComments: vm.serviceOrder.cancelledReason.reasonComments,\r\n },\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n };\r\n }\r\n\r\n function deleteAcceptedOrder(serviceOrderId) {\r\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(\r\n () => {},\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n /**\r\n * Initialization\r\n */\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalDecline', FPModalDecline);\r\nFPModalDecline.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalDecline(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const kwCode = assetService.strings.CODE;\r\n const kwName = assetService.strings.NAME;\r\n const kwValue = assetService.strings.VALUE;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.reasonTypeOther = assetService.strings.OTHER;\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.dropdowns = {\r\n declinedReasonTypes: [],\r\n };\r\n vm.form = {\r\n serviceOrderId: null,\r\n declinedReason: {\r\n declineReasonType: {\r\n code: null,\r\n },\r\n reasonComments: null,\r\n },\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.declineWorkOrder = declineWorkOrder;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n angular.element('#FPModalDeclineModal').modal('hide');\r\n }\r\n\r\n function declineWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n dataToPatch = {\r\n serviceOrderId: vm.form.serviceOrderId,\r\n soStatus: {\r\n code: assetService.status.CONTRACTOR_DECLINED.code,\r\n },\r\n declinedReason: {\r\n declineReasonType: {\r\n code: vm.form.declinedReason.declineReasonType.code,\r\n },\r\n reasonComments: vm.form.declinedReason.reasonComments,\r\n },\r\n };\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n (result) => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n\r\n deleteAcceptedOrder(vm.serviceOrder.serviceOrderId).then(\r\n () => {\r\n window.location.replace(baseUrl + activeOrdersUrl);\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n (error) => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n if (vm.serviceOrder) {\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then((result) => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function setDropdowns() {\r\n indexedDbDataService.getDeclinedReasonTypes().then((data) => {\r\n const declinedReasonTypesList = genericHelperService.createDropdownList(\r\n data,\r\n kwCode,\r\n kwName,\r\n );\r\n vm.dropdowns.declinedReasonTypes = genericHelperService.setSelectedProp(\r\n declinedReasonTypesList,\r\n kwValue,\r\n vm.serviceOrder.declinedReason.declineReasonType.code,\r\n );\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n });\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n declinedReason: {\r\n declineReasonType: {\r\n code: vm.serviceOrder.declinedReason.declineReasonType.code,\r\n },\r\n reasonComments: vm.serviceOrder.declinedReason.reasonComments,\r\n },\r\n };\r\n\r\n indexedDbDataService.getDeclinedReasonTypes().then((data) => {\r\n const declinedReasonTypesList = genericHelperService.createDropdownList(\r\n data,\r\n kwCode,\r\n kwName,\r\n );\r\n vm.dropdowns.declinedReasonTypes = genericHelperService.setSelectedProp(\r\n declinedReasonTypesList,\r\n kwValue,\r\n vm.serviceOrder.declinedReason.declineReasonType.code,\r\n );\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n });\r\n }\r\n\r\n function deleteAcceptedOrder(serviceOrderId) {\r\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalDispatch', FPModalDispatch);\r\nFPModalDispatch.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPCurrentUserService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalDispatch(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n currentUserService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n sessionStorageService,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const allTechnicians = [];\r\n const baseUrl = window.location.origin;\r\n const roleTechnician = assetService.userTypes.TECHNICIAN;\r\n let dataToPatch = null;\r\n const kwCdpId = assetService.strings.CDPID;\r\n const kwName = assetService.strings.NAME;\r\n const kwValue = assetService.strings.VALUE;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.dropdowns = {\r\n allTechnicians: null,\r\n };\r\n vm.form = {\r\n serviceOrderId: null,\r\n cdpIdAssignedTechnician: null,\r\n multipleTechnicianRequired: null,\r\n assignedOtherTechnician: null,\r\n };\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.dispatchWorkOrder = dispatchWorkOrder;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n setDropdowns();\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function dispatchWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const assignedTechnicianIndex = _.findIndex(\r\n allTechnicians,\r\n technician => technician.cdpId === vm.form.assignedTechnician.cdpId,\r\n );\r\n\r\n vm.form.soStatus = assetService.status.DISPATCHED.code;\r\n vm.form.soStatusName = assetService.status.DISPATCHED.value;\r\n vm.form.assignedTechnician = allTechnicians[assignedTechnicianIndex];\r\n vm.form.multipleTechnicianRequired = vm.form.multipleTechnicianRequired;\r\n vm.form.assignedOtherTechnician = vm.form.assignedOtherTechnician;\r\n\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n\r\n putAcceptedOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n if (vm.serviceOrder) {\r\n const currentUserRole = currentUserService.getUserRole();\r\n if (currentUserRole === roleTechnician) {\r\n vm.disabled = true;\r\n }\r\n\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function setDropdowns() {\r\n const users = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n let data = _.filter(\r\n users,\r\n user => user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE,\r\n );\r\n data = _.map(data, item => ({\r\n name: `${item.name}-${item.badgeNumber}`,\r\n badgeNumber: item.badgeNumber,\r\n cdpId: item.cdpId,\r\n effectiveDate: item.effectiveDate,\r\n phone: item.phone,\r\n role: item.role,\r\n status: item.status,\r\n }));\r\n vm.dropdowns = {\r\n allTechnicians: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(data, kwCdpId, kwName),\r\n kwValue,\r\n vm.serviceOrder.assignedTechnician.cdpId,\r\n ),\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n multipleTechnicianRequired: vm.serviceOrder.multipleTechnicianRequired,\r\n assignedOtherTechnician: vm.serviceOrder.assignedOtherTechnician,\r\n assignedTechnician: vm.serviceOrder.assignedTechnician,\r\n };\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalUsersController', FPModalUsersController);\r\nFPModalUsersController.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'FPGenericHelperService',\r\n 'sessionStorageService',\r\n 'FPBroadcastService',\r\n '$modalInstance',\r\n 'addCEPUsersService',\r\n];\r\n\r\nfunction FPModalUsersController(\r\n $log,\r\n assetService,\r\n genericHelperService,\r\n sessionStorageService,\r\n broadcastService,\r\n $modalInstance,\r\n addCEPUsersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.data = {\r\n roles: [],\r\n form: {\r\n name: null,\r\n email: null,\r\n group: '',\r\n phoneNumber: '',\r\n status: '',\r\n },\r\n validationMessages: {},\r\n };\r\n vm.dataToPost = null;\r\n vm.user = {\r\n firstName: null,\r\n lastName: null,\r\n email: null,\r\n email2: null,\r\n role: null,\r\n phone: null,\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n // vm.validationMessages = assetService.ruleValidationsMessages;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.setUser = setUser;\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function setUser() {\r\n // Data for the POST\r\n const cdpUserId = sessionStorageService.get(\r\n assetService.storageKeys.cdpUserId,\r\n );\r\n const cdpId = genericHelperService.generateRandomNumbers(10);\r\n vm.dataToPost = {\r\n cdpUserId,\r\n users: [\r\n {\r\n cdpId,\r\n effectiveDate: moment().format('YYYY-MM-DDTHH:MM:SS-05:00'),\r\n name: `${vm.user.firstName} ${vm.user.lastName}`,\r\n phone: vm.user.phone,\r\n role: vm.user.role,\r\n email: vm.user.email,\r\n },\r\n ],\r\n };\r\n\r\n postUser(vm.dataToPost).then(\r\n () => {\r\n broadcastService.usersReloadRequired();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function setModels() {\r\n vm.data.roles = angular.copy(assetService.rolesOptions);\r\n vm.data.validationMessages = angular.copy(\r\n assetService.ruleValidationsMessages,\r\n );\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function postUser(user) {\r\n return addCEPUsersService.sitecore.addCEPUser(user)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function load() {\r\n setModels();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPModalMultiDispatchController',\r\n FPModalMultiDispatchController,\r\n);\r\nFPModalMultiDispatchController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n 'FPBroadcastService',\r\n 'sessionStorageService',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalMultiDispatchController(\r\n $log,\r\n $scope,\r\n assetService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n broadcastService,\r\n sessionStorageService,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _putAcceptedOrders = [];\r\n let allTechnicians = [];\r\n const activeOrdersUrl = assetService.pageUrls.activeOrders;\r\n let assignedTechnician = {};\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const kwCdpId = assetService.strings.CDPID;\r\n const kwName = assetService.strings.NAME;\r\n const kwValue = assetService.strings.VALUE;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.dropdown = {\r\n allTechnicians: null,\r\n };\r\n vm.data = {\r\n assignedTechnicianCdpId: null,\r\n selectedOrders: null,\r\n validationMessages: null,\r\n warning: null,\r\n };\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrders = [];\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n let init = init;\r\n let setModels = setModels;\r\n vm.closeModal = closeModal;\r\n vm.setServiceOrder = setServiceOrder;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.updateSelectedServiceOrders, (event, ars) => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function setServiceOrder(event) {\r\n broadcastService.patchEventStarted();\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const assignedTechnicianIndex = _.findIndex(\r\n allTechnicians,\r\n technician => technician.cdpId === vm.data.assignedTechnicianCdpId,\r\n );\r\n\r\n dataToPatch = _.map(vm.data.selectedOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: {\r\n code: assetService.status.DISPATCHED.code,\r\n },\r\n assignedTechnician: {\r\n cdpId: allTechnicians[assignedTechnicianIndex].cdpId,\r\n },\r\n }));\r\n\r\n _putAcceptedOrders = [];\r\n _.forEach(dataToPatch, (dataToPatchSO) => {\r\n const originalSO = _.find(\r\n vm.serviceOrders,\r\n so => so.serviceOrderId === dataToPatchSO.serviceOrderId,\r\n );\r\n\r\n if (originalSO) {\r\n const putSO = dtoService.transformServiceOrder(originalSO);\r\n putSO.soStatus.code = assetService.status.DISPATCHED.code;\r\n putSO.soStatus.name = assetService.status.DISPATCHED.value;\r\n putSO.soStatusName = assetService.status.DISPATCHED.value;\r\n putSO.assignedTechnician.cdpId = dataToPatchSO.assignedTechnician.cdpId;\r\n\r\n _putAcceptedOrders.push(putSO);\r\n }\r\n });\r\n\r\n dataToPatch = dtoService.patchWrapper(dataToPatch);\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n putAcceptedOrders(_putAcceptedOrders).then(\r\n () => {\r\n window.location.replace(baseUrl + activeOrdersUrl);\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function load() {\r\n vm.serviceOrders = serviceOrdersFactory._getSelectedOrders();\r\n if (vm.serviceOrders && vm.serviceOrders.length > 0) {\r\n if (vm.serviceOrders.length === 1) {\r\n assignedTechnician = vm.serviceOrders[0].assignedTechnician;\r\n }\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function setDropdowns() {\r\n const users = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n allTechnicians = _.filter(\r\n users,\r\n user => user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE,\r\n );\r\n allTechnicians = _.map(allTechnicians, item => ({\r\n name: `${item.name}-${item.badgeNumber}`,\r\n badgeNumber: item.badgeNumber,\r\n cdpId: item.cdpId,\r\n effectiveDate: item.effectiveDate,\r\n phone: item.phone,\r\n role: item.role,\r\n status: item.status,\r\n }));\r\n allTechnicians = _.sortBy(allTechnicians, o => o.name);\r\n vm.dropdown = {\r\n allTechnicians: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n allTechnicians,\r\n kwCdpId,\r\n kwName,\r\n ),\r\n kwValue,\r\n assignedTechnician.cdpId,\r\n ),\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n setModels = function () {\r\n vm.data.selectedOrders = _.map(vm.serviceOrders, serviceOrder => ({\r\n serviceOrderId: serviceOrder.serviceOrderId,\r\n soStatus: serviceOrder.soStatus,\r\n soStatusName: serviceOrder.soStatusName,\r\n soType: serviceOrder.soType,\r\n soTypeName: serviceOrder.soTypeName,\r\n program: serviceOrder.program,\r\n programName: serviceOrder.programName,\r\n // totalOrderCost: serviceOrder.orderCostTimeDetails.totalOrderCost.value,\r\n totalOrderCost: 0,\r\n }));\r\n vm.data.assignedTechnicianCdpId = assignedTechnician.cdpId;\r\n vm.data.validationMessages = assetService.ruleValidationsMessages;\r\n vm.data.warning = _.filter(\r\n vm.serviceOrders,\r\n serviceOrder => serviceOrder.assignedTechnician.cdpId.length > 0,\r\n );\r\n };\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return indexedDbDataService.putAcceptedOrders(serviceOrders).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalReadyForInvoice', FPModalReadyForInvoice);\r\nFPModalReadyForInvoice.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalReadyForInvoice(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.errorDuplicateInvoiceId = false;\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.form = {\r\n contractorInvoiceNumber: null,\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.readyForInvoiceWorkOrder = readyForInvoiceWorkOrder;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n });\r\n\r\n $scope.$on(assetService.events.error.duplicateInvoiceId, () => {\r\n vm.errorDuplicateInvoiceId = true;\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function putInvoiceOrder(serviceOrder) {\r\n return indexedDbDataService.putInvoiceOrder(serviceOrder).then(\r\n () => {},\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function deleteAcceptedOrder(serviceOrderId) {\r\n return indexedDbDataService.deleteAcceptedOrder(serviceOrderId).then(\r\n () => {},\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n if (vm.serviceOrder) {\r\n setModels();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function readyForInvoiceWorkOrder(event) {\r\n \r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n vm.form.soStatus = assetService.status.READY_FOR_INVOICE.code;\r\n vm.form.soStatusName = assetService.status.READY_FOR_INVOICE.value;\r\n\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n if (!vm.errorDuplicateInvoiceId) {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n const promises = [\r\n putInvoiceOrder(deserializeSO),\r\n deleteAcceptedOrder(deserializeSO.serviceOrderId),\r\n ];\r\n commonService.executePromises(promises).then(() => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n });\r\n }\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n contractorInvoiceNumber: vm.serviceOrder.contractorInvoiceNumber,\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalReview', FPModalReview);\r\nFPModalReview.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalReview(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.finishReview = finishReview;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n });\r\n\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function finishReview(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n vm.serviceOrder.soStatus = assetService.status.CONTRACTOR_REVIEWED.code;\r\n vm.serviceOrder.soStatusName = assetService.status.CONTRACTOR_REVIEWED.value;\r\n if (vm.serviceOrder.woorSR == assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n (result) => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n\r\n putAcceptedOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n (error) => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n console.log(vm.serviceOrder);\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then((result) => {\r\n\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder)\r\n .then(\r\n (result) => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalSaveChanges', FPModalSaveChanges);\r\nFPModalSaveChanges.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalSaveChanges(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.serviceOrder = null;\r\n vm.loadingSpinner = true;\r\n vm.serviceOrderLoaded = false;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.closeModal = closeModal;\r\n vm.saveChanges = saveChanges;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function saveChanges(event) {\r\n broadcastService.patchEventStarted();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const isAcceptedOrder = assetService.urlTokens.acceptedOrdersStatuses.includes(\r\n vm.serviceOrder.soStatus,\r\n );\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n\r\n if (isAcceptedOrder) {\r\n putAcceptedOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n putInvoiceOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function putInvoiceOrder(serviceOrder) {\r\n return indexedDbDataService.putInvoiceOrder(serviceOrder).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalScheduleAssign', FPModalScheduleAssign);\r\nFPModalScheduleAssign.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'FPDataModelsDTOService',\r\n 'FPDateHelperService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalScheduleAssign(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n dtoService,\r\n dateHelperService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const baseUrl = window.location.origin;\r\n let dataToPatch = null;\r\n const kwValue = assetService.strings.VALUE;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.formInvalid = false;\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.dropdowns = {\r\n scheduledStartDateHour: [],\r\n scheduledEndDateHour: [],\r\n firstAttemptDateHour: [],\r\n };\r\n vm.form = {\r\n scheduledStartDate: null,\r\n scheduledStartDateDukeCalendar: null,\r\n scheduledStartDateHour: null,\r\n scheduledEndDate: null,\r\n scheduledEndDateDukeCalendar: null,\r\n scheduledEndDateHour: null,\r\n customerContactHistory: {\r\n noOfContactAttempts: null,\r\n firstAttemptDate: null,\r\n firstAttemptDateDukeCalendar: null,\r\n firstAttemptDateHour: null,\r\n },\r\n customerContactPreferences: {\r\n notifyCustomerWhenInRoute: null,\r\n },\r\n };\r\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.addDays = addDays;\r\n vm.closeModal = closeModal;\r\n vm.scheduleWorkOrder = scheduleWorkOrder;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n setDropdowns();\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function addDays(date, days) {\r\n return dateHelperService.addDays(date, days);\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function onChange() {\r\n const serviceOrder = angular.copy(vm.form);\r\n\r\n if (vm.form.customerContactHistory.firstAttemptDateDukeCalendar) {\r\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = vm.form.customerContactHistory.firstAttemptDateDukeCalendar;\r\n } else if (FPModalScheduleAssignForm.hasOwnProperty('firstAttemptDateDukeCalendar')) {\r\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = FPModalScheduleAssignForm.firstAttemptDateDukeCalendar.$modelValue\r\n ? FPModalScheduleAssignForm.firstAttemptDateDukeCalendar.$modelValue\r\n : '';\r\n }\r\n\r\n if (vm.form.scheduledStartDateDukeCalendar) {\r\n serviceOrder.scheduledStartDateDukeCalendar = vm.form.scheduledStartDateDukeCalendar;\r\n } else if (FPModalScheduleAssignForm.hasOwnProperty('scheduledStartDateDukeCalendar')) {\r\n serviceOrder.scheduledStartDateDukeCalendar = FPModalScheduleAssignForm.scheduledStartDateDukeCalendar.$modelValue\r\n ? FPModalScheduleAssignForm.scheduledStartDateDukeCalendar.$modelValue\r\n : '';\r\n }\r\n\r\n serviceOrdersFactory.updateServiceOrder(serviceOrder);\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n if (vm.serviceOrder) {\r\n setModels();\r\n setDropdowns();\r\n }\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore.updateCEPServiceOrders(serviceOrder)\r\n .then(() => {\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function scheduleWorkOrder(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n vm.form.soStatus = assetService.status.SCHEDULED.code;\r\n vm.form.soStatusName = assetService.status.SCHEDULED.value;\r\n vm.form.scheduledStartDate = dateHelperService.concatDate(\r\n vm.form.scheduledStartDateDukeCalendar,\r\n vm.form.scheduledStartDateHour,\r\n );\r\n vm.form.scheduledEndDate = dateHelperService.concatDate(\r\n vm.form.scheduledStartDateDukeCalendar,\r\n vm.form.scheduledEndDateHour,\r\n );\r\n \r\n vm.form.customerContactHistory.firstAttemptDate = dateHelperService.concatDate(\r\n vm.form.customerContactHistory.firstAttemptDateDukeCalendar, vm.form.customerContactHistory.firstAttemptDateHour,\r\n );\r\n\r\n vm.form.customerContactPreferences.notifyCustomerWhenInRoute = vm.form.customerContactPreferences.notifyCustomerWhenInRoute;\r\n\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n serviceOrdersFactory.updateServiceOrder(vm.serviceOrder);\r\n\r\n putAcceptedOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function setDropdowns() {\r\n vm.dropdowns = {\r\n scheduledStartDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.scheduledStartDateHour,\r\n ),\r\n scheduledEndDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.scheduledEndDateHour,\r\n ),\r\n firstAttemptDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate)\r\n : vm.serviceOrder.createdDateDukeCalendar,\r\n createdDateHour: !vm.serviceOrder.createdDateHour\r\n ? dateHelperService.getHourFromFullDate(vm.serviceOrder.createdDate)\r\n : vm.serviceOrder.createdDateHour,\r\n scheduledStartDateDukeCalendar: !vm.serviceOrder\r\n .scheduledStartDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.scheduledStartDate,\r\n )\r\n : vm.serviceOrder.scheduledStartDateDukeCalendar,\r\n scheduledStartDateHour: !vm.serviceOrder.scheduledStartDateHour\r\n ? dateHelperService.getHourFromFullDate(\r\n vm.serviceOrder.scheduledStartDate,\r\n )\r\n : vm.serviceOrder.scheduledStartDateHour,\r\n scheduledEndDateDukeCalendar: !vm.serviceOrder\r\n .scheduledEndDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.scheduledEndDate,\r\n )\r\n : vm.serviceOrder.scheduledEndDateDukeCalendar,\r\n scheduledEndDateHour: !vm.serviceOrder.scheduledEndDateHour\r\n ? dateHelperService.getHourFromFullDate(\r\n vm.serviceOrder.scheduledEndDate,\r\n )\r\n : vm.serviceOrder.scheduledEndDateHour,\r\n customerContactHistory: {\r\n noOfContactAttempts:\r\n vm.serviceOrder.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDateDukeCalendar: !vm.serviceOrder.customerContactHistory\r\n .firstAttemptDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.customerContactHistory.firstAttemptDate,\r\n )\r\n : vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar,\r\n firstAttemptDateHour: !vm.serviceOrder.customerContactHistory\r\n .firstAttemptDateHour\r\n ? dateHelperService.getHourFromFullDate(\r\n vm.serviceOrder.customerContactHistory.firstAttemptDate,\r\n )\r\n : vm.serviceOrder.customerContactHistory.firstAttemptDateHour,\r\n },\r\n customerContactPreferences: {\r\n notifyCustomerWhenInRoute:\r\n vm.serviceOrder.customerContactPreferences.notifyCustomerWhenInRoute,\r\n },\r\n };\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(\r\n () => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalUserAdministration', FPModalUserAdministration);\r\nFPModalUserAdministration.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPDateHelperService',\r\n 'sessionStorageService',\r\n 'FPGroupingPagerService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction FPModalUserAdministration(\r\n $scope,\r\n assetService,\r\n FPDateHelperService,\r\n sessionStorageService,\r\n pagerService,\r\n $modalInstance,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let workingUsers;\r\n let _role = null;\r\n let widgetUsers = [];\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.closeModal = closeModal;\r\n vm.data = {\r\n users: [],\r\n };\r\n vm.getDateFromFullDate = getDateFromFullDate;\r\n vm.pagination = assetService.pagination;\r\n vm.pager = pagerService.createPager(\r\n assetService.storageKeys.acceptedOrdersPager,\r\n 0,\r\n 1,\r\n 10,\r\n );\r\n vm.noWorkUsers = false;\r\n vm.noWorkingSetUsers = false;\r\n vm.page = 0;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.usersLoaded, (event, ars) => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n let init = init;\r\n let setModels = setModels;\r\n vm.setPage = setPage;\r\n vm.changePage = changePage;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n setModels = function () {\r\n vm.page = 1;\r\n vm.setPage(vm.page);\r\n vm.loadingSpinner = false;\r\n };\r\n\r\n function load() {\r\n widgetUsers = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n if (widgetUsers && widgetUsers.length > 0) {\r\n widgetUsers = createUsers(widgetUsers);\r\n widgetUsers = _.sortBy(widgetUsers, user => user.name);\r\n\r\n setModels();\r\n }\r\n }\r\n\r\n function getDateFromFullDate(date) {\r\n return FPDateHelperService.getDateFromFullDate(date);\r\n }\r\n\r\n function changePage() {\r\n vm.page += 1;\r\n setPage(vm.page);\r\n }\r\n\r\n function setPage(page) {\r\n if (\r\n page >= 1\r\n || (typeof vm.pager !== \"undefined\" && page <= vm.pager.totalPages)\r\n ) {\r\n if (widgetUsers.length > 0) {\r\n vm.noWorkingSetUsers = false;\r\n vm.noWorkUsers = false;\r\n\r\n vm.pager = pagerService.createPager(widgetUsers.length, page, 10);\r\n\r\n workingUsers = widgetUsers.slice(\r\n vm.pager.startRow,\r\n vm.pager.endRow + 1,\r\n );\r\n if (page > 1) {\r\n vm.data.users = _.union(vm.data.users, workingUsers);\r\n } else {\r\n vm.data.users = workingUsers;\r\n }\r\n } else {\r\n vm.noWorkingSetUsers = true;\r\n }\r\n }\r\n }\r\n\r\n function createUsers(users) {\r\n _role = null;\r\n const result = users.map((user) => {\r\n if (user.role.toLowerCase() === assetService.userRoles.contractor) {\r\n _role = assetService.userRoleLabels.contractor;\r\n } else {\r\n _role = assetService.userRoleLabels.technician;\r\n }\r\n return {\r\n name: user.name,\r\n email: user.email,\r\n status: user.status,\r\n role: _role,\r\n effectiveDate: user.effectiveDate,\r\n cdpId: user.cdpId,\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPModalWorkComplete', FPModalWorkComplete);\r\nFPModalWorkComplete.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDateHelperService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n '$modalInstance',\r\n 'updateCEPServiceOrdersService',\r\n];\r\n\r\nfunction FPModalWorkComplete(\r\n $log,\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n commonService,\r\n dateHelperService,\r\n dtoService,\r\n indexedDbDataService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n $modalInstance,\r\n updateCEPServiceOrdersService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const baseUrl = window.location.origin;\r\n const kwCode = assetService.strings.CODE;\r\n const kwDeviceCode = assetService.strings.DEVICE_CODE;\r\n const kwDeviceName = assetService.strings.DEVICE_NAME;\r\n const kwName = assetService.strings.NAME;\r\n const kwMeterId = assetService.strings.METERID;\r\n const kwValue = assetService.strings.VALUE;\r\n const kwText = assetService.strings.TEXT;\r\n let dataToPatch = null;\r\n // eslint-disable-next-line prefer-destructuring\r\n const meterNotAtPremise = assetService.resolutionTypes.meterNotAtPremise;\r\n const orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n let repairTypeOptions = [];\r\n let resolutionTypeOptions = [];\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.dropdowns = {\r\n meterNumbers: null,\r\n repairTypes: null,\r\n resolutionTypes: null,\r\n customerSurveyMethods: null,\r\n };\r\n\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.typeInspectReplace = assetService.soType.INSPECTION_REPLACEMENT;\r\n vm.loadingSpinner = true;\r\n vm.currentTodayDate = undefined;\r\n vm.pastDate = undefined;\r\n vm.checkInstallation = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.addDays = addDays;\r\n vm.subDays = subDays;\r\n vm.closeModal = closeModal;\r\n vm.workComplete = workComplete;\r\n vm.isMeterRequired = isMeterRequired;\r\n vm.checkResolutionType = checkResolutionType;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.reloadServiceOrder, () => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n setModels();\r\n setDropdowns();\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function addDays(date, days) {\r\n return dateHelperService.addDays(date, days);\r\n }\r\n\r\n function subDays(date, days) {\r\n const newDate = new Date(date);\r\n newDate.setDate(newDate.getDate() - days);\r\n return new Date(newDate);\r\n }\r\n\r\n function closeModal() {\r\n vm.form.resolutionDetails.resolutionDateDukeCalendar = null;\r\n $modalInstance.close();\r\n }\r\n\r\n function isMeterRequired() {\r\n if (\r\n vm.form.soType === vm.typeInstallation.code &&\r\n !vm.form.serviceAddress.meterNumber[0].meterId &&\r\n vm.serviceOrder.resolutionDetails.resolutionType.code ===\r\n meterNotAtPremise\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n if (vm.serviceOrder) {\r\n setModels();\r\n setDropdowns();\r\n }\r\n vm.currentTodayDate = moment(new Date()).format('MM/DD/YYYY');\r\n vm.pastDate = moment(subDays(vm.currentTodayDate, 90)).format('MM/DD/YYYY');\r\n if (\r\n vm.form &&\r\n vm.form.soType === vm.typeInstallation.code &&\r\n (vm.form.resolutionDetails.resolutionType.code == 'INSTALLED' ||\r\n vm.form.resolutionDetails.resolutionType.code ==\r\n 'DEVICE_ALREADY_INSTALLED' ||\r\n vm.form.resolutionDetails.resolutionType.code ==\r\n 'DIFFERENT_DEVICE_INSTALLED')\r\n ) {\r\n vm.checkInstallation = true;\r\n } else {\r\n vm.checkInstallation = false;\r\n }\r\n }\r\n\r\n function checkResolutionType() {\r\n if (\r\n vm.form &&\r\n vm.form.soType == vm.typeInstallation.code &&\r\n (vm.form.resolutionDetails.resolutionType.code == 'INSTALLED' ||\r\n vm.form.resolutionDetails.resolutionType.code ==\r\n 'DEVICE_ALREADY_INSTALLED' ||\r\n vm.form.resolutionDetails.resolutionType.code ==\r\n 'DIFFERENT_DEVICE_INSTALLED')\r\n ) {\r\n vm.checkInstallation = true;\r\n } else {\r\n vm.checkInstallation = false;\r\n }\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function patchServiceOrder(serviceOrder) {\r\n return updateCEPServiceOrdersService.sitecore\r\n .updateCEPServiceOrders(serviceOrder)\r\n .then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setDropdowns() {\r\n const promises = [];\r\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\r\n promises.push(\r\n indexedDbDataService\r\n .getSRRepairTypesByProduct(vm.serviceOrder.program)\r\n .then(data => {\r\n repairTypeOptions = data;\r\n }),\r\n );\r\n\r\n promises.push(\r\n indexedDbDataService\r\n .getSRResolutionTypesByProduct(vm.serviceOrder.program)\r\n .then(data => {\r\n resolutionTypeOptions = data;\r\n }),\r\n );\r\n } else {\r\n promises.push(\r\n indexedDbDataService\r\n .getWOResolutionTypesByWOType(vm.serviceOrder.soType)\r\n .then(data => {\r\n resolutionTypeOptions = data;\r\n }),\r\n );\r\n }\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.dropdowns = {\r\n repairTypeOptions: null,\r\n meterNumbers: null,\r\n resolutionTypeOptions: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n resolutionTypeOptions,\r\n kwCode,\r\n kwName,\r\n ),\r\n kwValue,\r\n vm.form.resolutionDetails.resolutionType.code,\r\n ),\r\n equipmentOptions: {\r\n options: null,\r\n },\r\n };\r\n\r\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\r\n vm.dropdowns.repairTypeOptions = genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n repairTypeOptions,\r\n kwCode,\r\n kwName,\r\n ),\r\n kwValue,\r\n vm.form.repairType.code,\r\n );\r\n }\r\n\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n const dropDownList = genericHelperService.createDropdownList(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n kwMeterId,\r\n );\r\n vm.dropdowns.meterNumbers = genericHelperService.setSelectedProp(\r\n dropDownList,\r\n kwValue,\r\n vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n );\r\n }\r\n\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n const dropDownList = genericHelperService.createDropdownList(\r\n vm.serviceOrder.equipmentOptions.options,\r\n kwDeviceCode,\r\n kwDeviceName,\r\n );\r\n vm.dropdowns.equipmentOptions.options = genericHelperService.setSelectedProp(\r\n dropDownList,\r\n kwValue,\r\n vm.serviceOrder.equipmentDetails.deviceCode,\r\n );\r\n }\r\n\r\n if (vm.serviceOrder.soType === vm.typeInspectReplace.code) {\r\n const dropDownList = genericHelperService.createDropdownList(\r\n vm.serviceOrder.equipmentOptions.options,\r\n kwDeviceCode,\r\n kwDeviceName,\r\n );\r\n vm.dropdowns.equipmentOptions.options = genericHelperService.setSelectedProp(\r\n dropDownList,\r\n kwText,\r\n vm.serviceOrder.equipmentDetails.replacementDeviceName,\r\n );\r\n }\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n });\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n descriptionOfWorkQtyParts:\r\n vm.serviceOrder.woorSR === vm.typeServiceRequest\r\n ? vm.serviceOrder.descriptionOfWorkQtyPartsCovered\r\n : vm.serviceOrder.descriptionOfWorkQtyParts,\r\n descriptionOfWorkQtyPartsCovered:\r\n vm.serviceOrder.woorSR === vm.typeServiceRequest\r\n ? vm.serviceOrder.descriptionOfWorkQtyPartsCovered\r\n : null,\r\n customerContactPreferences: {\r\n preferredEmailAddress:\r\n vm.serviceOrder.customerContactPreferences.preferredEmailAddress,\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId:\r\n vm.serviceOrder.soType === vm.typeInstallation.code\r\n ? !vm.serviceOrder.serviceAddress.meterNumber\r\n ? vm.serviceOrder.serviceAddress.meterNumber[0].meterId\r\n : null\r\n : vm.serviceOrder.serviceAddress.meterNumber !== ''\r\n ? genericHelperService.convertArrayToString(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n )\r\n : null,\r\n },\r\n ],\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: vm.serviceOrder.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDateDukeCalendar: !vm.serviceOrder.resolutionDetails\r\n .resolutionDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.resolutionDetails.resolutionDate,\r\n )\r\n : vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar,\r\n },\r\n repairType: {\r\n code: vm.serviceOrder.repairType.code,\r\n },\r\n customerContactHistory: {\r\n surveyReceivedByCustomer:\r\n vm.serviceOrder.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate)\r\n : vm.serviceOrder.createdDateDukeCalendar,\r\n scheduledStartDateDukeCalendar: !vm.serviceOrder\r\n .scheduledStartDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.scheduledStartDate,\r\n )\r\n : vm.serviceOrder.scheduledStartDateDukeCalendar,\r\n woorSR: vm.serviceOrder.woorSR,\r\n soType: vm.serviceOrder.soType,\r\n };\r\n\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n const installationEquipDetails = {\r\n deviceName: vm.serviceOrder.equipmentDetails.deviceName\r\n ? vm.serviceOrder.equipmentDetails.deviceName\r\n : '',\r\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber\r\n ? vm.serviceOrder.equipmentDetails.deviceSerialNumber\r\n : '',\r\n };\r\n vm.form.equipmentDetails = installationEquipDetails;\r\n }\r\n\r\n if (vm.serviceOrder.soType === vm.typeInspectReplace.code) {\r\n const equipmentDetails = {\r\n replacementNeeded: vm.serviceOrder.equipmentDetails.replacementNeeded,\r\n replacementDeviceName:\r\n vm.serviceOrder.equipmentDetails.replacementDeviceName,\r\n replacementDeviceSerialNo:\r\n vm.serviceOrder.equipmentDetails.replacementDeviceSerialNo,\r\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\r\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\r\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational,\r\n };\r\n vm.form.equipmentDetails = equipmentDetails;\r\n }\r\n }\r\n\r\n function workComplete(event) {\r\n broadcastService.patchEventStarted();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n vm.form.soStatus = assetService.status.COMPLETED.code;\r\n vm.form.soStatusName = assetService.status.COMPLETED.value;\r\n vm.form.resolutionDetails.resolutionDate = dateHelperService.concatDate(\r\n vm.form.resolutionDateDukeCalendar,\r\n '00:00',\r\n );\r\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\r\n vm.form.descriptionOfWorkQtyPartsCovered =\r\n vm.form.descriptionOfWorkQtyParts;\r\n }\r\n if (\r\n vm.serviceOrder.soType === assetService.soType.INSPECTION_REPLACEMENT.code\r\n ) {\r\n const foundOption = _.find(\r\n vm.serviceOrder.equipmentOptions.options,\r\n option =>\r\n option.deviceCode === vm.form.equipmentDetails.replacementDeviceName,\r\n );\r\n\r\n if (foundOption) {\r\n vm.form.equipmentDetails.replacementDeviceName = foundOption.deviceName;\r\n }\r\n }\r\n\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, vm.form);\r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n dataToPatch = dtoService.patchServiceRequest(vm.serviceOrder);\r\n } else {\r\n switch (vm.serviceOrder.soType) {\r\n case assetService.soType.INSTALLATION.code:\r\n dataToPatch = dtoService.patchInstallation(vm.serviceOrder);\r\n break;\r\n case assetService.soType.INSPECTION_REPLACEMENT.code:\r\n dataToPatch = dtoService.patchInspectReplace(vm.serviceOrder);\r\n break;\r\n case assetService.soType.REMOVAL.code:\r\n dataToPatch = dtoService.patchRemoval(vm.serviceOrder);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n dataToPatch = dtoService.patchWrapper([dataToPatch]);\r\n\r\n const deserializeSO = dtoService.transformServiceOrder(vm.serviceOrder);\r\n\r\n patchServiceOrder(dataToPatch).then(\r\n () => {\r\n putAcceptedOrder(deserializeSO).then(\r\n () => {\r\n window.location.replace(\r\n baseUrl + orderDetailsUrl + vm.serviceOrder.serviceOrderId,\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n () => {},\r\n );\r\n\r\n broadcastService.loadingSpinner(true);\r\n closeModal();\r\n }\r\n\r\n function putAcceptedOrder(serviceOrder) {\r\n return indexedDbDataService.putAcceptedOrder(serviceOrder).then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCModalDelegationInvite', CCModalDelegationInvite);\r\nCCModalDelegationInvite.$inject = [\r\n '$log',\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n 'ccDelegationAssetService',\r\n 'sessionStorageService',\r\n 'updateDelegationService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction CCModalDelegationInvite(\r\n $log,\r\n apiApigeeConfigService,\r\n assetService,\r\n ccDelegationAssetService,\r\n sessionStorageService,\r\n updateDelegationService,\r\n $modalInstance,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _accept = ccDelegationAssetService.strings.accept;\r\n const _decline = ccDelegationAssetService.strings.decline;\r\n const _successfullyUpdated = assetService.replyCodes.Successfully_Updated;\r\n let _status = null;\r\n\r\n\r\n /* --------------Scope Vars-----------------------*/\r\n vm.data = {\r\n invites: [],\r\n multiple: false,\r\n };\r\n vm.dataToPost = {\r\n delegations: [],\r\n };\r\n vm.updateDelegation = {\r\n replyCode: null,\r\n };\r\n vm.form = {\r\n invite: [],\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.acceptDeclineDelegation = acceptDeclineDelegation;\r\n /* --------------Function Definitions-----------------------*/\r\n function acceptDeclineDelegation(option, status) {\r\n if (option === 1) {\r\n if (status === 0) {\r\n _status = _decline;\r\n } else {\r\n _status = _accept;\r\n }\r\n vm.dataToPost.delegations.push({\r\n accountDeleagtionRequestId: vm.data.invites[0].accountDelegationRequestId,\r\n status: _status,\r\n });\r\n } else {\r\n vm.dataToPost.delegations = _.map(vm.data.invites, (item, index) => ({\r\n accountDeleagtionRequestId: item.accountDelegationRequestId,\r\n status: vm.form.invite[index] === true ? _accept : _decline,\r\n }));\r\n }\r\n\r\n updateDelegation(vm.dataToPost).then(\r\n () => {\r\n if (vm.updateDelegation.replyCode === _successfullyUpdated) {\r\n $modalInstance.close();\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function updateDelegation(data) {\r\n return updateDelegationService.sitecore.updateDelegation(data)\r\n .then(\r\n (result) => {\r\n vm.updateDelegation.replyCode = result.messageText;\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.data.invites = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.dashboard.delegationInvite,\r\n );\r\n if (vm.data.invites.length > 1) {\r\n vm.data.multiple = true;\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('correspondencePaperlessBillingController', correspondencePaperlessBillingController);\r\ncorrespondencePaperlessBillingController.$inject = [\r\n '$scope',\r\n 'paperlessBillingFactory',\r\n 'commonService',\r\n 'apiConfigService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'assetService'\r\n];\r\n\r\nfunction correspondencePaperlessBillingController(\r\n $scope,\r\n paperlessBillingFactory,\r\n commonService,\r\n apiConfigService,\r\n genericHelperService,\r\n sessionStorageService,\r\n assetService\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let _url = null;\r\n let _urlCities = null;\r\n let widgetUsers = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n let vm = this;\r\n vm.title = 'Paperless Billing';\r\n vm.data = {};\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n let init = init;\r\n let setModel = setModel;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n vm.doEnrroll = function(keyName) {\r\n let dataObj = null;\r\n dataObj = vm.managerData.managerData;\r\n vm.formBtn = (_.isEqual(vm.data, dataObj))? true : false;\r\n };\r\n \r\n let formatCity = function (city) {\r\n city = city.replace(/[A-Za-z]+/g, function(match){ \r\n return (match.trim()[0]);\r\n }); \r\n \r\n city = city.replace(/\\s/g, '');\r\n \r\n return city;\r\n \r\n };\r\n\r\n let setFormatAddress = function(address) {\r\n address.streetAddress += ',';\r\n\r\n address.city = formatCity(address.city);\r\n \r\n return address;\r\n };\r\n\r\n let setData = function (account, mailingAddres) {\r\n return{\r\n accountNumber: account.accountNumber,\r\n accountNickName: account.accountNickName,\r\n customerName: account.customerName,\r\n residential: account.residential,\r\n isSuccess: account.isSuccess,\r\n mailingAddres: mailingAddres\r\n };\r\n }\r\n\r\n let setList = function (accounts) {\r\n let mailingAddres = '';\r\n\r\n vm.data.accounts = [];\r\n\r\n accounts.map(function(account) {\r\n mailingAddres = setFormatAddress(account.mailingAddres);\r\n\r\n mailingAddres = genericHelperService.restructArrayObjDropdown([mailingAddres], 'maId');\r\n\r\n vm.data.accounts.push(setData(account, mailingAddres[0]));\r\n })\r\n }\r\n\r\n setModel = function() {\r\n setList(vm.accounts.accounts);\r\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, vm.data);\r\n };\r\n\r\n let getPaperlessBillding = function() { \r\n return paperlessBillingFactory.getServicePaperlessBilling(_url).then(\r\n function(result) {\r\n vm.accounts = result;\r\n },\r\n function(error) {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n _url = apiConfigService.getDefaultPaperlessBilldingUrl('');\r\n\r\n let promises = [getPaperlessBillding()];\r\n \r\n commonService.executePromises(promises).then(function() {\r\n setModel();\r\n });\r\n }\r\n\r\n init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}","app.controller('CCSSOComponentController', CCSSOComponentController);\r\n\r\nCCSSOComponentController.$inject = [\r\n 'commongaTaggingService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'getLoggedInUserDetailsService',\r\n 'ccGetUserAccountsService',\r\n 'returnApplicableProgramsService',\r\n '$scope',\r\n];\r\n\r\nfunction CCSSOComponentController(\r\n commongaTaggingService,\r\n sessionStorageService,\r\n assetService,\r\n getLoggedInUserDetailsService,\r\n ccGetUserAccountsService,\r\n returnApplicableProgramsService,\r\n $scope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.isNonNativeWithAccounts = false;\r\n vm.isNonNativeWithoutAccounts = false;\r\n vm.contributionProgram = null;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.enableSso = false;\r\n vm.dataAccount = {};\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n let title = arrayElements[2].split(':').join('');\r\n arrayElements.splice(2, 1, 'subheadline:' + title);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush(...theArguments) {\r\n let arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePushSSO(arrayElements);\r\n }\r\n\r\n function load() {\r\n const dashboardUserType = sessionStorageService.get(\r\n assetService.storageKeys.dashboard.userType,\r\n );\r\n\r\n setSTLSession();\r\n if (dashboardUserType === null) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(userresults => {\r\n vm.dataAccount = {\r\n emailId: userresults.Value,\r\n cdpId: userresults.Key,\r\n };\r\n ccGetUserAccountsService\r\n .getUserAccounts(vm.dataAccount)\r\n .then(results => {\r\n if (results.nativeUser) {\r\n vm.enableSso = true;\r\n } else {\r\n vm.enableSso = false;\r\n }\r\n });\r\n });\r\n } else if (\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS\r\n ) {\r\n vm.enableSso = false;\r\n } else {\r\n vm.enableSso = true;\r\n }\r\n }\r\n function setSTLSession() {\r\n let globalSelectedAccount;\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n const params = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n };\r\n returnApplicablePrograms(params).then(\r\n () => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.customerAssistance,\r\n vm.contributionProgram,\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function returnApplicablePrograms(data) {\r\n return returnApplicableProgramsService.sitecore\r\n .returnApplicablePrograms(data)\r\n .then(\r\n result => {\r\n let _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(\r\n ':',\r\n );\r\n vm.contributionProgram = {\r\n id: _temporalProgram[0].trim(),\r\n name: _temporalProgram[1],\r\n contractAccount:\r\n result.d.Programtores_nav.results[0].ContractAccount,\r\n startDate: result.d.Programtores_nav.results[0].ProgramStartDate,\r\n endDate: result.d.Programtores_nav.results[0].ProgramEndDate,\r\n status: result.d.Programtores_nav.results[0].Status, // Awaiting 'Status' field to be added to response\r\n dollarAmount: result.d.Programtores_nav.results[0].DollarAmount,\r\n };\r\n vm.contributionName = vm.contributionProgram.name\r\n .toLowerCase()\r\n .split(' ')\r\n .map(s => s.charAt(0).toUpperCase() + s.substring(1))\r\n .join(' ');\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const init = function() {\r\n const elem = $('.CCDashboard')[0];\r\n if (elem === undefined) {\r\n load();\r\n }\r\n };\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n const elem = $('.CCDashboard')[0];\r\n if (elem !== undefined) {\r\n load();\r\n }\r\n });\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\nfunction CCModalAPEditUser(\r\n $log,\r\n $rootScope,\r\n $modalInstance,\r\n $timeout,\r\n apiApigeeConfigService,\r\n assetService,\r\n updateDelegationService,\r\n maintainRelationshipService,\r\n sessionStorageService,\r\n dateHelperService,\r\n ccDelegationAssetService,\r\n dataModelsDTOProductsAndServices,\r\n FPBroadcastService,\r\n genericHelperService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _action = assetService.serviceActions.maintainRelationship.UPD_REL;\r\n this.selectedUser = {};\r\n /* --------------Global Vars-----------------------*/\r\n let globalSelectedAccount = {};\r\n let globalAccountInfo = {};\r\n vm.disableUpdateButton = true;\r\n vm.load = false;\r\n vm.endDate = dateHelperService.getDateFromFullDate(\r\n moment()\r\n .add(2, 'years')\r\n .format(),\r\n );\r\n vm.today = new Date();\r\n vm.today.setDate(vm.today.getDate() + 1);\r\n vm.today = dateHelperService.getDateFromFullDate(vm.today);\r\n vm.tableRelations = ccDelegationAssetService.accountPermissionsTable.tableRelations;\r\n vm.usersDelegations = [];\r\n vm.userRole = '';\r\n vm.accessEndDate = '';\r\n vm.updatedRole = '';\r\n vm.updatedendDate = '';\r\n /* ---------------Initialization-------------------*/\r\n\r\n /* --------------$on functions-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function changeRelationship() {\r\n if (vm.userRole && vm.userRole !== vm.selectedUser.relationship) {\r\n vm.disableUpdateButton = false;\r\n } else {\r\n vm.disableUpdateButton = true;\r\n }\r\n }\r\n\r\n vm.tableRelations = genericHelperService.arrayToDrop(vm.tableRelations, null, null);\r\n\r\n function saveDelegations() {\r\n const adminRoleId = '001';\r\n const viewerRoleId = '012';\r\n\r\n $rootScope.delegation = true;\r\n let accessEndDateValue;\r\n if (!angular.isDefined(vm.accessEndDate)) {\r\n vm.accessEndDate = vm.selectedUser.accesUntil;\r\n }\r\n\r\n if (!angular.isDefined(vm.userRole)) {\r\n vm.userRole = vm.selectedUser.relationship;\r\n }\r\n\r\n if (vm.selectedUser.status !== 'ACTIVE') {\r\n if (vm.accessEndDate === 'No End Date') {\r\n accessEndDateValue = '';\r\n } else {\r\n accessEndDateValue = vm.accessEndDate.replace(/\\//g, '-');\r\n accessEndDateValue = accessEndDateValue.replace(/ /g, '');\r\n\r\n\r\n }\r\n const dataObject = {\r\n accountDelegationRequestId: vm.selectedUser.delegationId,\r\n accessEndDate:\r\n accessEndDateValue === '' ? accessEndDateValue : moment(accessEndDateValue).format(),\r\n role: vm.userRole === 'Admin' ? adminRoleId : viewerRoleId,\r\n };\r\n updateDelegationService.sitecore.updateDelegationManage(dataObject).then(\r\n result => {\r\n if (result.returnCode === 0) {\r\n setToast(true);\r\n } else {\r\n setToast(false);\r\n }\r\n\r\n closeModal();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n closeModal();\r\n },\r\n );\r\n }\r\n if (vm.selectedUser.status === 'ACTIVE') {\r\n if (vm.accessEndDate == 'No End Date') {\r\n accessEndDateValue = '9999-12-31T00:00:00';\r\n } else {\r\n let date = new Date(vm.accessEndDate);\r\n if(date == 'Invalid Date'){\r\n const accessEndDateVal = vm.accessEndDate.replace(/ /g,'')\r\n date = new Date(accessEndDateVal);\r\n }\r\n const month = date.getMonth() + 1;\r\n const dateValue = date.getDate();\r\n accessEndDateValue = `${date.getFullYear()}-${month}-${dateValue}T00:00:00`;\r\n }\r\n const dataToPost = {\r\n action: _action,\r\n businessPartnerId: vm.primaryBP,\r\n relatedBusinessPartnerId: vm.selectedUser.delegationId,\r\n sessionNo: '',\r\n accounts: [\r\n {\r\n contractAccountId: vm.contractAccountId,\r\n relationship: vm.userRole === 'Admin' ? '001' : '012',\r\n caAccessEndDate: accessEndDateValue,\r\n },\r\n ],\r\n };\r\n maintainRelationshipService.sitecore.maintainRelationship(dataToPost).then(\r\n result => {\r\n console.log(result);\r\n if (result.ReturnCodes && result.ReturnCodes[0].ReturnCode1?.ReplyCode === 'SUCCESS') {\r\n setToast(true);\r\n } else {\r\n setToast(false);\r\n }\r\n // vm.maintainRelationship.ReplyCode = result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.ZreplyCode;\r\n closeModal();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n closeModal();\r\n },\r\n );\r\n }\r\n }\r\n\r\n function setToast(isSusccess) {\r\n if (isSusccess) {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Success! Changes saved.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Sorry! We are unable to save your changes at this time.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n }\r\n $rootScope.$broadcast(ccDelegationAssetService.events.updateUserAP);\r\n }\r\n\r\n function formUpdated() {\r\n if (vm.load) {\r\n $timeout(() => {\r\n if (vm.editUser.calendar.$touched) {\r\n if (\r\n vm.accessEndDate === 'No End Date' ||\r\n (vm.accessEndDate && vm.accessEndDate.length === 14)\r\n ) {\r\n vm.disableUpdateButton = false;\r\n } else {\r\n vm.disableUpdateButton = true;\r\n }\r\n } else if (vm.userRole && vm.userRole !== vm.selectedUser.relationship) {\r\n vm.disableUpdateButton = false;\r\n } else {\r\n vm.disableUpdateButton = true;\r\n }\r\n }, 1000);\r\n }\r\n vm.load = true;\r\n }\r\n\r\n function capitalizeName(name) {\r\n return dataModelsDTOProductsAndServices.transformName(name);\r\n }\r\n\r\n function load() {\r\n vm.disableUpdateButton = true;\r\n vm.sessionStorage = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n );\r\n vm.selectedUser = vm.sessionStorage.selectedUser;\r\n vm.userRole = vm.selectedUser.relationship;\r\n vm.accessEndDate = vm.selectedUser.accesUntil;\r\n }\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.closeModal = closeModal;\r\n vm.saveDelegations = saveDelegations;\r\n vm.changeRelationship = changeRelationship;\r\n vm.capitalizeName = capitalizeName;\r\n vm.formUpdated = formUpdated;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.setToast = setToast;\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n // sessionStorageService.delete(ccDelegationAssetService.storageKeys.accountPermissions);\r\n if (Object.prototype.hasOwnProperty.call(globalAccountInfo, 'accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.sessionData = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n );\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n vm.primaryBP = globalAccountInfo.primaryBp;\r\n vm.primaryEmail = globalAccountInfo.userEmail;\r\n load();\r\n }\r\n\r\n init();\r\n}\r\nCCModalAPEditUser.$inject = [\r\n '$log',\r\n '$rootScope',\r\n '$modalInstance',\r\n '$timeout',\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n 'updateDelegationService',\r\n 'maintainRelationshipService',\r\n 'sessionStorageService',\r\n 'dateHelperService',\r\n 'ccDelegationAssetService',\r\n 'dataModelsDTOProductsAndServices',\r\n 'FPBroadcastService',\r\n 'genericHelperService',\r\n 'commongaTaggingService',\r\n];\r\napp.controller('CCModalAPEditUser', CCModalAPEditUser);\r\n","/* eslint-disable no-underscore-dangle */\r\nfunction CCModalAPResendInviteLink(\r\n $log,\r\n $rootScope,\r\n $modalInstance,\r\n $timeout,\r\n apiApigeeConfigService,\r\n assetService,\r\n ccDelegationAssetService,\r\n resendEmailService,\r\n sessionStorageService,\r\n FPBroadcastService,\r\n commongaTaggingService,\r\n) {\r\n /* ---------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _success = assetService.replyCodes.Success;\r\n\r\n let _index = null;\r\n /* --------------Global Vars-----------------------*/\r\n vm.data = {\r\n email: null,\r\n role: null,\r\n accountDelegationRequestId: null,\r\n };\r\n\r\n vm.sessionData = {};\r\n vm.resendEmail = {\r\n replyCode: null,\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n /* --------------$on functions-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function resendEmail(data) {\r\n return resendEmailService.sitecore.resendEmail(data).then(\r\n (result) => {\r\n vm.resendEmail.replyCode = result.message;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function cancelResendInviteLink() {\r\n $modalInstance.close();\r\n }\r\n\r\n function resendInviteLink() {\r\n $rootScope.delegation = true;\r\n const dataToPost = {\r\n accountDelegationRequestId: vm.data.accountDelegationRequestId,\r\n };\r\n resendEmail(dataToPost).then(\r\n () => {\r\n if (vm.resendEmail.replyCode === _success) {\r\n setToast(true);\r\n // FPBroadcastService.resendLink();\r\n } else {\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n }\r\n $modalInstance.close();\r\n },\r\n (error) => {\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function setToast(isSusccess) {\r\n if (isSusccess) {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Success! Invitation sent.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Sorry! We were unable to resend the invitation at this time.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n }\r\n $rootScope.$broadcast(ccDelegationAssetService.events.resendLink);\r\n }\r\n\r\n function load() {\r\n vm.sessionData = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n );\r\n _index = vm.sessionData.resendLink.index;\r\n vm.data.email = vm.sessionData.users[_index].userName;\r\n vm.data.role = vm.sessionData.users[_index].relationship;\r\n vm.data.accountDelegationRequestId = vm.sessionData.users[_index].delegationId;\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelResendInviteLink = cancelResendInviteLink;\r\n vm.resendInviteLink = resendInviteLink;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.setToast = setToast;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\nCCModalAPResendInviteLink.$inject = [\r\n '$log',\r\n '$rootScope',\r\n '$modalInstance',\r\n '$timeout',\r\n 'apiApigeeConfigService',\r\n 'assetService',\r\n 'ccDelegationAssetService',\r\n 'resendEmailService',\r\n 'sessionStorageService',\r\n 'FPBroadcastService',\r\n 'commongaTaggingService',\r\n];\r\napp.controller('CCModalAPResendInviteLink', CCModalAPResendInviteLink);\r\n","/* eslint-disable no-underscore-dangle */\r\nfunction CCModalAPDeleteUser(\r\n $log,\r\n $rootScope,\r\n assetService,\r\n ccDelegationAssetService,\r\n deleteDelegationService,\r\n maintainRelationshipService,\r\n FPBroadcastService,\r\n sessionStorageService,\r\n dataModelsDTOProductsAndServices,\r\n $modalInstance,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _delRel = assetService.serviceActions.maintainRelationship.DEL_REL;\r\n const _succes = ccDelegationAssetService.strings.success;\r\n const _succesDeleteDelegation = ccDelegationAssetService.strings.success_delete_delegation;\r\n const _pending = ccDelegationAssetService.strings.Pending;\r\n const _declined = ccDelegationAssetService.strings.Declined;\r\n const _expiredInvite = ccDelegationAssetService.strings.expiredInvite;\r\n let _selectedAccount = null;\r\n let _index = null;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.data = {\r\n user: null,\r\n contractAccount: null,\r\n status: null,\r\n bussinesPartner: null,\r\n relatedBusinessPartner: null,\r\n role: null,\r\n accountDelegationRequestId: [],\r\n };\r\n vm.deleteDelegation = {\r\n replyCode: null,\r\n };\r\n vm.maintainRelationship = {\r\n replyCode: null,\r\n };\r\n vm.sessionStorage = {};\r\n vm.users = [];\r\n /* ---------------Initialization-------------------*/\r\n\r\n /* --------------$on functions-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function maintainRelationship(data) {\r\n $rootScope.delegation = true;\r\n return maintainRelationshipService.sitecore.maintainRelationship(data).then(\r\n result => {\r\n if (result.ReturnCodes && result.ReturnCodes[0].ReturnCode1?.ReplyCode === 'SUCCESS') {\r\n vm.maintainRelationship.replyCode =\r\n result.d.ZDIG_ROLESDELEGATION_RESSet.results[0].Message.ReplyCode;\r\n setToast(true);\r\n } else {\r\n setToast(false);\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function deleteDelegation(data) {\r\n $rootScope.delegation = true;\r\n return deleteDelegationService.sitecore.deleteDelegation(data).then(\r\n result => {\r\n if (result.messageText === 'Successfully Deleted the rows' || result.messageText === 'Success') {\r\n vm.deleteDelegation.replyCode = result.messageText;\r\n setToast(true);\r\n } else {\r\n $rootScope.delegation = false;\r\n setToast(false);\r\n }\r\n $modalInstance.close();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n setToast(false);\r\n $rootScope.delegation = false;\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function setToast(isSusccess) {\r\n if (isSusccess) {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'success',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Success! User deleted.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotification,\r\n 'error',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationMessage,\r\n 'Sorry! We were unable to delete this user at this time.',\r\n );\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.AccountPermissions.toastNotificationtime,\r\n ccDelegationAssetService.strings.FADEOUT,\r\n );\r\n }\r\n $rootScope.$broadcast(ccDelegationAssetService.events.deleteUserAP);\r\n }\r\n\r\n function cancelDeteteUser() {\r\n $modalInstance.close();\r\n }\r\n\r\n function removeUser() {\r\n _.remove(vm.users, (user, index) => {\r\n const result = index === _index;\r\n return result;\r\n });\r\n vm.sessionStorage.users = vm.users;\r\n sessionStorageService.set(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n vm.sessionStorage,\r\n );\r\n // FPBroadcastService.deleteUserAP();\r\n $modalInstance.close();\r\n }\r\n\r\n function resendDeleteUser() {\r\n const dataToPost = {\r\n action: _delRel,\r\n Cdpid: vm.data.cdpId,\r\n businessPartnerId: vm.data.bussinesPartner,\r\n relatedBusinessPartnerId: vm.data.relatedBusinessPartner,\r\n sessionNo: '',\r\n accounts: [\r\n {\r\n contractAccountId: vm.data.contractAccount,\r\n relationship: vm.data.role === 'Admin' ? '001' : '012',\r\n Experience: '',\r\n caAccessEndDate: moment()\r\n .subtract(1, 'days')\r\n .format('YYYY-MM-DDTHH:mm:ss'),\r\n },\r\n ],\r\n };\r\n\r\n if (\r\n vm.data.status === _pending ||\r\n vm.data.status === _declined ||\r\n vm.data.status === _expiredInvite\r\n ) {\r\n // vm.data.accountDelegationRequestId.push(9);\r\n deleteDelegation({\r\n accountDelegationRequestIdList: vm.data.accountDelegationRequestId,\r\n }).then(() => {\r\n if (vm.deleteDelegation.replyCode === _succesDeleteDelegation) {\r\n // maintainRelationship(dataToPost).then(() => {\r\n // if (vm.maintainRelationship.replyCode === _succes) {\r\n removeUser();\r\n // }\r\n // });\r\n }\r\n });\r\n } else {\r\n maintainRelationship(dataToPost).then(() => {\r\n if (vm.maintainRelationship.replyCode === _succes) {\r\n removeUser();\r\n } else {\r\n $modalInstance.close();\r\n }\r\n });\r\n }\r\n }\r\n function capitalizeName(name) {\r\n return dataModelsDTOProductsAndServices.transformName(name);\r\n }\r\n function setModels() {\r\n _index = vm.sessionStorage.deleteUser.index;\r\n vm.users = vm.sessionStorage.users;\r\n vm.data.user = vm.users[_index].userName;\r\n vm.data.role = vm.users[_index].relationship;\r\n vm.data.contractAccount = _selectedAccount.accountSelected.accountNum;\r\n vm.data.status = vm.users[_index].status;\r\n vm.data.relatedBusinessPartner = vm.users[_index].delegationId;\r\n vm.data.bussinesPartner = _selectedAccount.primaryBp;\r\n vm.data.cdpId = vm.users[_index].cdpId;\r\n vm.data.accountDelegationRequestId[0] = vm.users[_index].delegationId;\r\n }\r\n\r\n function load() {\r\n vm.sessionStorage = sessionStorageService.get(\r\n ccDelegationAssetService.storageKeys.accountPermissions,\r\n );\r\n _selectedAccount = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n setModels();\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelDeteteUser = cancelDeteteUser;\r\n vm.resendDeleteUser = resendDeleteUser;\r\n vm.capitalizeName = capitalizeName;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.setToast = setToast;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\nCCModalAPDeleteUser.$inject = [\r\n '$log',\r\n '$rootScope',\r\n 'assetService',\r\n 'ccDelegationAssetService',\r\n 'deleteDelegationService',\r\n 'maintainRelationshipService',\r\n 'FPBroadcastService',\r\n 'sessionStorageService',\r\n 'dataModelsDTOProductsAndServices',\r\n '$modalInstance',\r\n 'commongaTaggingService',\r\n];\r\napp.controller('CCModalAPDeleteUser', CCModalAPDeleteUser);\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('CCEnrollmentFixedBillManageCredit', CCEnrollmentFixedBillManageCredit);\r\nCCEnrollmentFixedBillManageCredit.$inject = [\r\n '$scope',\r\n 'assetService',\r\n 'commonService',\r\n 'apiConfigService',\r\n 'budgetBillingFactory',\r\n 'genericHelperService',\r\n];\r\n\r\nfunction CCEnrollmentFixedBillManageCredit(\r\n $scope,\r\n assetService,\r\n commonService,\r\n apiConfigService,\r\n budgetBillingFactory,\r\n genericHelperService,\r\n) {\r\n const vm = this;\r\n}\r\n","app.controller('CCEnrollmentFixedBillManage', CCEnrollmentFixedBillManage);\r\nCCEnrollmentFixedBillManage.$inject = [\r\n '$log',\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'commonService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'accountSearchService',\r\n 'getUsageComparisionService',\r\n '$timeout',\r\n 'getFixedBillDetailsService',\r\n 'commongaTaggingService',\r\n 'broadcastService'\r\n];\r\n\r\nfunction CCEnrollmentFixedBillManage(\r\n $log,\r\n $scope,\r\n $window,\r\n assetService,\r\n commonService,\r\n genericHelperService,\r\n sessionStorageService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n accountSearchService,\r\n getUsageComparisionService,\r\n $timeout,\r\n getFixedBillDetailsService,\r\n commongaTaggingService,\r\n broadcastService\r\n) {\r\n /** Scope Vars */\r\n // eslint-disable-next-line no-underscore-dangle\r\n const _url = null;\r\n let widgetUsers = null;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n\r\n /** Global Vars */\r\n const vm = this;\r\n vm.stageGo = assetService.fixedBill.unenrollFB.unenroll;\r\n vm.bBPlans = [];\r\n vm.reviewPlan = {};\r\n vm.showMessage = 0;\r\n vm.dataTable = [];\r\n vm.labelsChart = [];\r\n vm.monthNames = [];\r\n vm.numberOfMonths = '12';\r\n vm.charts = [\r\n 'mixed-chart-responsive-2',\r\n 'mixed-chart-responsive-3',\r\n 'mixed-chart-responsive-4',\r\n 'mixed-chart-responsive-5',\r\n ];\r\n vm.data = {\r\n renewalDate: null,\r\n CurrentDifferenceAmount: null,\r\n accuredAmountType: null,\r\n fixBillAmount: null,\r\n planType: null,\r\n chart: [],\r\n enrollmentEligibilityStatus: {},\r\n };\r\n vm.dataToGet = {\r\n installationNumber: null,\r\n meterNumber: null,\r\n serviceType: null,\r\n dataType: null,\r\n accountId: null,\r\n fromDate: null,\r\n toDate: null\r\n };\r\n vm.datasetsChart = [\r\n {\r\n label: 'Your FixedBill Amount',\r\n type: 'line',\r\n backgroundColor: '#005984',\r\n borderColor: '#005984',\r\n borderWidth: 6,\r\n pointStyle: 'line',\r\n pointBackgroundColor: '#005984',\r\n lineTension: 0,\r\n fill: false,\r\n data: [],\r\n },\r\n {\r\n label: 'Actual Billed Amount',\r\n width: 10,\r\n type: 'bar',\r\n backgroundColor: '#54b948',\r\n data: [],\r\n }\r\n ];\r\n vm.optionsChart = {\r\n title: {\r\n display: false,\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: function (tooltipItem, data) {\r\n return data['datasets'][tooltipItem.datasetIndex].label + ': ' + '$' + Number(tooltipItem.value).toFixed(2)\r\n },\r\n },\r\n },\r\n scales: {\r\n yAxes: [\r\n {\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Cost of Units Consumed',\r\n },\r\n ticks: {\r\n suggestedMax: 1000,\r\n suggestedMin: 0,\r\n callback(value) {\r\n return `$${value}`;\r\n },\r\n },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n barPercentage: 0.4,\r\n gridLines: {\r\n color: 'rgba(0, 0, 0, 0)',\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n display: true,\r\n position: 'bottom',\r\n onClick: null,\r\n reverse: true,\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 5,\r\n fontColor: 'black',\r\n },\r\n },\r\n };\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /** Function Declarations */\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n $scope.$watch('$viewContentLoaded', () => {\r\n $scope.$emit('loadingSpinner', true);\r\n $timeout(() => {\r\n getChartQuarterly();\r\n $scope.$emit('loadingSpinner', false);\r\n }, 0);\r\n });\r\n\r\n vm.unenrollPage = unenrollPage;\r\n vm.selectMessage = function (message) {\r\n vm.showMessage = vm.showMessage === message ? 0 : message;\r\n };\r\n\r\n /** Function Definitions */\r\n function unenrollPage() {\r\n $scope.$emit('nextStep', assetService.fixedBill.unenrollFB.unenroll);\r\n }\r\n\r\n function setDataChart(labelsChart, datasetsCart, optionsChart, id) {\r\n if (labelsChart.length > 0) {\r\n const setchart = {\r\n type: 'bar',\r\n data: {\r\n labels: labelsChart,\r\n datasets: datasetsCart,\r\n },\r\n options: optionsChart,\r\n };\r\n let elemChart = document.getElementById(id);\r\n if (elemChart !== null)\r\n new Chart(elemChart, setchart);\r\n }\r\n }\r\n\r\n getChartQuarterly = function () {\r\n let chart = [];\r\n let label = [];\r\n let typeEnd = 0;\r\n for (let i = 0; i < 4; i++) {\r\n type = i * 3;\r\n typeEnd = type + 3;\r\n chart = genericHelperService.notReferencesArrayObjects(vm.datasetsChart);\r\n chart[0].data = chart[0].data.slice(type, typeEnd);\r\n chart[1].data = chart[1].data.slice(type, typeEnd);\r\n label = vm.labelsChart.slice(type, typeEnd);\r\n setDataChart(label, chart, vm.optionsChart, `mixed-chart-responsive-${i + 2}`);\r\n }\r\n };\r\n\r\n function getChartData() {\r\n let maxValue = 0;\r\n let lastIndex = vm.data.chart.length - 1;\r\n let month = vm.data.chart[lastIndex].Month;\r\n let year = vm.data.chart[lastIndex].Year;\r\n for (let i = 11; i >= 0; i--) {\r\n let itemArray = {\r\n month: moment(`${year}/${month}`, 'YYYY/MM').subtract(i, 'months').format('MMM'),\r\n year: moment(`${year}/${month}`, 'YYYY/MM').subtract(i, 'months').format('YYYY')\r\n }\r\n vm.monthNames.push(itemArray)\r\n }\r\n _.forEach(vm.data.chart, item => { maxValue = maxValue >= item.Bill_Amt ? maxValue : item.Bill_Amt });\r\n _.forEach(vm.monthNames, (item, index) => {\r\n vm.labelsChart.push(`${item.month} ${item.year}`);\r\n if (vm.data.chart[index]) {\r\n const monthABA = moment().month(Number(vm.data.chart[index].Month) - 1).format(\"MMM\");\r\n //const yearABA = parseInt(vm.data.chart[index].Year)\r\n const position = findWithAttr(vm.monthNames, 'month', monthABA)\r\n vm.datasetsChart[1].data[position] = parseFloat(vm.data.chart[index].Bill_Amt).toFixed(2);\r\n }\r\n });\r\n\r\n function findWithAttr(array, attr, value) {\r\n for (let i = 0; i < array.length; i += 1) {\r\n if (array[i][attr] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n function findMatch(obj, array) {\r\n // Create arrays of property names\r\n for (let i = 0; i < array.length; i++) {\r\n let aProps = Object.getOwnPropertyNames(obj);\r\n let month = aProps[0];\r\n if (obj[month] == array[i][month]) {\r\n let year = aProps[1];\r\n if (obj[year] == array[i][year]) {\r\n return i;\r\n }\r\n }\r\n }\r\n return 12;\r\n }\r\n\r\n let fbAmountDate = {\r\n month: moment(vm.fixedBillDetails.RenewalDate).subtract(11, 'month').format('MMM'),\r\n year: moment(vm.fixedBillDetails.RenewalDate).subtract(11, 'month').format('YYYY')\r\n };\r\n const position = findMatch(fbAmountDate, vm.monthNames);\r\n for (let index = position; index < 12; index++) {\r\n vm.datasetsChart[0].data[index] = vm.data.fixBillAmount;\r\n }\r\n _.forEach(vm.datasetsChart[1].data, (item, index) => {\r\n if (!item) {\r\n vm.datasetsChart[1].data[index] = '0.0';\r\n }\r\n });\r\n maxValue *= 2;\r\n vm.optionsChart.scales.yAxes[0].ticks.suggestedMax = maxValue;\r\n setDataChart(vm.labelsChart, vm.datasetsChart, vm.optionsChart, 'mixed-chart');\r\n }\r\n\r\n function setModels() {\r\n vm.data.planType = 'BBPA';\r\n vm.data.accruedBalance = vm.fixedBillDetails.CurrentDifferenceAmount;\r\n if (vm.data.accruedBalance > 0) {\r\n vm.data.accuredAmountType = assetService.strings.DEBIT_BBH;\r\n } else if (vm.data.accruedBalance < 0) {\r\n vm.data.accuredAmountType = assetService.strings.CREDIT_BBH;\r\n vm.data.accruedBalance = vm.data.accruedBalance.substring(1);\r\n } else if (vm.data.accruedBalance == 0) {\r\n vm.data.accuredAmountType = assetService.strings.NONE_BBH;\r\n }\r\n sessionStorageService.set(assetService.storageKeys.fixedBilling.creditOnAccount, vm.data);\r\n getChartData();\r\n getChartQuarterly();\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.charts = [\r\n 'mixed-chart-responsive-2',\r\n 'mixed-chart-responsive-3',\r\n 'mixed-chart-responsive-4',\r\n 'mixed-chart-responsive-5',\r\n ];\r\n if (globalSelectedAccount.accountNum) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId, globalSelectedAccount.accountNum\r\n );\r\n }\r\n vm.contractAccountId = sessionStorageService.get(assetService.storageKeys.contractAccountId);\r\n vm.sessionData = sessionStorageService.get(assetService.storageKeys.fixedBilling.creditOnAccount);\r\n const promises = [\r\n accountFixedBillDetails(),\r\n accountEnrollmentEligibilityStatus(),\r\n accountSearch()\r\n ];\r\n commonService.executePromises(promises).then(() => {\r\n vm.dataToGet.accountId = vm.contractAccountId;\r\n if (vm.accountSearch.installationNumber) {\r\n vm.dataToGet.installationNumber = vm.accountSearch.installationNumber;\r\n } else {\r\n vm.dataToGet.meterNumber = vm.accountSearch.meterNumber;\r\n }\r\n if (vm.accountSearch.division === assetService.divisions.ELEC) {\r\n vm.dataToGet.serviceType = assetService.strings.ELEC;\r\n vm.dataToGet.dataType = assetService.strings.KWH;\r\n } else {\r\n vm.dataToGet.serviceType = assetService.strings.GAS;\r\n vm.dataToGet.dataType = assetService.strings.CCF;\r\n }\r\n vm.dataToGet.fromDate = moment(new Date()).subtract(12, 'month').format('YYYY-MM-DDTHH:mm:ss');\r\n vm.dataToGet.toDate = moment(new Date()).format('YYYY-MM-DDTHH:mm:ss');\r\n usageComparision(vm.dataToGet);\r\n });\r\n\r\n function accountFixedBillDetails() {\r\n return getFixedBillDetailsService.sitecore.getFixedBillDetails({\r\n contractAccountId: vm.contractAccountId\r\n }).then(result => {\r\n vm.fixedBillDetails = result.d.ReqCA.results[0];\r\n if (vm.fixedBillDetails.FixedBillAmount) {\r\n vm.data.fixBillAmount = parseFloat(vm.fixedBillDetails.FixedBillAmount);\r\n vm.data.CurrentDifferenceAmount = parseFloat(vm.fixedBillDetails.CurrentDifferenceAmount);\r\n } else {\r\n vm.data.fixedBill = 0.0;\r\n vm.data.CurrentDifferenceAmount = 0.0;\r\n }\r\n vm.data.CurrentDifferenceAmount = vm.data.CurrentDifferenceAmount < 0 ? vm.data.CurrentDifferenceAmount * -1 : vm.data.CurrentDifferenceAmount;\r\n vm.data.renewalDate = vm.fixedBillDetails.RenewalDate ? moment(vm.fixedBillDetails.RenewalDate).format('MMMM YYYY') : null;\r\n }, error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function accountEnrollmentEligibilityStatus() {\r\n return getAccountEnrollmentEligibilityStatusService.sitecore.getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: vm.contractAccountId\r\n }).then(result => {\r\n vm.data.enrollmentEligibilityStatus = _.find(\r\n result.d.Inp_Prog.results[0].Prog_Res.results, item => item.ProgName === assetService.billingAndPaymentProgramsCodes.FIXBIL\r\n );\r\n }, error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function accountSearch() {\r\n return accountSearchService.sitecore.accountSearch({\r\n contractAccountId: vm.contractAccountId\r\n }).then(result => {\r\n vm.accountSearch = {\r\n installationNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0].InstallationNumber,\r\n meterNumber: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0].MeterNumber,\r\n division: result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc\r\n .results[0].AccToProp.results[0].PropToInst.results[0].Division\r\n };\r\n }, error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n\r\n function usageComparision(data) {\r\n return getUsageComparisionService.sitecore.getUsageComparision(data).then(\r\n result => {\r\n vm.data.chart = result.d.results[0].ReqToCA_Nav.results[0].CAToPremise_Nav.results[0].PremiseToInstln_Nav.results[0]\r\n .InstlnToUsgMonth_Nav.results;\r\n setModels();\r\n }, error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n });\r\n }\r\n }\r\n\r\n let init = function () {\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('CCEnrollmentPlanDetails', CCEnrollmentPlanDetails);\r\nCCEnrollmentPlanDetails.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$window',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCEnrollmentPlanDetails(\r\n $scope,\r\n $rootScope,\r\n $window,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n) {\r\n let _fixedBillStorage = {};\r\n\r\n const vm = this;\r\n vm.renewalDate = null;\r\n vm.pageError = false;\r\n vm.dataPage = assetService.fixedBill.enrollmentFB;\r\n vm.fixedBillAmount = 0;\r\n vm.decimals = '00';\r\n vm.stageGo = vm.dataPage.enrollmentTerms;\r\n vm.cancel = cancel;\r\n vm.nextStep = nextStep;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* Function definition */\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function cancel(url) {\r\n window.location.href = url;\r\n }\r\n\r\n function nextStep() {\r\n $scope.$emit('nextStep', vm.stageGo);\r\n }\r\n\r\n function setModels() {\r\n if (_fixedBillStorage.FixedBillAmount != undefined) {\r\n vm.fixedBillAmount = _fixedBillStorage.FixedBillAmount;\r\n vm.decimals = vm.fixedBillAmount.substring(\r\n vm.fixedBillAmount.indexOf('.') + 1,\r\n );\r\n }\r\n let today = new Date();\r\n let dateOfRenewal = new Date(today.setMonth(today.getMonth() + 12));\r\n vm.renewalDate = moment(dateOfRenewal).format('MMMM YYYY');\r\n }\r\n\r\n function load() {\r\n vm.pageError = $rootScope.fixBillPageError;\r\n $window.scrollTo(0, 0);\r\n _fixedBillStorage = sessionStorageService.get(\r\n assetService.storageKeys.fixedBillStore,\r\n );\r\n vm.getJurisdiction =\r\n _fixedBillStorage.globalSelectedAccount.accountSelected.jurisdiction;\r\n setModels();\r\n }\r\n\r\n let init = function() {\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('CCEnrollmentSuccess', CCEnrollmentSuccess);\r\nCCEnrollmentSuccess.$inject = [\r\n '$scope',\r\n '$window',\r\n '$rootScope',\r\n 'assetService',\r\n 'broadcastService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCEnrollmentSuccess(\r\n $scope,\r\n $window,\r\n $rootScope,\r\n assetService,\r\n broadcastService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n) {\r\n const vm = this;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.goToPage = goToPage;\r\n\r\n /* Function definition */\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n //this will redirect to B&P Programs LP\r\n function goToPage(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n window.location.href = event.target.href;\r\n }\r\n\r\n let init = function() {\r\n $window.scrollTo(0, 0);\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n $rootScope.$broadcast('reached-success');\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('CCEnrollmentTerms', CCEnrollmentTerms);\r\nCCEnrollmentTerms.$inject = ['$scope', 'assetService'];\r\n\r\nfunction CCEnrollmentTerms($scope, assetService) {\r\n const vm = this;\r\n vm.dataPage = assetService.fixedBill.enrollmentFB;\r\n vm.stageGo = vm.dataPage.enrollmentDetails;\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n\r\n /* Function definition */\r\n function previousPage() {\r\n $scope.$emit('nextStep', assetService.fixedBill.enrollmentFB.enrollmentDetails);\r\n }\r\n\r\n function nextStep() {\r\n $scope.$emit('nextStep', assetService.fixedBill.enrollmentFB.enrollmentPlan);\r\n }\r\n\r\n // function changeButton() {\r\n // vm.activeAgreeButton = true;\r\n // angular\r\n // .element(\r\n // document.getElementById(assetService.strings.TERMS_TEXTAREA),\r\n // )\r\n // .scope()\r\n // .$apply();\r\n // }\r\n\r\n let init = function () {\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('CCEnrollmentFB', CCEnrollmentFB);\r\nCCEnrollmentFB.$inject = [\r\n '$log',\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'getFixedBillDetailsService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'getServicesService',\r\n 'cookieService',\r\n];\r\n\r\nfunction CCEnrollmentFB(\r\n $log,\r\n $scope,\r\n $state,\r\n assetService,\r\n getFixedBillDetailsService,\r\n commonService,\r\n sessionStorageService,\r\n getServicesService,\r\n cookieService,\r\n) {\r\n const dataToPost = {};\r\n let fixedBillStorage = {};\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n const vm = this;\r\n vm.reachedSuccess = false;\r\n vm.loadingSpinner = true;\r\n vm.dataPage = assetService.fixedBill.enrollmentFB;\r\n vm.stageGo = vm.dataPage.enrollmentPlan;\r\n vm.toStorage = {\r\n dataToPost: '',\r\n previous: assetService.fixedBill.enrollmentFB.enrollmentPlan,\r\n nextStep: assetService.fixedBill.enrollmentFB.enrollmentSuccess,\r\n nonNative: true, //if apply, if not add false\r\n txtTermsConditions: assetService.fixedBill.termsAndConditions,\r\n };\r\n\r\n /* Function Definitions */\r\n function saveAndGo() {\r\n sessionStorageService.set(\r\n assetService.storageKeys.abbreviatedReg,\r\n vm.toStorage,\r\n );\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.fixedBillStore,\r\n fixedBillStorage,\r\n );\r\n\r\n $state.go(vm.stageGo);\r\n }\r\n\r\n function getServices(dataPost) {\r\n let data = {\r\n businessPartnerId: globalSelectedAccount.primaryBp,\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n processCode: assetService.serviceActions.getServices.MOVE_OUT,\r\n };\r\n getServicesService.sitecore.getServices(data).then(\r\n result => {\r\n const contract = result.d.GetServ_Ins.results[0].Head_Ins.Contract;\r\n sessionStorageService.set(assetService.storageKeys.contract, contract);\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n const promise = [getFixedBillDetails(dataToPost), getServices(dataToPost)];\r\n commonService.executePromises(promise).then(() => {\r\n vm.loadingSpinner = false;\r\n fixedBillStorage.globalSelectedAccount = globalAccountInfo;\r\n saveAndGo();\r\n });\r\n }\r\n\r\n function load() {\r\n if (globalSelectedAccount.accountNum) {\r\n dataToPost.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n }\r\n setModels();\r\n }\r\n\r\n function getFixedBillDetails(data) {\r\n const paramData = {\r\n contractAccountId: data.contractAccountId,\r\n };\r\n\r\n return getFixedBillDetailsService.sitecore\r\n .getFixedBillDetails(paramData)\r\n .then(result => {\r\n if (result.d.ReqCA.results.hasOwnProperty('0')) {\r\n fixedBillStorage = result.d.ReqCA.results[0];\r\n }\r\n });\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n $scope.$on('nextStep', (index, page) => {\r\n vm.stageGo = page;\r\n saveAndGo();\r\n vm.loadingSpinner = true;\r\n });\r\n\r\n $scope.$on('reached-success', function() {\r\n vm.reachedSuccess = true;\r\n });\r\n\r\n /* Initialization */\r\n let init = function() {\r\n const isValidation = cookieService.getCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill\r\n .enrollment,\r\n );\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo.hasOwnProperty(assetService.strings.ACCOUNT_SELECTED)\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n sessionStorageService.set(\r\n assetService.events.care,\r\n globalAccountInfo.accountSelected.accountNum,\r\n );\r\n }\r\n load();\r\n } else {\r\n window.location.href = `/my-account/billing-and-payment-programs/`;\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller(\r\n 'CCUnenrollFixedBillARC',\r\n CCUnenrollFixedBillARC,\r\n);\r\nCCUnenrollFixedBillARC.$inject = ['$scope', 'assetService', '$state'];\r\n\r\nfunction CCUnenrollFixedBillARC($scope, assetService, $state) {\r\n const vm = this;\r\n vm.dataPage = assetService.fixedBill.unenrollFB;\r\n vm.stageGo = vm.dataPage.unenrollSuccess;\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n\r\n /* Function definition */\r\n function previousPage() {\r\n $scope.$emit('nextStep', '');\r\n }\r\n\r\n function nextStep() {\r\n $scope.$emit('nextStep', 'unenrollSuccess');\r\n }\r\n\r\n let init = function () {\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\napp.controller('CCUnenrollFixedBillSuccess', CCUnenrollFixedBillSuccess);\r\nCCUnenrollFixedBillSuccess.$inject = [\r\n '$scope',\r\n 'assetService',\r\n '$state',\r\n '$window',\r\n 'broadcastService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService'\r\n];\r\n\r\nfunction CCUnenrollFixedBillSuccess(\r\n $scope,\r\n assetService,\r\n $state,\r\n $window,\r\n broadcastService,\r\n sessionStorageService,\r\n commongaTaggingService\r\n) {\r\n const vm = this;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n function virtualPagePush(){\r\n var arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(){\r\n var arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n let init = function () {\r\n $window.scrollTo(0, 0);\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('CCUnenrollFixedBill', CCUnenrollFixedBill);\r\nCCUnenrollFixedBill.$inject = [\r\n '$scope',\r\n '$window',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'CCEnrollUnenrollInFixedBill',\r\n 'commongaTaggingService',\r\n 'broadcastService'\r\n];\r\n\r\nfunction CCUnenrollFixedBill(\r\n $scope,\r\n $window,\r\n assetService,\r\n sessionStorageService,\r\n CCEnrollUnenrollInFixedBill,\r\n commongaTaggingService,\r\n broadcastService\r\n) {\r\n const vm = this;\r\n vm.dataPage = assetService.fixedBill.unenrollFB;\r\n vm.stageGo = vm.dataPage.unenrollARC;\r\n vm.previousPage = previousPage;\r\n vm.nextStep = nextStep;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* Function definition */\r\n function virtualPagePush(){\r\n var arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(){\r\n var arrayElements = Array.prototype.slice.call(arguments)\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function previousPage() {\r\n $scope.$emit('nextStep', assetService.fixedBill.unenrollFB.unenrollManage);\r\n }\r\n\r\n function nextStep() {\r\n setDeEnroll();\r\n\r\n function setDeEnroll() {\r\n return CCEnrollUnenrollInFixedBill.sitecore\r\n .enrollUnenrollFixedBill(vm.dataToDeEnroll)\r\n .then(result => {\r\n if (result.d.ReqCA.results[0].Messages.ReplyCode === 'SUCCESS') {\r\n $scope.$emit(\r\n 'nextStep',\r\n assetService.fixedBill.unenrollFB.unenrollSuccess,\r\n );\r\n }\r\n });\r\n }\r\n }\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\r\n vm.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n vm.tempAccounts = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n vm.account = _.find(\r\n vm.tempAccounts.accounts,\r\n account => account.accountData.accountNum === vm.contractAccountId,\r\n );\r\n vm.data = vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.fixedBilling.creditOnAccount,\r\n );\r\n\r\n if (vm.sessionData) {\r\n vm.CurrentDifferenceAmount = vm.sessionData.CurrentDifferenceAmount;\r\n vm.accuredAmountType = vm.sessionData.accuredAmountType; // debit credit\r\n }\r\n vm.dataToDeEnroll = {\r\n contractAccountId: vm.contractAccountId,\r\n contract: vm.account.accountData.contract,\r\n action: 'unenroll',\r\n };\r\n\r\n $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n let init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('CCUnenrollFB', CCUnenrollFB);\r\nCCUnenrollFB.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n '$state',\r\n 'getServicesService',\r\n 'sessionStorageService',\r\n 'cookieService',\r\n];\r\n\r\nfunction CCUnenrollFB(\r\n $log,\r\n $scope,\r\n assetService,\r\n $state,\r\n getServicesService,\r\n sessionStorageService,\r\n cookieService,\r\n) {\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n vm.dataPage = assetService.fixedBill.unenrollFB;\r\n vm.stageGo = vm.dataPage.unenrollManage;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n\r\n /* Function Definitions */\r\n function load() {\r\n const dataPost = {\r\n contractAccountId: sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n ),\r\n };\r\n\r\n getServices(dataPost).then(\r\n () => {\r\n $state.go(vm.stageGo);\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function getServices(dataPost) {\r\n let data = {\r\n businessPartnerId: globalSelectedAccount.primaryBp,\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n processCode: assetService.serviceActions.getServices.MOVE_OUT,\r\n };\r\n return getServicesService.sitecore.getServices(data).then(\r\n result => {\r\n const contract = result.d.GetServ_Ins.results[0].Head_Ins.Contract;\r\n sessionStorageService.set(\r\n assetService.storageKeys.contract,\r\n contract,\r\n );\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n /* -------------------------Scope On------------------------- */\r\n $scope.$on(assetService.events.loadingSpinnerSuccess, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n $scope.$on('nextStep', (index, page) => {\r\n vm.loadingSpinner = true;\r\n $state.go(page);\r\n });\r\n\r\n /* Initialization */\r\n let init = function() {\r\n const isValidation = cookieService.getCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms.fixedBill\r\n .manage,\r\n );\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo.hasOwnProperty(assetService.strings.ACCOUNT_SELECTED)\r\n ) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n sessionStorageService.set(\r\n assetService.events.care,\r\n globalAccountInfo.accountSelected.accountNum,\r\n );\r\n }\r\n\r\n load();\r\n } else {\r\n window.location.href = '/my-account/billing-and-payment-programs/';\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ManageInstallmentPlans', ManageInstallmentPlans);\r\n\r\nManageInstallmentPlans.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'getActiveInstallmentPlansService',\r\n 'dateHelperService',\r\n 'sessionStorageService',\r\n '$filter',\r\n '$sce',\r\n '$rootScope',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'commonService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ManageInstallmentPlans(\r\n $log,\r\n assetService,\r\n getActiveInstallmentPlansService,\r\n dateHelperService,\r\n sessionStorageService,\r\n $filter,\r\n $sce,\r\n $rootScope,\r\n getAccountBalanceForRegularAccountService,\r\n commonService,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const PLAN_TYPE_ARREARS = 'arrears';\r\n const PLAN_TYPE_DOWN_PAY = 'down-payment';\r\n const PARTIAL_PAID = '/partial-paid';\r\n const UNPAID = '/unpaid';\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n vm.contractAccountId = '';\r\n vm.currentUser = {};// Get RequestedBy value\r\n vm.progressBarSteps = [];\r\n vm.installmentPlanDetails = {};\r\n vm.isDownPayDue = false;\r\n vm.downPayStatus = ''; // '' means down payment paid\r\n vm.isArrears = false;\r\n vm.error = false;\r\n vm.downPayDueDate = '';\r\n vm.downPayDueAmount = '';\r\n vm.isPartialDue = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.getDateFromFullDate = getDateFromFullDate;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.onClickPayNow = onClickPayNow;\r\n vm.onClickPayAssist = onClickPayAssist;\r\n vm.onClickPayLocations = onClickPayLocations;\r\n /* --------------Function Definitions-----------------------*/\r\n function getDateFromFullDate(date) {\r\n const value = date.slice(6, 19);\r\n return dateHelperService.getDateFromFullDate(parseInt(value, 10));\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n const formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] = formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\r\n let lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '';\r\n } else if (formattedAmount[0].indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n }\r\n return $sce.trustAsHtml(\r\n `\\$${lessThanZero}${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function formatDate(date) {\r\n // returns MM/DD/YYYY\r\n // params YYYYMMDD\r\n if (date.length > 7) {\r\n const yyyy = date.substring(0, 4);\r\n const mm = date.substring(4, 6);\r\n const dd = date.substring(6, 8);\r\n return `${mm}/${dd}/${yyyy}`;\r\n }\r\n return '';\r\n }\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function (category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function getProgressArr(installmentsPaid, totalInstallments) {\r\n // 1 stands for green, 0 for grey\r\n const progressArr = [];\r\n for (let index = 0; index < totalInstallments; index += 1) {\r\n progressArr.push(0);\r\n }\r\n progressArr.fill(1, 0, installmentsPaid);\r\n return progressArr;\r\n }\r\n\r\n function onClickPayNow() {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/success/ installment-plan/installment-plan-details/na/${vm.installmentPlanDetails.type}/pay-now${vm.downPayStatus}`,\r\n );\r\n }\r\n\r\n function onClickPayAssist() {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/success/installment-plan/installment-plan-details/na/${vm.installmentPlanDetails.type}/payment-assistance-options${vm.downPayStatus}`,\r\n );\r\n }\r\n\r\n function onClickPayLocations() {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/success/installment-plan/installment-plan-details/na/${vm.installmentPlanDetails.type}/payment-locations${vm.downPayStatus}`,\r\n );\r\n }\r\n\r\n function gatOnError({ errorCode, endpoint }) {\r\n pushDL(\r\n 'payment-assistance-options_error',\r\n `${errorCode}-|-${endpoint}-|-${$rootScope.dataLayerFormat('this component failed to load')}`,\r\n 'installment-plan-details',\r\n );\r\n pushVPV(`/vpv/form/auth/payment-assistance-options/installment-plan-details/home/na/load/error/${errorCode}`);\r\n }\r\n\r\n function checkPartialDue(IPDetails, cpiInfo) {\r\n return (\r\n IPDetails.numberOfInstallmentsRem === IPDetails.numberOfInstallments\r\n && Number(cpiInfo.totalDueAmount) < Number(IPDetails.downPayment)\r\n );\r\n }\r\n\r\n function checkDownPaymentDue(IPDetails, cpiInfo) {\r\n return (\r\n IPDetails.numberOfInstallmentsRem === IPDetails.numberOfInstallments\r\n && (Number(cpiInfo.totalDueAmount) > 0 && cpiInfo.downPayDueAmount > 0));\r\n }\r\n\r\n function getActiveInstallmentPlans(data) {\r\n return getActiveInstallmentPlansService.sitecore\r\n .getActiveInstallmentPlans(data)\r\n .then(\r\n (result) => {\r\n if (result && result.d.ReqCA.results[0].Messages.Type === assetService.replyCodes.E) {\r\n return { error: true, errorMessage: result.d.ReqCA.results[0].Messages };\r\n }\r\n const [installmentDetails] = _.map(result.d.ReqCA.results, plan => ({\r\n type:\r\n Number(plan.DownPayment) === 0\r\n ? PLAN_TYPE_ARREARS\r\n : `${PLAN_TYPE_DOWN_PAY}-${plan.Description.replace('%', '')}`,\r\n totalAmount: plan.TotalAmount,\r\n amountPerInstallment: plan.InstallmentAmount,\r\n numberOfInstallments: Number(plan.NumberOfInstallments).toString(),\r\n downPayment: plan.DownPayment,\r\n installmentAmountRem: plan.RemainingInstallmentAmount,\r\n numberOfInstallmentsRem: plan.NumberOfInstallmentsRemaining,\r\n installmentsPaid:\r\n plan.NumberOfInstallments - plan.NumberOfInstallmentsRemaining,\r\n }));\r\n return installmentDetails;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getCpiAndCashOnlyData(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n (result) => {\r\n const accountData = result.getAccountAndBillingInfoResList.find(\r\n account => account.contractAccountNumber.toString()\r\n === data.accountList[0].contractAccountNumber,\r\n );\r\n if (\r\n accountData.messageList\r\n && accountData.messageList[0].messageTypeCode\r\n === assetService.replyCodes.E\r\n ) {\r\n return { error: true, errorMessage: accountData.messageList[0] };\r\n }\r\n return {\r\n isCashOnly: accountData.cashOnly !== 'F',\r\n cpiMesg:\r\n accountData.messageList\r\n && accountData.messageList.length\r\n && accountData.messageList[0].message,\r\n totalDueAmount: accountData.totalDueDlrs || '',\r\n downPayDueAmount: parseFloat((accountData.installmentAmount || 0) - (accountData.pendPmtDlrs || 0)).toFixed(2),\r\n cpiPriority:\r\n accountData.messageList\r\n && accountData.messageList.length\r\n && accountData.messageList[0].messagePriority,\r\n downPayDueDate: formatDate(`${accountData.installmentDueDate}`),\r\n };\r\n },\r\n error => $log.error(error),\r\n );\r\n }\r\n function load() {\r\n if (globalSelectedAccount.accountNum) {\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId,\r\n vm.contractAccountId,\r\n );\r\n }\r\n\r\n commonService\r\n .executePromises([\r\n getActiveInstallmentPlans({\r\n contractAccountId: vm.contractAccountId,\r\n requestedBy: vm.currentUser.emailId,\r\n }),\r\n getCpiAndCashOnlyData({\r\n accountList: [\r\n {\r\n contractAccountNumber: vm.contractAccountId,\r\n zipCode: globalSelectedAccount.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n ([installmentPlanDetails, accountInfo]) => {\r\n if (installmentPlanDetails.error === true) {\r\n vm.error = true;\r\n gatOnError({\r\n errorCode: installmentPlanDetails.errorMessage.MessageNum,\r\n endpoint:\r\n assetService.sitecoreEndpoints.GetActiveInstallmentPlans,\r\n });\r\n broadcastService.failedStateNotificationTriggeredWithoutGAT(true);\r\n } else if (accountInfo.error === true) {\r\n vm.error = true;\r\n gatOnError({\r\n errorCode: accountInfo.errorMessage.messageCode,\r\n endpoint:\r\n assetService.sitecoreEndpoints.getAccountBalanceForRegularAccount,\r\n });\r\n broadcastService.failedStateNotificationTriggeredWithoutGAT(true);\r\n } else {\r\n vm.error = false;\r\n vm.installmentPlanDetails = installmentPlanDetails;\r\n vm.progressBarSteps = getProgressArr(\r\n vm.installmentPlanDetails.installmentsPaid,\r\n vm.installmentPlanDetails.numberOfInstallments,\r\n );\r\n vm.isArrears = vm.installmentPlanDetails.type === PLAN_TYPE_ARREARS;\r\n vm.error = false;\r\n vm.isDownPayDue = checkDownPaymentDue(installmentPlanDetails, accountInfo);\r\n vm.cpiData = accountInfo;\r\n vm.isPartialDue = checkPartialDue(vm.installmentPlanDetails, vm.cpiData);\r\n if (vm.isPartialDue) vm.downPayStatus = PARTIAL_PAID;\r\n else if (vm.isDownPayDue) vm.downPayStatus = UNPAID;\r\n // type can be down-payment-50 / down-payment-25 / arrears\r\n // down payment status can be unpaid / partial-paid\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/load/installment-plan/installment-plan-details/na/${vm.installmentPlanDetails.type}${vm.downPayStatus}`,\r\n );\r\n }\r\n vm.loadingSpinner = false;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.acctNickName = globalSelectedAccount.nickname;\r\n vm.acctAddress = globalSelectedAccount.address;\r\n vm.acctNo = globalSelectedAccount.accountNum;\r\n vm.currentUser = {\r\n emailId: $rootScope.currentUserEmailId,\r\n cdpId: $rootScope.currentUserCdpId,\r\n };\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('InstallmentPlanSuccess', InstallmentPlanSuccess);\r\n\r\nInstallmentPlanSuccess.$inject = [\r\n '$sce',\r\n '$filter',\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'dateHelperService',\r\n '$rootScope',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n 'getAccountBalanceForRegularAccountService',\r\n];\r\n\r\nfunction InstallmentPlanSuccess(\r\n $sce,\r\n $filter,\r\n $log,\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n dateHelperService,\r\n $rootScope,\r\n $window,\r\n commongaTaggingService,\r\n broadcastService,\r\n getAccountBalanceForRegularAccountService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _both = 'Deposit & Energy Service Charges';\r\n const _deposit = 'Security Deposit';\r\n let _globalAccountInfo = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.calendarDate = new Date();\r\n vm.installmentPlanStorage = null;\r\n vm.data = null;\r\n vm.selectedPlanType = '';\r\n vm.isDownPayment = false;\r\n vm.loadingSpinner = false;\r\n vm.acctNickName = '';\r\n vm.acctAddress = '';\r\n vm.acctNo = '';\r\n vm.guid = '';\r\n vm.planDesc = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.getDateFromFullDate = getDateFromFullDate;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.payNow = payNow;\r\n vm.onClickPayAssist = onClickPayAssist;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function formatTotalAmount(amount) {\r\n const formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] = formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(formattedAmount[0], '0').toLocaleString('en');\r\n let lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '';\r\n } else if (formattedAmount[0].indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n }\r\n return $sce.trustAsHtml(\r\n `\\$${lessThanZero}${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function payNow() {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/down-payment-${vm.planDesc.replace('%', '')}/pay-now`,\r\n );\r\n window.location.replace('/my-account/pay-my-bill');\r\n }\r\n\r\n function onClickPayAssist() {\r\n pushVPV(\r\n '/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/arrears/payment-assistance-options',\r\n );\r\n }\r\n\r\n function getDateFromFullDate(date) {\r\n return dateHelperService.getDateFromFullDate(date);\r\n }\r\n\r\n function setModels(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount({\r\n accountList: [\r\n {\r\n contractAccountNumber: data.contractAccountId,\r\n zipCode: data.zipCode,\r\n },\r\n ],\r\n }).then(\r\n (result) => {\r\n if (result.getAccountAndBillingInfoResList.length === 1) {\r\n vm.data = [\r\n {\r\n cashOnly:\r\n result.getAccountAndBillingInfoResList[0].cashOnly !== 'F',\r\n installmentYear: result.getAccountAndBillingInfoResList[0].installmentDueDate\r\n .toString()\r\n .substring(0, 4),\r\n installmentMonth: result.getAccountAndBillingInfoResList[0].installmentDueDate\r\n .toString()\r\n .substring(4, 6),\r\n installmentDate: result.getAccountAndBillingInfoResList[0].installmentDueDate\r\n .toString()\r\n .substring(6, 8),\r\n installmentDueAmount:\r\n result.getAccountAndBillingInfoResList[0].installmentAmount,\r\n },\r\n ];\r\n vm.loadingSpinner = false;\r\n } else {\r\n vm.installmentAccount = result.getAccountAndBillingInfoResList\r\n .find(account => account.contractAccountNumber.toString() === data.contractAccountId);\r\n vm.data = [\r\n {\r\n cashOnly: vm.installmentAccount.cashOnly !== 'F',\r\n installmentYear: vm.installmentAccount.installmentDueDate\r\n .toString()\r\n .substring(0, 4),\r\n installmentMonth: vm.installmentAccount.installmentDueDate\r\n .toString()\r\n .substring(4, 6),\r\n installmentDate: vm.installmentAccount.installmentDueDate\r\n .toString()\r\n .substring(6, 8),\r\n installmentDueAmount: vm.installmentAccount.installmentAmount,\r\n },\r\n ];\r\n vm.loadingSpinner = false;\r\n }\r\n if (vm.data[0].cashOnly) {\r\n setTimeout(() => {\r\n const payLocationBtn = document.getElementsByClassName(\r\n 'component-footer__button',\r\n );\r\n for (const element of payLocationBtn) {\r\n element.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n window.location.replace(event.target.href);\r\n });\r\n }\r\n }, 0);\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.isDownPayment = $rootScope.downPayment;\r\n vm.planDesc = $rootScope.SelectedPlanDesc;\r\n vm.acctNickName = _globalAccountInfo.accountSelected.nickname;\r\n vm.acctAddress = _globalAccountInfo.accountSelected.address;\r\n vm.acctNo = _globalAccountInfo.accountSelected.accountNum;\r\n const params = {\r\n contractAccountId: _globalAccountInfo.accountSelected.accountNum,\r\n businessPartner: _globalAccountInfo.primaryBp,\r\n zipCode: _globalAccountInfo.accountSelected.zipCode,\r\n };\r\n\r\n vm.installmentPlanStorage = sessionStorageService.get(\r\n assetService.storageKeys.installmentPlan,\r\n );\r\n\r\n broadcastService.headerSwitch('Full');\r\n\r\n if (vm.isDownPayment) {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/down-payment-${vm.planDesc.replace('%', '')}`,\r\n );\r\n setModels(params);\r\n } else {\r\n pushVPV(\r\n '/vpv/de/page/payment-assistance-options/success/installment-plan/almost-done/na/arrears',\r\n );\r\n vm.loadingSpinner = false;\r\n }\r\n pushDL(\r\n 'payment-assistance-options',\r\n 'success-|-installment-plan',\r\n 'kpi',\r\n );\r\n // $scope.$emit(assetService.events.loadingSpinnerSuccess, false);\r\n }\r\n\r\n /* ---------------Google-Analytics-------------------*/\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n vm.loadingSpinner = true;\r\n $('.icon-duke').hide();\r\n $('.InstallmentPlans__header').hide();\r\n $window.scrollTo(0, 0);\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('InstallmentType', InstallmentType);\r\nInstallmentType.$inject = [\r\n '$sce',\r\n '$filter',\r\n '$log',\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'getEligiblePaymentPlansExtensionsService',\r\n 'getLoggedInUserDetailsService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'installmentpaymentplansandeligibilityservice',\r\n];\r\n\r\nfunction InstallmentType(\r\n $sce,\r\n $filter,\r\n $log,\r\n $scope,\r\n $state,\r\n assetService,\r\n getEligiblePaymentPlansExtensionsService,\r\n getLoggedInUserDetailsService,\r\n sessionStorageService,\r\n $rootScope,\r\n $window,\r\n commongaTaggingService,\r\n installmentpaymentplansandeligibilityservice,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n const _both = 'Deposit & Energy Service Charges';\r\n const _deposit = 'Security Deposit';\r\n const _utility = 'Energy Service Charges';\r\n const _analyticsForBoth =\r\n assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.BOTH;\r\n const _analyticsForDeposit =\r\n assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.DEPOSIT;\r\n const _analyticsForUtility =\r\n assetService.strings.PAYMENT_ASSISTANCE.ANALYTICS.UTILITY;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.isLoaded = false;\r\n vm.selected = [];\r\n vm.installmentPlan = {};\r\n vm.currentUser = {}; //Get RequestedBy value\r\n vm.selectedPlan = null;\r\n $scope.$parent.vm.mainBtnActivate = true;\r\n $scope.$parent.vm.buttonLoad = false;\r\n vm.openAmount = '';\r\n vm.PaymentPlans = [];\r\n vm.downPaymentPlanOne = '';\r\n vm.downPaymentPlanTwo = '';\r\n vm.arrearsPlan = '';\r\n $rootScope.planType = '';\r\n $rootScope.SelectedPlanDP = '';\r\n $rootScope.SelectedPlanDesc = '';\r\n $rootScope.EligibilityMessage = '';\r\n vm.loadingSpinner = true;\r\n vm.minNoInstallment = 2;\r\n vm.guid = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.getInstallmentPlans = getInstallmentPlans;\r\n vm.nextpage = nextpage;\r\n vm.onCancel = onCancel;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function formatTotalAmount(amount) {\r\n const formattedAmount = String(Number.parseFloat(amount) || 0).split('.');\r\n formattedAmount[0] = formattedAmount[0] || '0';\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n let lessThanZero = '';\r\n if (formattedIntegerAmount.indexOf('-') >= 0) {\r\n lessThanZero = '';\r\n } else if (formattedAmount[0].indexOf('-') >= 0) {\r\n lessThanZero = '-';\r\n }\r\n return $sce.trustAsHtml(\r\n `\\$${lessThanZero}${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function nextpage(plan) {\r\n $rootScope.planType = plan;\r\n $rootScope.$broadcast(assetService.events.shellButton, {\r\n direction: 'next',\r\n });\r\n const selectedPaymentPlan = vm.PaymentPlans.find(paymentPlan => paymentPlan.PlanType === plan);\r\n $rootScope.SelectedPlanDP = selectedPaymentPlan.DownPayment;\r\n $rootScope.SelectedPlanDesc = selectedPaymentPlan.PlanTypeDescription;\r\n if (Number(selectedPaymentPlan.DownPayment) === 0) {\r\n pushDL(\r\n 'payment-assistance-options',\r\n 'view-plan-|-arrears',\r\n 'select-plan-to-view-details-|-select-plan',\r\n );\r\n } else if (Number(selectedPaymentPlan.DownPayment) !== 0) {\r\n pushDL(\r\n 'payment-assistance-options',\r\n `view-plan-|-down-payment-${selectedPaymentPlan.PlanTypeDescription.replace('%', '')}`,\r\n 'select-plan-to-view-details-|-select-plan',\r\n );\r\n }\r\n $state.go(assetService.installmentPlansRouteState.REVIEW_AND_SUBMIT);\r\n }\r\n\r\n function onCancel(path) {\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n }\r\n\r\n function getInstallmentPlans(data) {\r\n return installmentpaymentplansandeligibilityservice.sitecore\r\n .instalmentPaymentPlansAndEligibilityCheck(data)\r\n .then(\r\n (result) => {\r\n vm.PaymentPlans = result.d.ReqCA.results[0].PaymentPlan.results;\r\n vm.openAmount =\r\n result.d.ReqCA.results[0].PaymentPlan.results[0].OpenAmount;\r\n vm.PaymentPlans.forEach((item, index) => {\r\n if (item.DownPayment !== undefined && item.DownPayment > 0) {\r\n item.minNoOfInstallment = vm.minNoInstallment - 1;\r\n } else {\r\n item.minNoOfInstallment = vm.minNoInstallment;\r\n }\r\n });\r\n vm.loadingSpinner = false;\r\n $rootScope.EligibilityMessage = result.d.ReqCA.results[0].Messages.MessageNum;\r\n },\r\n (error) => {\r\n vm.loadingSpinner = false;\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.loadingSpinner = true;\r\n vm.guid = angular.element('#guid').val();\r\n pushVPV(\r\n '/vpv/de/page/payment-assistance-options/load/installment-plan/select-plan-to-view-details/select-plan',\r\n );\r\n pushDL('payment-assistance-options', 'intent-|-installment-plan', 'kpi');\r\n let contractAccountId = null;\r\n if (_globalSelectedAccount.accountNum) {\r\n contractAccountId = _globalSelectedAccount.accountNum;\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccountId,\r\n contractAccountId,\r\n );\r\n }\r\n getInstallmentPlans(contractAccountId);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n vm.loadingSpinner = true;\r\n if (assetService.apiConfig.useLocalHost) {\r\n _globalSelectedAccount = {\r\n accountNum: assetService.apiConfig.testAccount,\r\n };\r\n } else {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n $window.scrollTo(0, 0);\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n init();\r\n}\r\n","app.controller('ReviewAndSubmit', ReviewAndSubmit);\r\n//opti\r\nReviewAndSubmit.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'createInstallmentPlanService',\r\n 'installmentpaymentplansextensionsandeligibilityservice',\r\n 'dateHelperService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'getLoggedInUserDetailsService',\r\n '$state',\r\n 'genericHelperService',\r\n 'modalService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ReviewAndSubmit(\r\n $log,\r\n $scope,\r\n assetService,\r\n createInstallmentPlanService,\r\n installmentpaymentplansextensionsandeligibilityservice,\r\n dateHelperService,\r\n sessionStorageService,\r\n $rootScope,\r\n $window,\r\n commongaTaggingService,\r\n getLoggedInUserDetailsService,\r\n $state,\r\n genericHelperService,\r\n modalService,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _both = 'Deposit & Energy Service Charges';\r\n const _deposit = 'Security Deposit';\r\n const _utility = 'Energy Service Charges';\r\n const _BOTH = 'BOTH';\r\n const _UTILITIES = 'UTILITIES';\r\n const _DEPOSIT = 'DEPOSIT';\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.contractAccountId = '';\r\n vm.totalAmount = '';\r\n vm.amtPerInstallment = '';\r\n vm.downPayment = '';\r\n vm.remainingAmount = '';\r\n vm.installmentsNumber = [];\r\n vm.installmentSelected = '';\r\n vm.loadingSpinner = false;\r\n vm.downPaymentSelected = false;\r\n vm.checked = false;\r\n vm.showModal = false;\r\n vm.installmentPlanStorage = null;\r\n vm.data = {\r\n installmentPlanData: null,\r\n };\r\n vm.enrollStatus = '';\r\n vm.enrollFailure = false;\r\n $rootScope.IPEnrollmentFailed = false;\r\n vm.currentUser = {}; //Get RequestedBy value\r\n\r\n $scope.$parent.vm.mainBtnActivate = false;\r\n $scope.$parent.vm.buttonLoad = false;\r\n $rootScope.downPayment = false;\r\n vm.selectPlanType = '';\r\n vm.selectedState = '';\r\n vm.isContactVisible = true;\r\n vm.nodeHostName = '';\r\n vm.guid = '';\r\n vm.dppPlan = '';\r\n vm.planDesc = '';\r\n const _toFixed = 2;\r\n vm.dropDownChanged = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.planDetails = planDetails;\r\n vm.checkbox = checkbox;\r\n vm.previous = previous;\r\n vm.cancel = cancel;\r\n vm.saveInstallmentPlan = saveInstallmentPlan;\r\n vm.contactRedirect = contactRedirect;\r\n vm.reloadPage = reloadPage;\r\n vm.init = init;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function reloadPage(){\r\n $window.location.reload();\r\n }\r\n \r\n function saveInstallmentPlan() {\r\n const saveData = {\r\n contractAccountId: vm.contractAccountId,\r\n installmentPlanType: vm.planType,\r\n typeOfCharge: _UTILITIES,\r\n numberOfInstallment: vm.downPaymentSelected\r\n ? (Number(vm.installmentSelected) + 1).toString()\r\n : vm.installmentSelected,\r\n requestedBy: vm.currentUser.emailId,\r\n };\r\n vm.loadingSpinner = true;\r\n createInstallmentPlan(saveData).then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n if (vm.enrollStatus === 'S') {\r\n if (vm.dropDownChanged) {\r\n if (Number(vm.dppPlan) === 0) {\r\n pushDL(\r\n 'payment-assistance-options',\r\n `arrears-|-${Number(vm.installmentSelected)}`,\r\n 'select-number-of-installments-|-review-enroll',\r\n );\r\n } else {\r\n pushDL(\r\n 'payment-assistance-options',\r\n `down-payment-${vm.planDesc.replace('%', '')}-|-${Number(\r\n vm.installmentSelected,\r\n )}`,\r\n 'select-number-of-installments-|-review-enroll',\r\n );\r\n }\r\n } else if (!vm.dropDownChanged) {\r\n if (Number(vm.dppPlan) === 0) {\r\n pushDL(\r\n 'payment-assistance-options',\r\n 'arrears-|-default',\r\n 'select-number-of-installments-|-review-enroll',\r\n );\r\n } else {\r\n pushDL(\r\n 'payment-assistance-options',\r\n `down-payment-${vm.planDesc.replace('%', '')}-|-default`,\r\n 'select-number-of-installments-|-review-enroll',\r\n );\r\n }\r\n }\r\n $state.go(\r\n assetService.installmentPlansRouteState.INSTALLMENT_PLAN_SUCCESS,\r\n );\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n\r\n function createInstallmentPlan(data) {\r\n return createInstallmentPlanService.sitecore\r\n .createInstallmentPlan(data)\r\n .then(\r\n (result) => {\r\n vm.enrollStatus = result.d.Type;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.enrollFailure = true;\r\n $rootScope.IPEnrollmentFailed = vm.enrollFailure;\r\n $window.scrollTo(0, 0);\r\n gatOnError({\r\n errorCode: error.MessageNum,\r\n endpoint:\r\n assetService.sitecoreEndpoints.CreateInstallmentPlan,\r\n errorMessage: error.Message,\r\n });\r\n broadcastService.IPEnrollmentFailed();\r\n $scope.$parent.vm.mainBtnActivate = true;\r\n $scope.$parent.vm.buttonLoad = true;\r\n },\r\n );\r\n }\r\n }\r\n function setContactSectionDetails(){\r\n vm.selectedState = localStorage.getItem(\r\n assetService.storageKeys.selectedState\r\n );\r\n if($rootScope.EligibilityMessage && $rootScope.EligibilityMessage!='881'){\r\n vm.isContactVisible = false;\r\n }\r\n }\r\n function contactRedirect(){\r\n var contact_url = 'https://' + vm.nodeHostName + '/customer-service';\r\n if (Number(vm.dppPlan) === 0){\r\n pushVPV(\r\n '/vpv/de/page/payment-assistance-options/clickthrough/installment-plan/select-number-of-installments/review-enroll/arrears/contact-us',\r\n );\r\n }\r\n else{\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/clickthrough/installment-plan/select-number-of-installments/review-enroll/down-payment-${vm.planDesc.replace(\r\n '%',\r\n '',\r\n )}/contact-us`,\r\n );\r\n }\r\n window.open(contact_url);\r\n }\r\n function cancel() {\r\n modalService.cancelModal();\r\n }\r\n\r\n function previous() {\r\n $rootScope.$broadcast(assetService.events.shellButton, {\r\n direction: 'previous',\r\n });\r\n $state.go(assetService.installmentPlansRouteState.INSTALLMENT_TYPE);\r\n }\r\n\r\n function checkbox() {\r\n vm.showModal = true;\r\n }\r\n\r\n function planDetails() {\r\n vm.showModal = true;\r\n vm.dropDownChanged = true;\r\n vm.selectedPlanDetails = vm.plandetails[0].IPTypesInfo.results.find(\r\n details => details.NumberOfInstallments === vm.installmentSelected,\r\n );\r\n vm.selectedPlanDetails.DownPayment = parseFloat(\r\n vm.selectedPlanDetails.DownPayment,\r\n ).toFixed(_toFixed);\r\n }\r\n\r\n function paymentPlansAndExtensions(data) {\r\n return installmentpaymentplansextensionsandeligibilityservice.sitecore\r\n .installmentpaymentplansextensionsandeligibilityservice(data)\r\n .then(\r\n (result) => {\r\n vm.totalAmount = result.d.TotalAmount;\r\n vm.plandetails = result.d.IPTypes.results;\r\n if(vm.plandetails.length==0){\r\n vm.loadingSpinner = false;\r\n broadcastService.failedStateNotificationTriggered(true);\r\n }\r\n else{\r\n vm.downPaymentSelected =\r\n Number(vm.plandetails[0].IPTypesInfo.results[0].DownPayment) !== 0;\r\n\r\n $rootScope.downPayment = vm.downPaymentSelected;\r\n\r\n vm.plandetails[0].IPTypesInfo.results.forEach((installment) => {\r\n vm.installmentsNumber.push({\r\n value: installment.NumberOfInstallments,\r\n text: Number(installment.NumberOfInstallments),\r\n });\r\n });\r\n\r\n vm.installmentsNumber.sort(\r\n (first, second) => first.value - second.value,\r\n );\r\n\r\n vm.installmentsNumber = genericHelperService.setSelectedProp(\r\n vm.installmentsNumber,\r\n assetService.strings.VALUE,\r\n vm.installmentsNumber[vm.installmentsNumber.length - 1].value,\r\n );\r\n vm.installmentSelected =\r\n vm.installmentsNumber[vm.installmentsNumber.length - 1].value;\r\n\r\n vm.selectedPlanDetails = vm.plandetails[0].IPTypesInfo.results.find(\r\n details => details.NumberOfInstallments === vm.installmentSelected,\r\n );\r\n vm.selectedPlanDetails.DownPayment = parseFloat(\r\n vm.selectedPlanDetails.DownPayment,\r\n ).toFixed(_toFixed);\r\n vm.loadingSpinner = false;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n vm.contractAccountId = sessionStorageService.get(\r\n assetService.storageKeys.contractAccountId,\r\n );\r\n vm.planType = $rootScope.planType;\r\n vm.dppPlan = $rootScope.SelectedPlanDP;\r\n vm.planDesc = $rootScope.SelectedPlanDesc;\r\n const data = {\r\n accountNumber: vm.contractAccountId,\r\n planType: vm.planType,\r\n TypeOfCharge: _UTILITIES,\r\n };\r\n if (Number(vm.dppPlan) === 0) {\r\n pushVPV(\r\n '/vpv/de/page/payment-assistance-options/load/installment-plan/select-number-of-installments/review-enroll/arrears',\r\n );\r\n } else {\r\n pushVPV(\r\n `/vpv/de/page/payment-assistance-options/load/installment-plan/select-number-of-installments/review-enroll/down-payment-${vm.planDesc.replace(\r\n '%',\r\n '',\r\n )}`,\r\n );\r\n }\r\n paymentPlansAndExtensions(data);\r\n vm.installmentPlanStorage = sessionStorageService.get(\r\n assetService.storageKeys.installmentPlan,\r\n );\r\n setContactSectionDetails();\r\n }\r\n\r\n /* ---------------Google-Analytics-------------------*/\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function gatOnError({ errorCode, endpoint, errorMessage }) {\r\n pushDL(\r\n 'payment-assistance-options_error',\r\n `${errorCode}-|-${endpoint}-|-${$rootScope.dataLayerFormat(errorMessage)}`,\r\n 'select-number-of-installments-|-review-enroll',\r\n );\r\n pushVPV(`/vpv/form/auth/payment-assistance-options/select-number-of-installments/home/review-enroll/enroll/error/${errorCode}`);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(nodeHostName) {\r\n vm.nodeHostName = nodeHostName?nodeHostName:'';\r\n vm.loadingSpinner = true;\r\n $('.button-cancel').hide();\r\n $window.scrollTo(0, 0);\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCManageAutoPayAddBankAccount', CCManageAutoPayAddBankAccount);\r\n\r\nCCManageAutoPayAddBankAccount.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'ccAutoPayAssetService',\r\n 'manageBankAccountsForPrepaidService',\r\n 'addBankDetailsKubraService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'genericHelperService',\r\n 'assetService',\r\n 'getLoggedInUserDetailsService',\r\n '$scope',\r\n '$rootScope',\r\n '$timeout',\r\n];\r\n\r\nfunction CCManageAutoPayAddBankAccount(\r\n $log,\r\n $modalInstance,\r\n ccAutoPayAssetService,\r\n manageBankAccountsForPrepaidService,\r\n addBankDetailsKubraService,\r\n sessionStorageService,\r\n broadcastService,\r\n genericHelperService,\r\n assetService,\r\n getLoggedInUserDetailsService,\r\n $scope,\r\n $rootScope,\r\n $timeout,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _accountIdGenerated = null;\r\n const selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n const enrolledProgram = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.enrolledProgram,\r\n );\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n const _status = ccAutoPayAssetService.strings.status;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.getAccountLimit = undefined;\r\n vm.getNameLimit = undefined;\r\n vm.init = init;\r\n vm.accountType = [];\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.form = {\r\n nickname: null,\r\n rountingNumber: null,\r\n accountNumber: null,\r\n accNumberConfirm: null,\r\n accountType: null,\r\n };\r\n // $rootScope.autopayBankData = {\r\n // nickname: null,\r\n // rountingNumber: null,\r\n // accountNumber: null,\r\n // accNumberConfirm: null,\r\n // accountType: null,\r\n // };\r\n vm.loaded = false;\r\n vm.showerror = false;\r\n vm.currentUser = {};\r\n vm.orgBP = '';\r\n vm.guid = '';\r\n vm.ACIValidationFailed = false;\r\n vm.disableSave = false;\r\n $rootScope.validate = false;\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModal = closeModal;\r\n vm.save = save;\r\n vm.checkAndContinue = checkAndContinue;\r\n vm.nicknameCheck = nicknameCheck;\r\n vm.nameError = nameError;\r\n vm.accountCheck = accountCheck;\r\n vm.accountError = accountError;\r\n vm.confirmAccCheck = confirmAccCheck;\r\n vm.confirmAccError = confirmAccError;\r\n /**\r\n * Function Declarations\r\n */\r\n function nicknameCheck() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength >= vm.getNameLimit) {\r\n console.log(vm.getNameLimit);\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function nameError() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength > vm.getNameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function accountCheck() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength >= vm.getAccountLimit) {\r\n console.log(vm.getAccountLimit);\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function accountError() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength > vm.getAccountLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function confirmAccCheck() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength >= vm.getAccountLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function confirmAccError() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength > vm.getAccountLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function checkAndContinue(value) {\r\n vm.disableSave = false;\r\n vm.showError = false;\r\n $rootScope.autopayBankData = vm.form;\r\n }\r\n\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n\r\n function save(event) {\r\n // for GAT events - begin\r\n $rootScope.validate = true;\r\n if (\r\n vm.form?.nickname &&\r\n vm.form?.accountNumber &&\r\n vm.form?.rountingNumber &&\r\n vm.form?.accountType &&\r\n vm.form?.accNumberConfirm &&\r\n vm.form?.accNumberConfirm == vm.form?.accountNumber\r\n ) {\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n // end\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n addNewBankAccountToSAP({\r\n businessPartnerId: vm.orgBP ? vm.orgBP : selectedAddressData.primaryBp,\r\n bankDescription: vm.form.nickname,\r\n accountNumber: vm.form.accountNumber,\r\n routingNumber: vm.form.rountingNumber,\r\n accountType: vm.form.accountType,\r\n requestedBy: vm.currentUser.emailId,\r\n action:\r\n ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid.ADD,\r\n }).then(\r\n result => {\r\n const manageBankAcc_NAV = result.d.ManageBankAcc_NAV;\r\n if (result.d.ManageBankAcc_NAV.ReplyCode === _SUCCESS) {\r\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\r\n vm.ACIValidationFailed = false;\r\n sessionStorageService.set(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay\r\n .accountIdGenerated,\r\n _accountIdGenerated,\r\n );\r\n broadcastService.addNewBankAcccountIdGenerated();\r\n closeModal();\r\n delete $rootScope.autopayBankData;\r\n } else if (\r\n manageBankAcc_NAV.MessageNum === '732' ||\r\n manageBankAcc_NAV.MessageNum === '739' ||\r\n manageBankAcc_NAV.MessageNum === '734' ||\r\n manageBankAcc_NAV.MessageNum === '429' ||\r\n manageBankAcc_NAV.MessageNum === '270'\r\n ) {\r\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\r\n vm.ACIValidationFailed = true;\r\n vm.disableSave = true;\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'manage_auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'manage-auto-pay-|-add-bank-account',\r\n );\r\n }, 2000);\r\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'auto-pay-|-add-bank-account',\r\n );\r\n }, 2000);\r\n }\r\n //broadcastService.loadingSpinner(false);\r\n } else if (manageBankAcc_NAV.MessageNum === '278') {\r\n vm.ACIMessageNum = manageBankAcc_NAV.MessageNum;\r\n vm.ACIValidationFailed = true;\r\n vm.disableSave = true;\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'manage_auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'manage-auto-pay-|-duplicate-bank-account',\r\n );\r\n }, 2000);\r\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'auto-pay-|-duplicate-bank-account',\r\n );\r\n }, 2000);\r\n }\r\n //broadcastService.loadingSpinner(false);\r\n }\r\n // if (vm.showError === false) {\r\n // $modalInstance.close();\r\n // }\r\n },\r\n error => {\r\n if (\r\n error.MessageNum === '732' ||\r\n error.MessageNum === '739' ||\r\n error.MessageNum === '734' ||\r\n error.MessageNum === '429' ||\r\n error.MessageNum === '270'\r\n ) {\r\n vm.ACIValidationFailed = true;\r\n vm.disableSave = true;\r\n vm.ACIValidationErr = error.Message;\r\n vm.ACIMessageNum = error.MessageNum;\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'manage_auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'manage-auto-pay-|-add-bank-account',\r\n );\r\n }, 2000);\r\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'auto-pay-|-add-bank-account',\r\n );\r\n }, 2000);\r\n }\r\n } else if (error.MessageNum === '278') {\r\n vm.ACIValidationFailed = true;\r\n vm.disableSave = true;\r\n vm.ACIValidationErr = error.Message;\r\n vm.ACIMessageNum = error.MessageNum;\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if ($rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/manage-auto-pay/error/manage-auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'manage_auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'manage-auto-pay-|-duplicate-bank-account',\r\n );\r\n }, 2000);\r\n } else if (!$rootScope.dirdebenrolled && vm.ACIMessageNum) {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/error/auto-pay/add-bank-account/enroll/' +\r\n vm.ACIMessageNum,\r\n );\r\n $timeout(() => {\r\n let ErrorMessage = document.getElementsByClassName(\r\n 'ErrorValidation',\r\n )[0].innerHTML;\r\n pushDL(\r\n 'auto_pay_error',\r\n vm.ACIMessageNum +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(ErrorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid}`,\r\n 'auto-pay-|-duplicate-bank-account',\r\n );\r\n }, 2000);\r\n }\r\n }\r\n },\r\n );\r\n }\r\n }\r\n\r\n function addNewBankAccountToKubra(requestFields) {\r\n return addBankDetailsKubraService.sitecore\r\n .addBankDetails({\r\n bankAccountNumber: requestFields.accountNumber,\r\n businessPartner: requestFields.primaryBp,\r\n cardType: '2',\r\n description: '',\r\n firstName: '',\r\n lastName: '',\r\n nickName: requestFields.nickname,\r\n transitNo: requestFields.rountingNumber,\r\n type: '2',\r\n })\r\n .then(\r\n result => {\r\n if (Object.prototype.hasOwnProperty.call(result, _status)) {\r\n _accountIdGenerated = result.accountId;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function addNewBankAccountToSAP(data) {\r\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(\r\n data,\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n vm.loaded = true;\r\n vm.ShowError = false;\r\n vm.orgBP = sessionStorageService.get(\r\n assetService.storageKeys.organizationBP,\r\n );\r\n if ($rootScope.dirdebenrolled) {\r\n pushVPV(\r\n '/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/manage/modal',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/page/autopay/load/auto-pay/add-bank-account/na/new-enrollment/modal',\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init(accountTypeArray, accLimit, nameLimit) {\r\n vm.getAccountLimit = parseInt(accLimit);\r\n vm.getNameLimit = parseInt(nameLimit);\r\n $rootScope.validate = false;\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n // if (vm.accountType) {\r\n // vm.selectAccountType = vm.accountType[0].text;\r\n // }\r\n }\r\n vm.form = $rootScope.autopayBankData;\r\n if (vm.form?.accountType !== undefined) {\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.form.accountType,\r\n );\r\n }\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCModalAddNewBankAccount', CCModalAddNewBankAccount);\r\n\r\nCCModalAddNewBankAccount.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'ccAutoPayAssetService',\r\n 'manageBankAccountsForPrepaidService',\r\n 'addBankDetailsKubraService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'genericHelperService',\r\n 'assetService',\r\n 'getLoggedInUserDetailsService',\r\n '$scope',\r\n '$rootScope',\r\n];\r\n\r\nfunction CCModalAddNewBankAccount(\r\n $log,\r\n $modalInstance,\r\n ccAutoPayAssetService,\r\n manageBankAccountsForPrepaidService,\r\n addBankDetailsKubraService,\r\n sessionStorageService,\r\n broadcastService,\r\n genericHelperService,\r\n assetService,\r\n getLoggedInUserDetailsService,\r\n $scope,\r\n $rootScope,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _accountIdGenerated = null;\r\n const selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n const enrolledProgram = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.enrolledProgram,\r\n );\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n const _status = ccAutoPayAssetService.strings.status;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.init = init;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.form = {\r\n nickname: null,\r\n rountingNumber: null,\r\n accountNumber: null,\r\n accNumberConfirm: null,\r\n accountType: null,\r\n };\r\n vm.loaded = false;\r\n vm.showerror = false;\r\n vm.currentUser = {};\r\n vm.orgBP = '';\r\n vm.accNameEmpty = false;\r\n vm.accRoutingEmpty = false;\r\n vm.accNumEmpty = false;\r\n vm.accConfirmNumEmpty = false;\r\n vm.accTypeEmpty = false;\r\n vm.accNumLimit = undefined;\r\n vm.nameLimit = undefined;\r\n vm.loader = false;\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModal = closeModal;\r\n vm.save = save;\r\n vm.checkAndContinue = checkAndContinue;\r\n vm.checkNickname = checkNickname;\r\n vm.noNameError = noNameError;\r\n vm.checkAcctNum = checkAcctNum;\r\n vm.noAccError = noAccError;\r\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\r\n vm.noConfirmAccError = noConfirmAccError;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n function closeModal() {\r\n broadcastService.modalAddNewBankAccountClosed();\r\n $modalInstance.close();\r\n }\r\n\r\n function checkAndContinue(value) {\r\n vm.showError = false;\r\n }\r\n\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n\r\n function checkNickname() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength >= vm.nameLimit) {\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function noNameError() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength > vm.nameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function checkAcctNum() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength >= vm.accNumLimit) {\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function noAccError() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength > vm.accNumLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function checkConfirmAcctNum() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength >= vm.accNumLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function noConfirmAccError() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength > vm.accNumLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function save(event) {\r\n // for GAT events - begin\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n // end\r\n vm.accNameEmpty = vm.form.nickname ? false : true;\r\n vm.accRoutingEmpty = vm.form.rountingNumber ? false : true;\r\n vm.accNumEmpty = vm.form.accountNumber ? false : true;\r\n vm.accConfirmNumEmpty = vm.form.accNumberConfirm ? false : true;\r\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\r\n\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n ); \r\n\r\n if (\r\n !vm.accNameEmpty &&\r\n !vm.accNumEmpty &&\r\n !vm.accConfirmNumEmpty &&\r\n !vm.accRoutingEmpty &&\r\n !vm.accTypeEmpty\r\n ) { \r\n vm.loader = true;\r\n \r\n if (enrolledProgram === ccAutoPayAssetService.strings.AUTPAY) {\r\n addNewBankAccountToKubra({\r\n accountNumber: vm.form.accountNumber,\r\n primaryBp: vm.orgBP ? vm.orgBP : selectedAddressData.primaryBp,\r\n nickname: vm.form.nickname,\r\n rountingNumber: vm.form.rountingNumber,\r\n }).then(() => {\r\n sessionStorageService.set(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n _accountIdGenerated,\r\n );\r\n broadcastService.addNewBankAcccountIdGenerated();\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n });\r\n } else {\r\n addNewBankAccountToSAP({\r\n businessPartnerId: vm.orgBP\r\n ? vm.orgBP\r\n : selectedAddressData.primaryBp,\r\n bankDescription: vm.form.nickname,\r\n accountNumber: vm.form.accountNumber,\r\n routingNumber: vm.form.rountingNumber,\r\n accountType: vm.selectAccountType,\r\n requestedBy: vm.currentUser.emailId,\r\n action:\r\n ccAutoPayAssetService.serviceActions.manageBankAccountsForPrepaid\r\n .ADD,\r\n }).then(\r\n result => {\r\n if (result.d.ManageBankAcc_NAV.ReplyCode === _SUCCESS) {\r\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\r\n }\r\n sessionStorageService.set(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay\r\n .accountIdGenerated,\r\n _accountIdGenerated,\r\n );\r\n broadcastService.addNewBankAcccountIdGenerated();\r\n deleteGlobalGAT();\r\n if (vm.showError === false) {\r\n $modalInstance.close();\r\n }\r\n },\r\n error => {\r\n console.log(error); \r\n vm.loader = false; \r\n },\r\n );\r\n }\r\n }\r\n }\r\n\r\n function addNewBankAccountToKubra(requestFields) {\r\n return addBankDetailsKubraService.sitecore\r\n .addBankDetails({\r\n bankAccountNumber: requestFields.accountNumber,\r\n businessPartner: requestFields.primaryBp,\r\n cardType: '2',\r\n description: '',\r\n firstName: '',\r\n lastName: '',\r\n nickName: requestFields.nickname,\r\n transitNo: requestFields.rountingNumber,\r\n type: '2',\r\n })\r\n .then(\r\n result => {\r\n if (Object.prototype.hasOwnProperty.call(result, _status)) {\r\n _accountIdGenerated = result.accountId;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function addNewBankAccountToSAP(data) {\r\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(\r\n data,\r\n );\r\n }\r\n\r\n function load() {\r\n vm.loaded = true;\r\n vm.ShowError = false;\r\n vm.orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n vm.accNumLimit = accountNumberLimit;\r\n vm.nameLimit = nicknameLimit;\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ccModalUpdateDelegateBankAccount', ccModalUpdateDelegateBankAccount);\r\n\r\nccModalUpdateDelegateBankAccount.$inject = [\r\n '$log',\r\n '$scope',\r\n '$modalInstance',\r\n 'ccAutoPayAssetService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'genericHelperService',\r\n 'assetService',\r\n 'getPrepaidDetailsService',\r\n 'getAccountEnrollmentEligibilityStatusService',\r\n 'modalService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction ccModalUpdateDelegateBankAccount(\r\n $log,\r\n $scope,\r\n $modalInstance,\r\n ccAutoPayAssetService,\r\n sessionStorageService,\r\n broadcastService,\r\n genericHelperService,\r\n assetService,\r\n getPrepaidDetailsService,\r\n getAccountEnrollmentEligibilityStatusService,\r\n modalService,\r\n enrollInBillingAndPaymentProgramsService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n $scope.delegateUserAccountDetails = {\r\n accountId: null,\r\n accountNumber: null,\r\n nickname: null,\r\n rountingNumber: null,\r\n accountType: null,\r\n };\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n const _BankAccountId = ccAutoPayAssetService.strings.BankAccountId;\r\n const _bankDescription = ccAutoPayAssetService.strings.bankDescription;\r\n let _bankAccountsOriginal = null;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n let _newBankAccountIdGenerated = null;\r\n let _selectedAddressData = null;\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n const _UPDATE = ccAutoPayAssetService.strings.UPDATE;\r\n let _selectedEmail = null;\r\n\r\n vm.loadingSpinner = true;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.defaultBankAccount = null;\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.accountWasNotSelected = true;\r\n vm.enrolledInKubra = false;\r\n vm.dropdowns = {\r\n bankAccounts: null,\r\n };\r\n vm.form = {\r\n manageAutoPayForm: null,\r\n bankAccount: null,\r\n paymentDate: null,\r\n daysBeforePaymentDate: null,\r\n maximumPaymentAmount: null,\r\n maximumPaymentAmountCheckbox: false,\r\n };\r\n vm.loaded = false;\r\n vm.isBPACancel = false;\r\n vm.nickname = null;\r\n vm.routingNumber = null;\r\n vm.accountNumber = null;\r\n vm.accType = null;\r\n\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, () => {\r\n _newBankAccountIdGenerated = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n );\r\n reload();\r\n });\r\n\r\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, () => {\r\n _newBankAccountIdGenerated = null;\r\n reload();\r\n });\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.init = init;\r\n vm.closeModal = closeModal;\r\n vm.addBankAccount = addBankAccount;\r\n vm.cancel = cancel;\r\n vm.save = save;\r\n vm.selectAccountForDelegate = selectAccountForDelegate;\r\n vm.hideAccount = hideAccount;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function virtualPagePush(...arguments) {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...arguments) {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function hideAccount(value) {\r\n let convertedValue = value;\r\n if (convertedValue && !isNaN(convertedValue)) {\r\n const stringLength = convertedValue.length;\r\n const visibleDigits = 4;\r\n if (stringLength > visibleDigits) {\r\n convertedValue = convertedValue.slice(-visibleDigits);\r\n }\r\n convertedValue = `*****${convertedValue}`;\r\n }\r\n return convertedValue;\r\n }\r\n\r\n function addBankAccount() {\r\n modalService.addNewBankAccount();\r\n }\r\n\r\n function findAccountAndSelectIt() {\r\n const accountFound = _.find(\r\n _bankAccountsOriginal,\r\n account => account[_BankAccountId] === vm.form.bankAccount,\r\n );\r\n\r\n if (accountFound) {\r\n $scope.delegateUserAccountDetails = {\r\n accountId: accountFound.BankAccountId,\r\n nickname: accountFound.BankDescription,\r\n rountingNumber: accountFound.BankRoutingNumber,\r\n accountNumber: accountFound.BankAccountNumber,\r\n accountType: accountFound.BankAccountType,\r\n };\r\n vm.accountType.forEach(item => {\r\n if (item.value === accountFound.BankAccountType) {\r\n $scope.delegateUserAccountDetails.accountType = item.text;\r\n vm.accType = item.text;\r\n }\r\n });\r\n vm.nickname = accountFound.BankDescription;\r\n vm.routingNumber = accountFound.BankRoutingNumber;\r\n vm.accountNumber = accountFound.BankAccountNumber;\r\n vm.accountWasNotSelected = false;\r\n }\r\n\r\n return accountFound;\r\n }\r\n\r\n function getBankAccountsSAP(requestFields) {\r\n return getPrepaidDetailsService.sitecore\r\n .getPrepaidDetails({\r\n businessPartnerId: requestFields.businessPartnerId,\r\n contractAccountId: requestFields.contractAccountId,\r\n })\r\n .then(\r\n result => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n setDropdowns();\r\n vm.loadingSpinner = false;\r\n vm.loaded = true;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function reload() {\r\n vm.loaded = false;\r\n load();\r\n }\r\n\r\n // function below cancels autopay management and send back to B&P Programs LP\r\n function cancel(url) {\r\n window.location.href = url;\r\n }\r\n\r\n function save() {\r\n // Update details for SAP\r\n return enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n action: _UPDATE,\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n bankId: $scope.delegateUserAccountDetails.accountId,\r\n // routingNo: $scope.delegateUserAccountDetails.rountingNumber,\r\n // bankAccountNo: $scope.delegateUserAccountDetails.accountNumber,\r\n // bankName: $scope.delegateUserAccountDetails.nickname,\r\n requestedBy: _selectedEmail.primaryEmail,\r\n })\r\n .then(result => {\r\n if (result.d.ReqToResNav.results[0].ProgramToMessage.results[0].ReplyCode === _SUCCESS) {\r\n broadcastService.headerSwitch('Full');\r\n responseNotificationsService.successResponse({\r\n vehicle: 'toast',\r\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_SUCCESS,\r\n pageTitle: 'Manage Auto Pay',\r\n });\r\n window.location.href =\r\n '/my-account/billing-and-payment-programs/auto-pay/manage-auto-pay';\r\n }\r\n });\r\n }\r\n\r\n function selectAccountForDelegate(optionSelected) {\r\n if (optionSelected.value === ccAutoPayAssetService.strings.addAccount) {\r\n addBankAccount();\r\n } else {\r\n findAccountAndSelectIt();\r\n }\r\n }\r\n\r\n function setModels() {\r\n if (_newBankAccountIdGenerated) {\r\n vm.form.bankAccount = _newBankAccountIdGenerated;\r\n findAccountAndSelectIt();\r\n } else {\r\n vm.form.bankAccount = $scope.delegateUserAccountDetails.accountId;\r\n }\r\n }\r\n\r\n function setDropdowns() {\r\n if (_bankAccountsOriginal.length > 0) {\r\n vm.dropdowns.bankAccounts = genericHelperService.createDropdownList(\r\n _bankAccountsOriginal,\r\n _BankAccountId,\r\n _bankDescription,\r\n );\r\n\r\n vm.dropdowns.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.dropdowns.bankAccounts,\r\n ccAutoPayAssetService.strings.value,\r\n _newBankAccountIdGenerated || $scope.delegateUserAccountDetails.accountId,\r\n );\r\n\r\n vm.dropdowns.bankAccounts.push({\r\n text: 'Add Bank Account',\r\n value: ccAutoPayAssetService.strings.addAccount,\r\n });\r\n\r\n vm.showDrops = true;\r\n } else {\r\n vm.showDrops = false;\r\n }\r\n }\r\n\r\n function load() {\r\n _selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n vm.isBPACancel =\r\n sessionStorageService.get(\r\n assetService.storageKeys.billingAndPaymentActivity.managedScheduledPayment,\r\n ) === 'billingAndPaymentAcivity';\r\n\r\n broadcastService.headerSwitch('Full');\r\n\r\n _selectedEmail = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.globalAccounts.info,\r\n );\r\n getAccountEnrollmentEligibilityStatusService.sitecore\r\n .getAccountEnrollmentEligibilityStatus({\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n })\r\n .then(\r\n result => {\r\n const enrolledPrograms = result.d.Inp_Prog.results[0].Prog_Res.results;\r\n const enrolled = ccAutoPayAssetService.strings.Enrolled;\r\n\r\n // It's enrolled into AutoPay SAP\r\n const enrollSAPData = _.find(\r\n enrolledPrograms,\r\n program =>\r\n program.ProgName === ccAutoPayAssetService.strings.DIRDEB &&\r\n program.EligibilityStatus === enrolled,\r\n );\r\n\r\n if (!_newBankAccountIdGenerated && enrollSAPData) {\r\n $scope.delegateUserAccountDetails = {\r\n accountId: enrollSAPData.BankAccountId,\r\n accountNumber: enrollSAPData.BankAccountNumber,\r\n nickname: enrollSAPData.BankAccountName,\r\n rountingNumber: enrollSAPData.RoutingNumber,\r\n accountType: enrollSAPData.BankAccountType,\r\n };\r\n vm.accountType.forEach(item => {\r\n if (item.value === enrollSAPData.BankAccountType) {\r\n $scope.delegateUserAccountDetails.accountType = item.text;\r\n }\r\n });\r\n vm.accountWasNotSelected = true;\r\n }\r\n\r\n getBankAccountsSAP({\r\n businessPartnerId: _selectedAddressData.primaryBp,\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n });\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n\r\n function init() {\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCUnenrollAutoPay', CCUnenrollAutoPay);\r\n\r\nCCUnenrollAutoPay.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'assetService',\r\n 'modalParameters',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'ccAutoPayAssetService',\r\n '$state',\r\n '$rootScope',\r\n];\r\n\r\nfunction CCUnenrollAutoPay(\r\n $log,\r\n $modalInstance,\r\n sessionStorageService,\r\n broadcastService,\r\n assetService,\r\n modalParameters,\r\n enrollInBillingAndPaymentProgramsService,\r\n ccAutoPayAssetService,\r\n $state,\r\n $rootScope,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const _DIRDEB = ccAutoPayAssetService.strings.DIRDEB;\r\n let _selectedAddressData = null;\r\n const _SUCCESS = ccAutoPayAssetService.strings.SUCCESS;\r\n const _DEENROLL = ccAutoPayAssetService.strings.DEENROLL;\r\n vm.accountSelected = modalParameters;\r\n let SAPdueBalance;\r\n let SAPdueDate;\r\n let _selectedEmail;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.init = init;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModal = closeModal;\r\n vm.deEnroll = deEnroll;\r\n /**\r\n * Function Declarations\r\n */\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function deEnroll() {\r\n vm.loadingSpinner = true;\r\n broadcastService.headerSwitch('Full');\r\n // Update details for SAP\r\n return enrollInBillingAndPaymentProgramsService.sitecore\r\n .enrollInBillingAndPaymentPrograms({\r\n action: _DEENROLL,\r\n contractAccountId: _selectedAddressData.accountSelected.accountNum,\r\n progName: _DIRDEB,\r\n bankId: vm.accountSelected.accountId,\r\n requestedBy: _selectedEmail.primaryEmail,\r\n extensionSet: [\r\n {\r\n RefObject: _DIRDEB,\r\n RefFieldName: 'CPI_MESSAGE',\r\n RefFieldValue: $rootScope.cpiInfo\r\n ? `Amount ${ \r\n $rootScope.cpiInfo.dueBalance \r\n } Date ${ \r\n $rootScope.cpiInfo.sapdueDate}`\r\n : '',\r\n },\r\n ],\r\n })\r\n .then(\r\n (result) => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0]\r\n .ReplyCode === _SUCCESS\r\n ) {\r\n $modalInstance.close();\r\n $state.go(\r\n ccAutoPayAssetService.tracks.manageAutoPay\r\n .manageAutoPayUnenrollSuccess,\r\n );\r\n } else {\r\n $modalInstance.close();\r\n vm.error = true;\r\n vm.loadingSpinner = false;\r\n }\r\n },\r\n (error) => {\r\n $modalInstance.close();\r\n $rootScope.$broadcast(\r\n ccAutoPayAssetService.events.modalUnenrollClosed,\r\n );\r\n },\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n pushVPV(\r\n '/vpv/de/page/auto-pay/success/auto-pay/are-you-sure-you-want-to-unenroll/na/manage',\r\n );\r\n vm.loaded = true;\r\n vm.ShowError = false;\r\n vm.orgBP = sessionStorageService.get(\r\n assetService.storageKeys.organizationBP,\r\n );\r\n _selectedAddressData = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.selectedAddressData,\r\n );\r\n _selectedEmail = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.globalAccounts.info,\r\n );\r\n }\r\n\r\n /**\r\n * Initialization\r\n */\r\n function init() {\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCMPSAllAccountModal', CCMPSAllAccountModal);\r\nCCMPSAllAccountModal.$inject = [\r\n '$modalInstance',\r\n 'modalParameters',\r\n '$rootScope',\r\n 'assetService',\r\n '$animate',\r\n];\r\n\r\nfunction CCMPSAllAccountModal(\r\n $modalInstance,\r\n modalParameters,\r\n $rootScope,\r\n assetService,\r\n $animate,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n \r\n /* --------------Global Vars-----------------------*/\r\n vm.accounts = modalParameters.accounts;\r\n vm.currentSelectedAccount = modalParameters.selectedAccount;\r\n vm.allAccountData = modalParameters.allaccountsData;\r\n vm.pagedData=[];\r\n vm.startIndex=0;\r\n vm.selectedAccount;\r\n vm.curPage = 0;\r\n vm.numberOfPages =1;\r\n vm.pagenumbers = [];\r\n vm.pageSize = 10;\r\n vm.radioChecked = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.prevPage = prevPage;\r\n vm.nextPage = nextPage;\r\n vm.selectAddress = selectAddress;\r\n vm.onAccountClick = onAccountClick;\r\n vm.gotoPage = gotoPage;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n $animate.enabled(true);\r\n }\r\n\r\n function onAccountClick(account) {\r\n vm.radioChecked = true;\r\n vm.selectedAccount = account;\r\n vm.selectedAccountObj = account;\r\n }\r\n\r\n function prevPage() {\r\n $animate.enabled(false);\r\n vm.pagedData=[];\r\n vm.curPage =\r\n vm.curPage === assetService.numeric_Numbers.zero\r\n ? vm.curPage\r\n : (vm.curPage -= 1);\r\n\r\n vm.pagedData=vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\r\n }\r\n\r\n function nextPage() {\r\n $animate.enabled(false);\r\n vm.pagedData=[];\r\n vm.curPage =\r\n vm.curPage === vm.numberOfPages - assetService.numeric_Numbers.onee\r\n ? vm.curPage\r\n : (vm.curPage += 1);\r\n vm.pagedData=vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\r\n }\r\n\r\n function gotoPage(page){\r\n $animate.enabled(false);\r\n vm.pagedData=[];\r\n vm.curPage = page === assetService.numeric_Numbers.onee? 0 : page-1;\r\n vm.pagedData=vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\r\n }\r\n\r\n function selectAddress() {\r\n $rootScope.$broadcast('selectAddressFromAccountModal', vm.selectedAccountObj, true);\r\n closeModal();\r\n }\r\n\r\n function load() {\r\n $animate.enabled(false);\r\n vm.pagedData =[];\r\n vm.numberOfPages = Math.ceil(\r\n vm.accounts.length / vm.pageSize,\r\n );\r\n vm.pagedData = vm.accounts.slice(vm.curPage * 10, vm.curPage * 10 + vm.pageSize);\r\n console.log(vm.pagedData);\r\n vm.pagenumbers = _.range(1,vm.numberOfPages+1);\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCCancelProductServiceModal', CCCancelProductServiceModal);\r\nCCCancelProductServiceModal.$inject = [\r\n '$rootScope',\r\n '$log',\r\n 'assetService',\r\n '$modalInstance',\r\n 'sessionStorageService',\r\n 'ccProductAndServicesAssetService',\r\n 'updateCancelEnrollmentService',\r\n 'commonService',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction CCCancelProductServiceModal(\r\n $rootScope,\r\n $log,\r\n assetService,\r\n $modalInstance,\r\n sessionStorageService,\r\n ccProductAndServicesAssetService,\r\n updateCancelEnrollmentService,\r\n commonService,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n let upgradeCancelStore = {};\r\n vm.regulated = 'REGULATED';\r\n vm.nonRegulated = 'NON_REGULATED';\r\n vm.recurring = 'RECURRING';\r\n vm.prodName='';\r\n\r\n /* --------------Global Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.cancelProductService = cancelProductService;\r\n vm.cancelledSuccessfully = false;\r\n vm.form = {};\r\n vm.productService = {};\r\n $rootScope.cancelServiceFailedProduct = \"\";\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label, \r\n });\r\n };\r\n\r\n function cancelProductService() {\r\n cancelProductServiceService(upgradeCancelStore).then(\r\n () => {\r\n if (vm.cancelledSuccessfully) {\r\n pushVPV(`/vpv/de/modal/manage-products-services/success/manage-products-services/your-subscription-was-canceled/na/${vm.prodName}`);\r\n responseNotificationsService.successResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: $(\"#succes-toast\").attr(\"text\"),\r\n pageTitle: 'Manage Products and Services',\r\n imgToDisplay: $(\"#succes-toast\").attr(\"icon\"),\r\n uniqueClass:'cancelModalPnS',\r\n GatRequired: false,\r\n });\r\n setTimeout(()=>{\r\n window.location.reload();\r\n },3000);\r\n } else {\r\n $rootScope.cancelServiceFailedProduct = vm.productService.productCode;\r\n $rootScope.cancelServiceFailCount += 1;\r\n sessionStorageService.set(\r\n 'cancelServiceFailCount',$rootScope.cancelServiceFailCount\r\n );\r\n if($rootScope.cancelServiceFailCount <= 2) {\r\n let errMsg = 'Were having trouble canceling your subscription. Please try again later';\r\n errMsg = errMsg.toLowerCase().replaceAll(\" \",\"-\");\r\n pushVPV('/vpv/de/page/manage-products-services/error/manage-products-services/na/'+errMsg);\r\n pushDL('manage-products-service_error','na-|-'+ errMsg +`-|-${assetService.sitecoreEndpoints.updateCancelEnrollUrl}`,'manage-products-services');\r\n } else {\r\n let errMsg = 'We are unable to cancel your subscription. Please try again another time';\r\n errMsg = errMsg.toLowerCase().replaceAll(\" \",\"-\");\r\n pushVPV('/vpv/de/page/manage-products-services/error/'+errMsg);\r\n pushDL('manage-products-service_error','na-|-'+ errMsg+`-|-${assetService.sitecoreEndpoints.updateCancelEnrollUrl}`,'manage-products-services');\r\n }\r\n setTimeout(()=>{\r\n if($rootScope.cancelServiceFailCount <= 2) {\r\n window.location.reload();\r\n }\r\n },3000);\r\n // responseNotificationsService.errorResponse({\r\n // vehicle: assetService.strings.TOAST,\r\n // message: 'Enrollment Cancellation Request Failed',\r\n // pageTitle: 'Manage Products and Services',\r\n // });\r\n }\r\n $modalInstance.close();\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function cancelProductServiceService(param) {\r\n $rootScope.dataLayer.push({\r\n event: 'eec.cancel',\r\n ecommerce: {\r\n refund: {\r\n actionField: {\r\n order_id: vm.productService.enrollmentCode,\r\n charge_type: vm.productService.typeOfTheCharge === vm.recurring ? 'recurring' : 'onetime',\r\n },\r\n products: [{\r\n id: vm.productService.productCode, // product selected by the user to cancel it\r\n quantity: vm.productService.quantity, // quantity selected by the user\r\n }],\r\n },\r\n },\r\n });\r\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/yes-cancel-subscription/'+vm.prodName);\r\n return updateCancelEnrollmentService.sitecore.updateCancel(param).then(\r\n (result) => {\r\n // if(result === true) {\r\n if (result.contractAccounts[0].enrollmentResponseList[0].status === 'error') {\r\n // Waiting for data to test the service and the response\r\n vm.cancelledSuccessfully = false;\r\n } else {\r\n vm.cancelledSuccessfully = true;\r\n }\r\n },\r\n );\r\n }\r\n\r\n function closeModal() {\r\n if(vm.productService.productGroup ===vm.nonRegulated){\r\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/close/'+vm.prodName);\r\n }\r\n else{\r\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/sure-you-want-to-cancel/no-keep-subscription/'+vm.prodName);\r\n }\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n upgradeCancelStore = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.manageProductsServices);\r\n if (upgradeCancelStore !== undefined) {\r\n vm.productService = {\r\n name: upgradeCancelStore.providerContractAccountNumberList[0].name ? upgradeCancelStore.providerContractAccountNumberList[0].name : 'Unavailable',\r\n price: upgradeCancelStore.providerContractAccountNumberList[0].price,\r\n productCode: upgradeCancelStore.providerContractAccountNumberList[0].productCode,\r\n quantity: upgradeCancelStore.providerContractAccountNumberList[0].quantity,\r\n productGroup: upgradeCancelStore.providerContractAccountNumberList[0].productGroup,\r\n enrollmentCode: upgradeCancelStore.providerContractAccountNumberList[0].enrollmentCode,\r\n typeOfTheCharge: upgradeCancelStore.providerContractAccountNumberList[0].typeOfTheCharge,\r\n };\r\n }\r\n vm.prodName = vm.productService.name.toLowerCase().replaceAll(\" \",\"-\");\r\n pushVPV('/vpv/de/modal/manage-products-services/load/manage-products-services/sure-you-want-to-cancel');\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCUpdateSpeedPayPaymentMethodModal', CCUpdateSpeedPayPaymentMethodModal);\r\nCCUpdateSpeedPayPaymentMethodModal.$inject = [\r\n '$modalInstance',\r\n '$rootScope',\r\n '$log',\r\n 'modalService',\r\n 'sessionStorageService',\r\n 'ccProductAndServicesAssetService',\r\n 'speedpayService',\r\n 'genericHelperService',\r\n '$scope',\r\n 'commongaTaggingService',\r\n 'getCardDetailsService',\r\n 'assetService',\r\n 'getUpdateCardDetailsService',\r\n 'updateCardDetailsService',\r\n];\r\n\r\nfunction CCUpdateSpeedPayPaymentMethodModal(\r\n $modalInstance,\r\n $rootScope,\r\n $log,\r\n modalService,\r\n sessionStorageService,\r\n ccProductAndServicesAssetService,\r\n speedpayService,\r\n genericHelperService,\r\n $scope,\r\n commongaTaggingService,\r\n getCardDetailsService,\r\n assetService,\r\n getUpdateCardDetailsService,\r\n\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n vm.cardIdForCA = {};\r\n\r\n /* --------------Global Vars-----------------------*/\r\n const currentCASP = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.selectedCAforSpeedPay);\r\n let currentBP = '';\r\n const dashboardUserType = sessionStorageService.get(assetService.storageKeys.dashboard.userType);\r\n const currentUser = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.currentUser);\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.updatePayment = updatePayment;\r\n vm.upgradedSuccessfully = false;\r\n vm.form = {};\r\n\r\n vm.goToSpeedpay = goToSpeedpay;\r\n /* --------------Function Definitions-----------------------*/\r\n const pushVPV = function (vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label, \r\n });\r\n };\r\n function closeModal() {\r\n const workflowName = 'de-manage-products-services';\r\n const headline = 'update-your-payment-method';\r\n const subheadline = '';\r\n const ctaBtn = 'cancel';\r\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/'+headline+'/cancel');\r\n $modalInstance.close();\r\n }\r\n\r\n function updatePayment() {\r\n const workflowName = 'cart-manage-products-services';\r\n const headline = 'update-your-payment-method';\r\n const subheadline = '';\r\n const ctaBtn = 'update';\r\n pushVPV('/vpv/de/modal/manage-products-services/clickthrough/manage-products-services/'+headline+'/update')\r\n goToSpeedpay();\r\n $modalInstance.close();\r\n }\r\n function attributePush(...args) {\r\n const arrayElements = Array.prototype.slice.call(args);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function getUpdateCardDetails(action, expire, externalId) {\r\n if (action === 'DISPLAY') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: currentBP,\r\n requestedBy: currentUser.emailId !== null ? currentUser.emailId : '',\r\n };\r\n }\r\n if (action === 'ADD') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: currentBP,\r\n requestedBy: currentUser.emailId !== null ? currentUser.emailId : '',\r\n creditCardNumber: externalId,\r\n creditCardType: '0006',\r\n expirationDate: expire,\r\n };\r\n }\r\n\r\n return getUpdateCardDetailsService.sitecore\r\n .getUpdateCardDetails(vm.getCardData)\r\n .then(\r\n result => {\r\n let allCardResult = {};\r\n if (result.d.Action === 'DISPLAY' && result.d.CredCard_Res.results[0].Msg.Type === assetService.replyCodes.S) {\r\n allCardResult = {\r\n bpNumber: result.d.BusinessPartner,\r\n Action: result.d.Action,\r\n cardDetails: (() => _.map(result.d.CredCard_Res.results, card => ({\r\n creditCardID: card.CreditCardID,\r\n CreditCardNumber: card.CreditCardNumber,\r\n CreditCardType: card.CreditCardType,\r\n CreditCardAccountName: card.CreditCardAccountName,\r\n ExpirationDate: card.ExpirationDate,\r\n ExpirationDateStr: card.ExpirationDateStr,\r\n })))(),\r\n };\r\n return allCardResult;\r\n }\r\n return allCardResult;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n function getCardDetails() {\r\n const getCardData = {\r\n action: 'CCARDREQSET',\r\n contractAccount: currentCASP,\r\n };\r\n return getCardDetailsService.sitecore\r\n .getCardDetails(getCardData)\r\n .then(\r\n getresult => getresult,\r\n errVal => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(errVal);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n getUpdateCardDetails('DISPLAY').then((allcards) => {\r\n vm.allCardsDataForBp = allcards;\r\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.allCardsDataForBp, vm.allCardsDataForBp);\r\n getCardDetails().then(\r\n (cardDetails) => {\r\n if (cardDetails.d.CCardId !== null) {\r\n vm.cardIdForCA.id = cardDetails.d.CCardId.CreditCardID;\r\n vm.cardIdForCA.businessPartner = cardDetails.d.CCardId.BusinessPartner;\r\n vm.cardIdForCA.contractAccount = cardDetails.d.CCardId.ContractAccount;\r\n vm.cardDetailsForCA = _.find(\r\n vm.allCardsDataForBp.cardDetails,\r\n card => card.creditCardID === vm.cardIdForCA.id,\r\n );\r\n sessionStorageService.set(ccProductAndServicesAssetService.storageKeys.cardDetailForCA, vm.cardDetailsForCA);\r\n }\r\n },\r\n\r\n );\r\n });\r\n pushVPV('/vpv/de/modal/manage-products-services/load/manage-products-services/update-your-payment-method');\r\n }\r\n\r\n function goToSpeedpay() {\r\n vm.cardIdDetailsForCA = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.cardDetailForCA);\r\n speedpayService.getSpeedpayUrl({\r\n action: assetService.strings.EDIT,\r\n login: currentBP,\r\n externalWalletId: vm.cardIdDetailsForCA.CreditCardNumber,\r\n disableACH: 'Y',\r\n speedframeCallbackUrl:\r\n `${location.origin\r\n }/my-account/products-and-services/manage-products-and-services?action=${\r\n assetService.strings.STOP}`,\r\n }).then(result => {\r\n window.location.href = result;\r\n });\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n if (dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITH_ACCOUNTS ||\r\n dashboardUserType ===\r\n assetService.strings.NON_NATIVE_USER_WITHOUT_ACCOUNTS || $rootScope.isNonNative\r\n ) {\r\n currentBP = sessionStorageService.get(assetService.storageKeys.relatedBP);\r\n } else {\r\n currentBP = sessionStorageService.get(assetService.storageKeys.managePSBPNumber);\r\n }\r\n\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('CCUpgradeProductServiceModal', CCUpgradeProductServiceModal);\r\nCCUpgradeProductServiceModal.$inject = [\r\n '$modalInstance',\r\n 'sessionStorageService',\r\n 'ccProductAndServicesAssetService',\r\n];\r\n\r\nfunction CCUpgradeProductServiceModal(\r\n $modalInstance,\r\n sessionStorageService,\r\n ccProductAndServicesAssetService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n let upgradeCancelStore = {};\r\n\r\n /* --------------Global Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.upgradedSuccessfully = false;\r\n vm.form = {};\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n upgradeCancelStore = sessionStorageService.get(ccProductAndServicesAssetService.storageKeys.manageProductsServices);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}","/* eslint-disable no-param-reassign */\r\napp.controller(\r\n 'AdditionalOptionsPreferencesController',\r\n AdditionalOptionsPreferencesController,\r\n);\r\nAdditionalOptionsPreferencesController.$inject = [\r\n '$log',\r\n 'genericHelperService',\r\n 'NotificationPreferencesHelperService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'modalService',\r\n '$scope',\r\n '$rootScope',\r\n 'updateConsentService',\r\n '$timeout',\r\n 'umcModalService',\r\n 'commongaTaggingService',\r\n 'readConsentService',\r\n 'accountSearchService',\r\n 'broadcastService',\r\n '$window',\r\n '$document',\r\n];\r\n\r\nfunction AdditionalOptionsPreferencesController(\r\n $log,\r\n genericHelperService,\r\n notificationHelper,\r\n assetService,\r\n sessionStorageService,\r\n modalService,\r\n $scope,\r\n $rootScope,\r\n updateConsentService,\r\n $timeout,\r\n umcModalService,\r\n commongaTaggingService,\r\n readConsentService,\r\n accountSearchService,\r\n broadcastService,\r\n $window,\r\n $document,\r\n) {\r\n /* Global Vars */\r\n\r\n const vm = this;\r\n let currentCommunication = {};\r\n\r\n /* Scope Vars */\r\n let globalAccountInfo = {};\r\n $rootScope.closeBtn = false;\r\n let globalSelectedAccount = {};\r\n let cardName = '';\r\n vm.cardsModel = [];\r\n vm.chan_opt = [];\r\n vm.comm_opt = [];\r\n vm.umcCard = {\r\n status: false,\r\n };\r\n vm.channelItemsDDList = null;\r\n vm.preferencesReady = false;\r\n vm.notificationPreferences = null;\r\n vm.emailToDelete = null;\r\n vm.phoneToDelete = null;\r\n vm.notificationToConfirm = null;\r\n vm.showLoader = {};\r\n vm.notificationDropdowns = {\r\n ENRL_PRCHS: {\r\n channel: [],\r\n communication: [],\r\n },\r\n };\r\n vm.currentNotifModal = {\r\n title: '',\r\n type: '',\r\n notifIdModal: '',\r\n channelIdModal: null,\r\n enrolledStatus: false,\r\n disableSave: true,\r\n };\r\n vm.upgradeConsent = false;\r\n vm.toastData = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n };\r\n vm.toastOpt = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n workFlow: 'toast notification',\r\n };\r\n vm.on = 'on';\r\n vm.off = 'off';\r\n vm.toastTimeout = 6000;\r\n vm.gatConstants = {};\r\n vm.gatActiveCard = '';\r\n vm.modalValue = '';\r\n vm.isvalidSubmit = false;\r\n vm.isDuplicate = false;\r\n vm.clickedSave = {};\r\n vm.showError = {};\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n vm.typeError = false;\r\n vm.errorDelete = false;\r\n\r\n /* Function Declarations */\r\n vm.addCommVPV = addCommVPV;\r\n vm.inlineVPV = inlineVPV;\r\n vm.errorModalVPV = errorModalVPV;\r\n vm.cancelChange = cancelChange;\r\n vm.deleteNotification = deleteNotification;\r\n vm.addNotification = addNotification;\r\n vm.dropChannel = dropChannel;\r\n vm.dropCommunication = dropCommunication;\r\n vm.cancelChanges = cancelChanges;\r\n vm.checkPlaceholder = checkPlaceholder;\r\n vm.saveChanges = saveChanges;\r\n vm.changeFormatDetailed = changeFormatDetailed;\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.saveNewCommunication = saveNewCommunication;\r\n vm.handleEnrollment = handleEnrollment;\r\n vm.cancelModal = cancelModal;\r\n vm.sendNotification = sendNotification;\r\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\r\n vm.sendAdditionalOptions = sendAdditionalOptions;\r\n vm.sendEditPayments = sendEditPayments;\r\n vm.phonesTypes = [];\r\n vm.activateUmc = activateUmc;\r\n vm.openUMC = openUMC;\r\n vm.ohioUser = false;\r\n vm.closeToast = closeToast;\r\n vm.getSuccessMessage = getSuccessMessage;\r\n vm.isUnique = isUnique;\r\n vm.isIdentical = isIdentical;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.umcModalInstance = '';\r\n vm.sendEditAdditionalOptions = sendEditAdditionalOptions;\r\n vm.initGatConstants = initGatConstants;\r\n vm.indexToCardTitle = indexToCardTitle;\r\n vm.sendAddNotification = sendAddNotification;\r\n vm.sendDelete = sendDelete;\r\n vm.gatNewComm = gatNewComm;\r\n vm.showModalLoader = false;\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n vm.communicationVal = communicationVal;\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n\r\n $scope.$on(assetService.events.addNewCommunication, (event, data) => {\r\n const newNotif = notificationHelper.getCurrentNotification(\r\n data,\r\n vm.notificationPreferences,\r\n );\r\n newNotif.loadingChanges = false;\r\n\r\n notificationHelper.updateNotif(\r\n data,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n vm.notificationPreferences,\r\n );\r\n $scope.$parent.currComm = vm.communicationOptions;\r\n });\r\n\r\n $scope.$on(assetService.events.umcActionConsent, (event, data) => {\r\n // UMC Action\r\n editConsentStatus(data);\r\n });\r\n\r\n /* Function Definitions */\r\n function activateUmc() {\r\n $rootScope.umcError = true;\r\n if (!vm.umcCard.status) {\r\n openUMC(true);\r\n } else {\r\n // umcVersion = sessionStorageService.get(assetService.notifPref.sessionStorage.umcCard);\r\n modalService.umcRevokeModal();\r\n virtualPagePush(\r\n $('#hdn-UMC').attr('businessFunction'),\r\n $('#hdn-UMC').attr('headLine'),\r\n vm.off,\r\n $('#hdn-UMC').attr('consentStatusimpression'),\r\n );\r\n }\r\n }\r\n\r\n //GAT for ADD/DELETE COMMUNICATION\r\n function gatAddDeleteEvent(notifId, newData, oldData) {\r\n let indexNew = newData.findIndex(x => x.id == notifId);\r\n let lenOld = 0;\r\n let indexOld = '';\r\n if (oldData != undefined) {\r\n indexOld = oldData.findIndex(x => x.id == notifId);\r\n }\r\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\r\n lenOld = Object.keys(oldData[indexOld].notifications).length;\r\n }\r\n let cardName = subheadline(notifId);\r\n let count = 0;\r\n let newValue = '';\r\n let type = '';\r\n if (lenOld == 0) {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n type =\r\n notifNew.channel == 'TXT'\r\n ? 'text'\r\n : notifNew.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n });\r\n } else {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n type = 'email';\r\n newValue = notifNew.communicationText;\r\n }\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n (newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n count = 1;\r\n }\r\n });\r\n if (count == 0) {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n count = 0;\r\n });\r\n }\r\n\r\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\r\n let counter = 0,\r\n deleteFlag = false;\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n newValue = notifNew.communicationText;\r\n }\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n ((notifOld.communicationText != undefined &&\r\n notifOld.communicationText == 'Add New Email') ||\r\n notifOld.communicationText == 'Add New Phone Number' ||\r\n newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n counter = 1;\r\n }\r\n });\r\n if (counter == 0) {\r\n deleteFlag = true;\r\n type =\r\n notifOld.channel == 'TXT'\r\n ? 'text'\r\n : notifOld.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n counter = 0;\r\n });\r\n\r\n if (deleteFlag && vm.errorDelete) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/delete-success',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function subheadline(notifId) {\r\n if (notifId == 'ENRL_PRCHS') {\r\n return 'enrollments-and-purchases';\r\n }\r\n }\r\n\r\n function errorModalVPV(\r\n type,\r\n req,\r\n duplicate,\r\n pattern,\r\n phoneType,\r\n phoneInvalid,\r\n ) {\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n let cardName = subheadline(notifId);\r\n if (req) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-an-email',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (duplicate) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-email-address-already-exists',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-phone-number-address-already-exists',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (pattern && type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-a-valid-email',\r\n cardName,\r\n );\r\n }\r\n if (phoneType && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-type-|-please-select-a-phone-type',\r\n cardName,\r\n );\r\n }\r\n if (phoneInvalid && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-valid-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n\r\n function inlineVPV(notifId, channel) {\r\n let cardName = subheadline(notifId);\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n channel.toLowerCase() + '-|-please-select-a-communication',\r\n cardName,\r\n );\r\n }\r\n\r\n function addCommVPV(notifId) {\r\n const tempData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n );\r\n let index = tempData.findIndex(x => x.id == notifId);\r\n let len = Object.keys(tempData[index].notifications).length;\r\n let cardName = subheadline(notifId);\r\n if (len > 0 && len < 10) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/add-communication',\r\n );\r\n }\r\n }\r\n\r\n function updateConsent(data) {\r\n return updateConsentService.sitecore.updateConsent(data).then(\r\n result => {\r\n editConsentStatus(data);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function editConsentStatus(data) {\r\n const umcVersion = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.umcCard,\r\n );\r\n\r\n const newConsentStatus = {\r\n consentStatus: data.action,\r\n version: data.version,\r\n consentDate: data.consentDate,\r\n type: assetService.notifPref.UMCActions[data.action],\r\n };\r\n\r\n umcVersion.lastEvent[0] = genericHelperService.notReferenceObjects(\r\n newConsentStatus,\r\n );\r\n\r\n umcVersion[data.action][0] = genericHelperService.notReferenceObjects(\r\n newConsentStatus,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.umcCard,\r\n umcVersion,\r\n );\r\n UMCReadConsent(umcVersion);\r\n }\r\n\r\n function dropChannel(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function dropCommunication(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n const addNew = notificationHelper.communicationChange(\r\n model,\r\n extra,\r\n vm.currentNotifModal,\r\n data,\r\n );\r\n\r\n let notifId = extra.split('/')[0];\r\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.id === notifId) {\r\n cards.notifications[vm.indexNumb].communicationText = model.text;\r\n }\r\n });\r\n\r\n if (model.text !== '') {\r\n vm.disableSave = vm.isIdentical(extra.split('/')[0]);\r\n } else vm.disableSave = true;\r\n if (addNew) {\r\n if (extra.split('/')[0] === 'ENRL_PRCHS' || vm.modelSelected === 'TXT') {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypesMobile,\r\n null,\r\n null,\r\n );\r\n } else {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n }\r\n vm.modalForm.$setUntouched();\r\n vm.currentNotifModal.communicationModel = '';\r\n vm.showModalLoader = false;\r\n vm.isDuplicate = false;\r\n vm.typeError = false;\r\n angular.element('#BillingAddNewCommunicationModal').modal('show');\r\n $('#AddCommunication').val('');\r\n vm.gatActiveCard = vm.indexToCardTitle(vm.currentNotifModal.notifIdModal);\r\n let cardName = subheadline(notifId);\r\n if (model.text != 'Add New Phone Number') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/add-communication/add-new-email',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/add-communication/add-new-phone-number',\r\n );\r\n }\r\n }\r\n }\r\n\r\n // function resetAddCommunicationModalForm(modalForm){\r\n // modalForm.$setUntouched();\r\n // }\r\n\r\n function saveNewCommunication(saveChanges, button) {\r\n vm.typeError = false;\r\n if (button === 'Cancel') {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n const data = vm.notificationPreferences;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n notificationHelper\r\n .resetChanges(notifId, data, vm.currentNotifModal)\r\n .then(() => {\r\n return;\r\n });\r\n } else {\r\n saveChanges = vm.isvalidSubmit;\r\n saveChanges == true\r\n ? (vm.showModalLoader = true)\r\n : (vm.showModalLoader = false);\r\n vm.modalForm.AddCommunication.$touched = true;\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n const data = vm.notificationPreferences;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n vm.modalValue = vm.currentNotifModal.communicationModel\r\n ? vm.currentNotifModal.communicationModel\r\n : '';\r\n\r\n if (\r\n vm.modalForm.AddCommunication.$error.email &&\r\n vm.currentNotifModal.communicationModel == undefined\r\n ) {\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n\r\n if (\r\n vm.currentNotifModal.communicationModel != '' &&\r\n vm.currentNotifModal.phoneType == undefined\r\n ) {\r\n vm.typeError = true;\r\n }\r\n if (saveChanges) {\r\n notificationHelper\r\n .createNewCommunication(\r\n saveChanges,\r\n notifId,\r\n data,\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n )\r\n .then(result => {\r\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\r\n if (\r\n $rootScope.emailErrorModal !== true &&\r\n $rootScope.phoneErrorModal !== true &&\r\n saveChanges !== false\r\n ) {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n } else {\r\n if (result === undefined) {\r\n saveNewCommunication(false, 'Cancel');\r\n }\r\n vm.showModalLoader = false;\r\n $('#AddCommunication').val(vm.modalInputValue);\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n });\r\n }\r\n if (saveChanges === true) {\r\n vm.disableSave = false;\r\n } else {\r\n vm.disableSave = vm.isIdentical(notifId);\r\n }\r\n\r\n if (saveChanges === true) {\r\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n vm.notificationPreferences,\r\n );*/\r\n }\r\n }\r\n }\r\n\r\n function changeFormatDetailed(active, notifId) {\r\n const currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n currentNotif.format_condensed = !currentNotif.format_detailed;\r\n }\r\n\r\n function enrolledNotif(notifId, enrolledStatus, title) {\r\n vm.clickedSave[notifId] = false;\r\n vm.currentNotifModal.notifIdModal = notifId;\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.currentNotifModal.title = title;\r\n vm.handleEnrollment(\r\n vm.currentNotifModal.enrolledStatus,\r\n vm.currentNotifModal.notifIdModal,\r\n );\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function cancelModal() {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function toastNotificationGat(errorType, messageText) {\r\n /*attributePush(\r\n 'workFlow:toast notification',\r\n `headline:${errorType}`,\r\n `subheadline:${messageText}`,\r\n 'buttonText: impression',\r\n `addedSpec:${vm.gatConstants.businessFunction}`,\r\n );\r\n virtualPagePush(\r\n 'toast notification',\r\n vm.gatConstants.businessFunction,\r\n messageText,\r\n 'impression',\r\n errorType,\r\n );*/\r\n }\r\n\r\n $scope.$on(\r\n assetService.events.reloadAdditionalOptions,\r\n (index, toastMessage) => {\r\n $rootScope.umcBanner = {\r\n type: '',\r\n message: '',\r\n };\r\n if ($rootScope.showToast === 'success') {\r\n vm.loadingSpinner = true;\r\n $rootScope.umcBanner = {\r\n type: 'S',\r\n message: toastMessage.messageOption\r\n ? toastMessage.messageOption\r\n : 'Accepted Successfully!!',\r\n };\r\n // vm.toastData.option = toastMessage.option\r\n // ? toastMessage.option\r\n // : 'success';\r\n // vm.toastData.messageOption = toastMessage.messageOption\r\n // ? toastMessage.messageOption\r\n // : 'Accepted Successfully!!';\r\n // vm.toastData.show = true;\r\n // $timeout(() => {\r\n // vm.toastData.show = false;\r\n // }, 6000);\r\n $rootScope.showToast = '';\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/unlock-additional-options/additional-options/toggle/on',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/unlock-additional-options/additional-options/add-communication/preference-successfully-saved',\r\n );\r\n } else if ($rootScope.showToast === 'error') {\r\n // vm.toastData.option = toastMessage.option ? toastMessage.option : 'error';\r\n // vm.toastData.messageOption = toastMessage.messageOption\r\n // ? toastMessage.messageOption\r\n // : 'Unexpected error';\r\n // vm.toastData.show = true;\r\n $rootScope.umcBanner = {\r\n type: 'E',\r\n message: toastMessage.messageOption\r\n ? toastMessage.messageOption\r\n : 'Unexpected error',\r\n };\r\n $rootScope.showToast = '';\r\n $rootScope.umcError = false;\r\n //toastNotificationGat('error', vm.toastData.messageOption);\r\n\r\n let updateConsentUMC = sessionStorageService.get('updateConsentUMC');\r\n let readConsentUMC = sessionStorageService.get('readConsent');\r\n if (updateConsentUMC != undefined) {\r\n let umcReturnCode = updateConsentUMC.d.MessageNum\r\n ? updateConsentUMC.d.MessageNum\r\n : '';\r\n let umcMessage = updateConsentUMC.d.Message\r\n ? updateConsentUMC.d.Message\r\n : '';\r\n let umcType = updateConsentUMC.d.Type ? updateConsentUMC.d.Type : '';\r\n vm.updateConsentType = umcType;\r\n if (umcType == 'E') {\r\n vm.returnCodeUMC = umcReturnCode;\r\n vm.messageUMC = umcMessage;\r\n vm.endpointUMC = `${assetService.sitecoreEndpoints.UpdateConsent}`;\r\n }\r\n }\r\n if (readConsentUMC != undefined && vm.updateConsentType != 'E') {\r\n let umcReturnCodeRead = updateConsentUMC.d.MessageNum\r\n ? updateConsentUMC.d.MessageNum\r\n : '';\r\n let umcMessageRead = updateConsentUMC.d.Message\r\n ? updateConsentUMC.d.Message\r\n : '';\r\n let umcTypeRead = updateConsentUMC.d.Type\r\n ? updateConsentUMC.d.Type\r\n : '';\r\n if (umcTypeRead == 'E') {\r\n vm.returnCodeUMC = umcReturnCodeRead;\r\n vm.messageUMC = umcMessageRead;\r\n vm.endpointUMC = `${assetService.sitecoreEndpoints.ReadConsent}`;\r\n }\r\n }\r\n pushDL(\r\n 'preferences-notifications_error',\r\n vm.returnCodeUMC +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.messageUMC) +\r\n '|-' +\r\n vm.endpointUMC,\r\n 'unlock-additional-options',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/unlock-additional-options/additional-options/' +\r\n vm.returnCodeUMC +\r\n '/trouble-updating-your-changes',\r\n );\r\n if ($rootScope.umcErrorOnToggle) {\r\n $rootScope.umcErrorOnToggle = '';\r\n vm.umcCard.status = !vm.umcCard.status;\r\n }\r\n }\r\n },\r\n );\r\n\r\n function handleEnrollment(enrolledStatus, notifId) {\r\n if (enrolledStatus) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n vm.notificationDropdowns[notifId].channel = [];\r\n vm.notificationDropdowns[notifId].communication = [];\r\n notificationHelper.enrolledNotif(\r\n vm.currentNotifModal.notifIdModal,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n if (vm.currentNotifModal.notifIdModal == 'ENRL_PRCHS') {\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/add-communication',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/additional-options/save',\r\n );\r\n }\r\n } else if (!enrolledStatus) {\r\n const tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences)); \r\n const newData = _.find(\r\n tempNotificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.enrolled = false;\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n notificationHelper\r\n .saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n tempNotificationPreferences,\r\n currentData,\r\n currentCommunication,\r\n )\r\n .then(result => {\r\n if (\r\n result[0]?.ReturnCodes &&\r\n result[0]?.ReturnCodes[0]?.ReturnCode1?.Type === 'E'\r\n ) {\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\r\n let showType = result[0].ReturnCodes[0].ReturnCode1?.Type;\r\n let returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum;\r\n let prefError = result[0].ReturnCodes[0].ReturnCode1?.Message;\r\n $rootScope.optionsBanner[vm.currentNotifModal.notifIdModal] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n $rootScope.optionsError = true;\r\n generateGATEvents(\r\n vm.currentNotifModal.notifIdModal,\r\n showType,\r\n returnCode,\r\n prefError,\r\n );\r\n broadcastService.refreshPreferences();\r\n } else {\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n if (result[0] != undefined) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/additional-options/off',\r\n );\r\n }\r\n vm.notificationPreferences = tempNotificationPreferences;\r\n newData.enrolled = false;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n vm.notificationPreferences,\r\n );\r\n angular\r\n .element('#ModalManageNotificationPreferenceChange')\r\n .modal('hide');\r\n broadcastService.refreshPreferences();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function setModels() {\r\n const data = vm.notificationPreferences;\r\n vm.preferencesReady = true;\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.notifications) {\r\n notificationHelper.setNotifications(\r\n cards.id,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n } else {\r\n cards.deleted = 10;\r\n cards.notifications = [];\r\n }\r\n vm.clickedSave[cards.id] = false;\r\n vm.showError[cards.id] = [];\r\n vm.showLoader[cards.id] = false;\r\n });\r\n notificationHelper.setCommunicationValue(\r\n vm.cardsModel,\r\n vm.notificationPreferences,\r\n vm.communicationOptions,\r\n );\r\n }\r\n\r\n function generateGATEvents(notifId, showError, getCode, getMsg) {\r\n if (notifId == 'ENRL_PRCHS') {\r\n cardName = 'enrollments-and-purchases';\r\n }\r\n if (showError == 'S') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/additional-options/add-communication/preference-successfully-saved',\r\n );\r\n } else if (showError == 'E') {\r\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\r\n if (vm.preferenceAction === 'UPDATE') {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`,\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.CreatePreferences}`,\r\n cardName,\r\n );\r\n }\r\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/additional-options/' +\r\n getCode +\r\n '/trouble-saving-your-changes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/additional-options/' +\r\n getCode +\r\n '/trouble-updating-your-changes',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function addNotification(notifId) {\r\n const data = vm.notificationPreferences;\r\n const { phones } = vm.communicationOptions;\r\n\r\n notificationHelper.addNotification(\r\n notifId,\r\n phones,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function cancelChanges(notifId) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n vm.showError[notifId] = [];\r\n vm.clickedSave[notifId] = false;\r\n notificationHelper.cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/clickthrough/' +\r\n cardName +\r\n '/additional-options/cancel',\r\n );\r\n }\r\n\r\n document.addEventListener('click', () => {\r\n if (!vm.noChanges) {\r\n $rootScope.optionsBanner = {};\r\n }\r\n $rootScope.umcBanner = {};\r\n $rootScope.ohioBanner = {};\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n vm.noChanges = false;\r\n });\r\n\r\n function saveChanges(notifId, cardIndex, madeChanges) {\r\n $rootScope.optionsBanner[notifId] = {\r\n type: '',\r\n message: '',\r\n };\r\n if (madeChanges) {\r\n vm.showLoader[notifId] = true;\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n //vm.notificationPreferences[cardIndex].loadingChanges = true;\r\n notificationHelper\r\n .saveChanges(notifId, newData, currentData, currentCommunication)\r\n .then(result => {\r\n vm.showLoader[notifId] = false;\r\n vm.showType = result[0].ReturnCodes[0].ReturnCode1?.Type\r\n ? result[0].ReturnCodes[0].ReturnCode1.Type\r\n : '';\r\n vm.returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum\r\n ? result[0].ReturnCodes[0].ReturnCode1.MessageNum\r\n : '';\r\n vm.prefError = result[0].ReturnCodes[0].ReturnCode1?.Message\r\n ? result[0].ReturnCodes[0].ReturnCode1.Message\r\n : '';\r\n if (\r\n result[0].ReturnCodes &&\r\n result[0].ReturnCodes[0].ReturnCode1?.Type === 'E'\r\n ) {\r\n $rootScope.optionsBanner[notifId] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n } else {\r\n $rootScope.optionsBanner[notifId] = {\r\n type: 'S',\r\n message: '',\r\n };\r\n\r\n const oldData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n );\r\n gatAddDeleteEvent(notifId, newData, oldData);\r\n\r\n if (\r\n vm.notificationPreferences[cardIndex].confirmButton != 'Update'\r\n ) {\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/additional-options/toggle/on',\r\n );\r\n }\r\n }\r\n vm.notificationPreferences[cardIndex].loadingChanges = false;\r\n // vm.toastData.option = 'success';\r\n // vm.toastData.messageOption = vm.getSuccessMessage(cardIndex);\r\n // vm.toastData.show = true;\r\n // $timeout(() => {\r\n // vm.toastData.show = false;\r\n // }, 6000);\r\n broadcastService.refreshPreferences();\r\n $window.scrollTo(0, 0);\r\n })\r\n .catch(() => {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.optionsBanner[notifId] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n vm.notificationPreferences[cardIndex].loadingChanges = false;\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n })\r\n .then(function() {\r\n generateGATEvents(notifId, vm.showType, vm.returnCode, vm.prefError);\r\n });\r\n } else {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n let result = notificationHelper.compareChanges(\r\n notifId,\r\n newData,\r\n currentData,\r\n );\r\n if (result) {\r\n vm.showLoader[notifId] = false;\r\n vm.noChanges = true;\r\n $rootScope.optionsBanner[notifId] = {\r\n type: 'N',\r\n message: '',\r\n };\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/additional-options/na/make-change-to-update-your-preference',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-make-change-to-update-your-preference-|-na',\r\n cardName,\r\n );\r\n }\r\n }\r\n }\r\n\r\n function deleteNotification(notifId, dropDownIndex) {\r\n const data = vm.notificationPreferences;\r\n let cardName = subheadline(notifId);\r\n\r\n let globaldata = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n );\r\n\r\n let index = globaldata.findIndex(x => x.id == notifId);\r\n globaldata = globaldata[index].notifications;\r\n let deleteValue =\r\n data[index].notifications[dropDownIndex].communicationText;\r\n let channelType = data[index].notifications[dropDownIndex].channel;\r\n deleteValue = deleteValue.toLowerCase();\r\n if (channelType != 'MAIL' && deleteValue != 'send my communication to') {\r\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\r\n }\r\n\r\n if (deleteValue != 'send my communication to' && globaldata != undefined) {\r\n let commText = '';\r\n\r\n globaldata.forEach(notif => {\r\n if (notif.communicationText != undefined) {\r\n commText = notif.communicationText.toLowerCase();\r\n } else {\r\n commText = notif.communication.toLowerCase();\r\n }\r\n\r\n if (commText === deleteValue && notif.channel == channelType) {\r\n vm.errorDelete = true;\r\n let type =\r\n notif.channel == 'TXT'\r\n ? 'text'\r\n : notif.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/intent/' +\r\n cardName +\r\n '/additional-options/delete-intent',\r\n );\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete-|-intent',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n });\r\n }\r\n vm.showError[notifId].splice(dropDownIndex, 1);\r\n notificationHelper.deleteNotification(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n vm.notificationDropdowns,\r\n );\r\n if (\r\n vm.notificationPreferences.filter(element => element.notifications) === ''\r\n ) {\r\n vm.disableSave = true;\r\n } else vm.disableSave = vm.isIdentical(notifId);\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function cancelChange(notification) {\r\n notification.value = !notification.value;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function communicationVal(model, extra) {\r\n if (model === 'Text') {\r\n model = 'TXT';\r\n } else if (model === 'Call') {\r\n model = 'VOIC';\r\n } else if (model === 'Email') {\r\n model = 'MAIL';\r\n }\r\n const data = vm.notificationPreferences;\r\n vm.modelSelected = model;\r\n let cardId = extra.split('/')[0];\r\n notificationHelper.dropdownFilter(\r\n cardId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n model,\r\n );\r\n vm.displayOptions = sessionStorageService.get('displayOptions');\r\n notificationHelper.commChange(\r\n model,\r\n extra,\r\n vm.displayOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function getPreferences(preferences, comm_opt) {\r\n vm.notificationPreferences = preferences;\r\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\r\n vm.cardsModel = vm.cardsModel.map(item => {\r\n if (item.notifications) {\r\n item.notifications = genericHelperService.notReferencesArrayObjects(\r\n item.notifications,\r\n );\r\n } else {\r\n item.notifications = [];\r\n }\r\n return item;\r\n });\r\n\r\n vm.communicationOptions = comm_opt;\r\n }\r\n\r\n function UMCReadConsent(umcVersions) {\r\n vm.umcCard.status = false;\r\n vm.upgradeConsent = false;\r\n $rootScope.currentVersion =\r\n umcVersions.ACC.length > 0\r\n ? umcVersions.ACC[umcVersions.ACC.length - 1].version.trim()\r\n : umcVersions.lastEvent.length > 0\r\n ? umcVersions.lastEvent[0].version.trim()\r\n : '';\r\n if (\r\n umcVersions.lastEvent.length > 0 &&\r\n umcVersions.lastEvent[0].consentStatus !== undefined &&\r\n umcVersions.lastEvent[0].consentStatus === 'ACC'\r\n ) {\r\n vm.umcCard.status = true;\r\n vm.upgradeConsent = !!(\r\n umcVersions.ACC[umcVersions.ACC.length - 1].version.trim() <\r\n $rootScope.UniLatestVersion && vm.umcCard.status\r\n );\r\n } else if (\r\n umcVersions.lastEvent.length > 0 &&\r\n umcVersions.lastEvent[0].consentStatus !== undefined &&\r\n umcVersions.lastEvent[0].consentStatus === 'DEC'\r\n ) {\r\n vm.umcCard.status = false;\r\n } else if (\r\n umcVersions.lastEvent.length > 0 &&\r\n umcVersions.lastEvent[0].consentStatus !== undefined &&\r\n umcVersions.lastEvent[0].consentStatus === 'IGN'\r\n ) {\r\n vm.umcCard.status = false;\r\n }\r\n }\r\n\r\n function openUMC(option) {\r\n if (option === true) {\r\n if ($rootScope.newMajorVersion) {\r\n virtualPagePush(\r\n $('#hdn-UMC').attr('businessFunction'),\r\n $('#hdn-UMC').attr('headLine'),\r\n $('#hdn-UMC').attr('consentUpgradeText') +\r\n parseInt($rootScope.currentVersion),\r\n vm.on,\r\n $('#hdn-UMC').attr('consentStatusimpression'),\r\n );\r\n } else {\r\n virtualPagePush(\r\n $('#hdn-UMC').attr('businessFunction'),\r\n $('#hdn-UMC').attr('headLine'),\r\n vm.on,\r\n $('#hdn-UMC').attr('consentStatusimpression'),\r\n );\r\n }\r\n }\r\n if (option === false) {\r\n $rootScope.closeBtn = true;\r\n virtualPagePush(\r\n $('#hdn-UMC').attr('businessFunction'),\r\n $('#hdn-UMC').attr('headLine'),\r\n vm.off,\r\n $('#hdn-UMC').attr('consentStatusimpression'),\r\n );\r\n } else $rootScope.closeBtn = false;\r\n // sessionStorageService.set(assetService.storageKeys.upgradeOption, option);\r\n // modalService.umcModal();\r\n\r\n umcModalService.getUMCLatestConsent().then(\r\n result => {\r\n vm.umcModalInstance = modalService.umcModal();\r\n vm.umcModalInstance.result.then(\r\n response => {},\r\n () => {\r\n if (!$rootScope.closeBtn) {\r\n umcModalService.UMCUpdateConsent('IGN').then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n });\r\n };\r\n\r\n function load() {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n const currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.addOpt,\r\n );\r\n vm.enrolledPref = currPref;\r\n\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n currentCommunication = $scope.$parent.currComm;\r\n\r\n const umcVersions = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.umcCard,\r\n );\r\n\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n let jurisdiction = globalAccountInfo.accountSelected.jurisdiction;\r\n\r\n vm.jurisdiction = assetService.jurisdictions.abbreviation[jurisdiction];\r\n vm.jurisdiction =\r\n vm.jurisdiction === 'DEO' || vm.jurisdiction === 'DEK'\r\n ? false\r\n : vm.jurisdiction;\r\n\r\n getAccountList(globalSelectedAccount);\r\n UMCReadConsent(umcVersions);\r\n getPreferences(currPref, currentCommunication);\r\n setModels();\r\n const toastMessage = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.ohioToast,\r\n );\r\n const fromOhioChoice = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n );\r\n const PageTitle = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.businessFunction,\r\n );\r\n vm.toastData = {};\r\n if (fromOhioChoice === 'true') {\r\n $rootScope.ohioBanner = {\r\n type: '',\r\n message: '',\r\n };\r\n if (toastMessage.showToast === 'success') {\r\n vm.loadingSpinner = true;\r\n // vm.toastData.option = toastMessage.option\r\n // ? toastMessage.option\r\n // : 'success';\r\n // vm.toastData.messageOption = toastMessage.messageOption\r\n // ? toastMessage.messageOption\r\n // : 'Accepted Successfully!!';\r\n // vm.toastData.show = true;\r\n $rootScope.ohioBanner = {\r\n type: 'S',\r\n message: toastMessage.messageOption\r\n ? toastMessage.messageOption\r\n : 'Accepted Successfully!!',\r\n };\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/ohio-choice-settings/additional-options/add-communication/preference-successfully-saved',\r\n );\r\n $timeout(() => {\r\n vm.toastData.show = false;\r\n sessionStorageService.delete(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n );\r\n sessionStorageService.delete(\r\n assetService.notifPref.sessionStorage.ohioToast,\r\n );\r\n }, vm.toastTimeout);\r\n } else if (toastMessage.showToast === 'error') {\r\n // vm.toastData.option = toastMessage.option\r\n // ? toastMessage.option\r\n // : 'error';\r\n // vm.toastData.messageOption = toastMessage.messageOption\r\n // ? toastMessage.messageOption\r\n // : 'Unexpected error';\r\n // vm.toastData.show = true;\r\n $rootScope.ohioBanner = {\r\n type: 'E',\r\n message: toastMessage.messageOption\r\n ? toastMessage.messageOption\r\n : 'Unexpected error',\r\n };\r\n vm.returnCodeOH = sessionStorageService.get('readConsentCode');\r\n vm.errorMessageOH = sessionStorageService.get('readConsentMessage');\r\n pushDL(\r\n 'preferences-notifications_error',\r\n vm.returnCodeOH +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(vm.errorMessageOH) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateSupplierDetailsService}`,\r\n 'ohio-choice-settings',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/ohio-choice-settings/additional-options/' +\r\n vm.returnCodeOH +\r\n '/trouble-updating-your-changes',\r\n );\r\n\r\n sessionStorageService.delete(\r\n assetService.notifPref.sessionStorage.fromOhioChoice,\r\n );\r\n sessionStorageService.delete(\r\n assetService.notifPref.sessionStorage.ohioToast,\r\n );\r\n }\r\n }\r\n }\r\n\r\n function getAccountList(selectedAccount) {\r\n const params = {\r\n contractAccountId: selectedAccount.accountNum,\r\n };\r\n return accountSearchService.sitecore\r\n .cacheAccountSearch(params)\r\n .then(result => {\r\n if (result) {\r\n vm.ohioCardEligible = false;\r\n result.d.ReqToHResNav.results[0].HResToBp.results[0].BpToAcc.results[0].AccToProp.results.forEach(\r\n items => {\r\n items.PropToInst.results.forEach(outData => {\r\n if (outData.Division === '01') {\r\n vm.ohioCardEligible = true;\r\n vm.ohioUser =\r\n selectedAccount.jurisdiction === 'OH01' &&\r\n vm.ohioCardEligible;\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.isOhio,\r\n vm.ohioUser,\r\n );\r\n });\r\n },\r\n );\r\n }\r\n });\r\n }\r\n /* Initialization */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n\r\n function initGatConstants(businessFunction, addedSpec, enrlPrchs) {\r\n vm.gatConstants.businessFunction = businessFunction;\r\n vm.gatConstants.addedSpec = addedSpec;\r\n vm.gatConstants.enrlPrchs = enrlPrchs;\r\n }\r\n\r\n function sendEditAdditionalOptions(notifId, concatEdit, madeChanges) {\r\n $rootScope.optionsBanner = {};\r\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\r\n let param = {\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: concatEdit,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n };\r\n vm.buttonClicked = concatEdit;\r\n if (concatEdit === 'Update') {\r\n param.buttonText = 'edit';\r\n param.addedSpec = concatEdit;\r\n $rootScope.optionsError = true;\r\n }\r\n if (concatEdit === 'Save') {\r\n $rootScope.updateError = false;\r\n }\r\n //notificationHelper.sendEventAttribute(param);\r\n } else {\r\n let i = 0;\r\n vm.showError[notifId] = [];\r\n const newData = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n newData.notifications.forEach(x => {\r\n if (\r\n (x.communicationText == 'Send My Communication To' ||\r\n x.communicationText == 'Add New Email') &&\r\n x.communication == 'Send My Communication To' &&\r\n x.channelText != 'Method'\r\n ) {\r\n inlineVPV(notifId, x.channelText);\r\n }\r\n });\r\n\r\n newData.notifications.forEach(x => {\r\n vm.showError[notifId].push(x.classError);\r\n i += 1;\r\n });\r\n vm.clickedSave[notifId] = true;\r\n }\r\n }\r\n\r\n function sendAddNotification(notifId, action) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n\r\n function sendDelete(notifId, channelTxt, label) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n\r\n function indexToCardTitle(notifId) {\r\n let titleTxt = '';\r\n switch (notifId) {\r\n case 'ENRL_PRCHS':\r\n return vm.gatConstants.enrlPrchs;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n }\r\n\r\n function sendAdditionalOptions(notifId, flagToggle) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n\r\n function sendNotification(stringToConcat) {\r\n let vpvName =\r\n '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\r\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\r\n $rootScope.virtualPagePush('fire-vpv', vpvName);\r\n }\r\n\r\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\r\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\r\n return stringBase.concat(stringToConcat);\r\n }\r\n\r\n function sendEditPayments(index, concatEdit) {\r\n const outage = {\r\n 'event-category': 'notification_preferences',\r\n 'event-action': 'edit',\r\n 'event-label': 'additional-options-|-',\r\n event: 'fire-event',\r\n };\r\n outage['event-action'] = outage['event-action'].concat(concatEdit);\r\n outage['event-label'] =\r\n index === 1\r\n ? outage['event-label'].concat('unlock-additional-options')\r\n : outage['event-label'].concat('ohio-customer-choice');\r\n //dataLayer.push(outage);\r\n }\r\n function closeToast() {\r\n vm.toastData.show = '';\r\n }\r\n function getSuccessMessage(index) {\r\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n var titleTxt = '';\r\n switch(index){\r\n case 0:\r\n titleTxt = 'Enrollments and Purchases';\r\n break;\r\n default: titleTxt = 'Item';\r\n }\r\n return \"Success! \" + titleTxt + \" saved successfully!\"; */\r\n return 'Success! Changes saved.';\r\n }\r\n function isIdentical(notifId) {\r\n const enteredPairs = getPairs(vm.notificationPreferences, notifId);\r\n const currentPairs = getPairs(vm.cardsModel, notifId);\r\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\r\n }\r\n function getPairs(comms, notifId) {\r\n const copy = genericHelperService.notReferencesArrayObjects(\r\n comms.filter(x => x.id === notifId)[0].notifications,\r\n );\r\n return copy\r\n .sort((a, b) => {\r\n if (a.channel !== b.channel) {\r\n // order by channel, then by communication\r\n return a.channel.localeCompare(b.channel);\r\n }\r\n return a.communication.localeCompare(b.communication);\r\n })\r\n .map(x => ({\r\n channel: x.channel,\r\n communication: x.communication,\r\n }));\r\n }\r\n function isUnique() {\r\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n );\r\n vm.isDuplicate = vm.currentNotifModal.disableSave;\r\n\r\n //To check for duplicate emails, length > 64\r\n if (vm.currentNotifModal.type == 'emails') {\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n let defaultItem = vm.communicationOptions.emails.filter(function(itm) {\r\n return itm.text === vm.modalInputValue;\r\n });\r\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\r\n }\r\n }\r\n function gatNewComm(action, label, verify) {\r\n if (verify) {\r\n vm.isvalidSubmit = false;\r\n } else {\r\n vm.isvalidSubmit = true;\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatActiveCard,\r\n subheadline: label,\r\n });\r\n }\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n}\r\n","app.controller('BillingPreferencesController', BillingPreferencesController);\r\nBillingPreferencesController.$inject = [\r\n '$log',\r\n 'genericHelperService',\r\n 'NotificationPreferencesHelperService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'ebillEnrollKubraService',\r\n 'deEnrollFromProgramService',\r\n 'commonService',\r\n 'apiApigeeConfigService',\r\n '$scope',\r\n '$rootScope',\r\n 'createPreferencesService',\r\n 'notificationPreferencesAssetsService',\r\n '$timeout',\r\n '$window',\r\n 'modalService',\r\n 'readAndDerivePreferencesService',\r\n 'getProductRecommendationsCAREService',\r\n 'careFeedbackService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n '$document',\r\n];\r\n\r\nfunction BillingPreferencesController(\r\n $log,\r\n genericHelperService,\r\n notificationHelper,\r\n assetService,\r\n sessionStorageService,\r\n ebillEnrollKubraService,\r\n deEnrollFromProgramService,\r\n commonService,\r\n apiApigeeConfigService,\r\n $scope,\r\n $rootScope,\r\n createPreferencesService,\r\n notificationPreferencesAssetsService,\r\n $timeout,\r\n $window,\r\n modalService,\r\n readAndDerivePreferencesService,\r\n getProductRecommendationsCAREService,\r\n careFeedbackService,\r\n commongaTaggingService,\r\n broadcastService,\r\n $document,\r\n) {\r\n /* Global Vars */\r\n\r\n const vm = this;\r\n const _strings = notificationPreferencesAssetsService.strings;\r\n const _active = _strings.active;\r\n const _serviceName = _strings.programs.ELBILL;\r\n const _success = assetService.strings.SUCCESS;\r\n let paramData = {};\r\n let currentCommunication = {};\r\n let paperlessInfo = {};\r\n let model;\r\n let extra;\r\n let _paramDataToEnrollPB;\r\n let cardName = '';\r\n\r\n /* Scope Vars */\r\n vm.jurisdiction = '';\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n vm.cardsModel = [];\r\n vm.chan_opt = [];\r\n vm.comm_opt = [];\r\n vm.channelItemsDDList = null;\r\n vm.preferencesReady = false;\r\n vm.notificationPreferences = null;\r\n vm.emailToDelete = null;\r\n vm.phoneToDelete = null;\r\n vm.showToast = false;\r\n vm.notificationToConfirm = null;\r\n vm.showLoader = {};\r\n vm.showModalLoader = false;\r\n vm.notificationDropdowns = {\r\n BILL_DEL: {\r\n channel: [],\r\n communication: [],\r\n },\r\n BILL_NOTIF: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PMT_RMDR: {\r\n channel: [],\r\n communication: [],\r\n },\r\n APP_SCHED: {\r\n channel: [],\r\n communication: [],\r\n },\r\n APP_UPDT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PMT_UPDT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n RATE_REVW: {\r\n channel: [],\r\n communication: [],\r\n },\r\n BILLPRINT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PREPAY: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PPY_AUTO: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PAY_CONFRM: {\r\n channel: [],\r\n communication: [],\r\n },\r\n };\r\n vm.lowBalanceDays = new Array(10);\r\n vm.lowBalanceDaysBackup = new Array(10);\r\n vm.currentNotifModal = {\r\n title: '',\r\n type: '',\r\n notifIdModal: '',\r\n channelIdModal: null,\r\n enrolledStatus: false,\r\n disableSave: true,\r\n };\r\n vm.paperlessBilling = {\r\n isEligible: false,\r\n realStatus: false,\r\n };\r\n vm.isPaperlesBilling = '';\r\n vm.toastData = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n workFlow: 'toast notification',\r\n };\r\n vm.defaultEmail = '';\r\n vm.primaryEmail = '';\r\n vm.gatConstants = {};\r\n vm.gatActiveCard = '';\r\n vm.modalValue = '';\r\n vm.isvalidSubmit = false;\r\n vm.isDuplicate = false;\r\n vm.clickedSave = {};\r\n vm.showError = {};\r\n vm.disablePaperlessEnroll = false;\r\n vm.toggleClicked = false;\r\n vm.toggleClickedCopy = false;\r\n vm.errorDelete = false;\r\n vm.errorCode = '';\r\n vm.errorMessage = '';\r\n vm.flag = true;\r\n vm.paperlessCTA = '';\r\n vm.typeError = false;\r\n\r\n /* Function Declarations */\r\n vm.inlineVPV = inlineVPV;\r\n vm.addCommVPV = addCommVPV;\r\n vm.errorModalVPV = errorModalVPV;\r\n vm.getLowBalanceDaysText = getLowBalanceDaysText;\r\n vm.cancelChange = cancelChange;\r\n vm.checkPlaceholder = checkPlaceholder;\r\n vm.deleteNotification = deleteNotification;\r\n vm.addNotification = addNotification;\r\n vm.dropChannel = dropChannel;\r\n vm.dropCommunication = dropCommunication;\r\n vm.cancelChanges = cancelChanges;\r\n vm.saveChanges = saveChanges;\r\n vm.continueSaveChanges = continueSaveChanges;\r\n vm.changeFormatDetailed = changeFormatDetailed;\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.pdfBill = pdfBill;\r\n //vm.handlePaperlessEnrollment = handlePaperlessEnrollment;\r\n vm.saveNewCommunication = saveNewCommunication;\r\n vm.handleEnrollment = handleEnrollment;\r\n vm.cancelModal = cancelModal;\r\n vm.cancelModalDelete = cancelModalDelete;\r\n vm.dayAlert = dayAlert;\r\n vm.sendNotification = sendNotification;\r\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\r\n vm.sendBilling = sendBilling;\r\n vm.sendEditBilling = sendEditBilling;\r\n vm.checkboxSave = checkboxSave;\r\n vm.phonesTypes = [];\r\n let _paramDataToEnroll = {};\r\n let _paramDataToUpdate = {};\r\n vm.checkedPDFOption = false;\r\n vm.closeToast = closeToast;\r\n vm.getSuccessMessage = getSuccessMessage;\r\n vm.disableSave = {};\r\n let labelflag = false;\r\n vm.checkedPDF = false;\r\n vm.enrollmodal = enrollmodal;\r\n vm.getData = {};\r\n vm.isIdentical = isIdentical;\r\n vm.isUnique = isUnique;\r\n vm.indexToCardTitle = indexToCardTitle;\r\n vm.initGatConstants = initGatConstants;\r\n vm.recordRadioGatAction = recordRadioGatAction;\r\n vm.gatNewComm = gatNewComm;\r\n vm.gatContinuePaperless = gatContinuePaperless;\r\n vm.sendAddNotification = sendAddNotification;\r\n vm.sendDelete = sendDelete;\r\n vm.sendToastEvents = sendToastEvents;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.gatRRLearnMore = gatRRLearnMore;\r\n vm.communicationVal = communicationVal;\r\n //vm.resetAddCommunicationModalForm = resetAddCommunicationModalForm;\r\n vm.callReadandDeriveService = callReadandDeriveService;\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n\r\n $scope.$on(assetService.events.addNewCommunication, (event, data) => {\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n data,\r\n vm.notificationPreferences,\r\n );\r\n newNotif.loadingChanges = false;\r\n\r\n notificationHelper.updateNotif(\r\n data,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n vm.notificationPreferences,\r\n );\r\n\r\n $scope.$parent.currComm = vm.communicationOptions;\r\n\r\n prepaidChanels();\r\n });\r\n\r\n /* Function Definitions */\r\n function getLowBalanceDaysText() {\r\n var text = '';\r\n\r\n if (vm.lowBalanceDays) {\r\n text = vm.lowBalanceDays\r\n .map((e, i) => (e ? i + 1 : undefined))\r\n .filter(e => e)\r\n .join(', ')\r\n .replace(/,(?!.*,)/gim, ' and');\r\n }\r\n\r\n if (text.length > 0)\r\n text =\r\n 'Additionally, you are receiving alerts for ' +\r\n text +\r\n ' days remaining.';\r\n\r\n return text;\r\n }\r\n\r\n //GAT for ADD/DELETE COMMUNICATION\r\n function gatAddDeleteEvent(notifId, newData, oldData) {\r\n let indexNew = newData.findIndex(x => x.id == notifId);\r\n let lenOld = 0;\r\n let indexOld = '';\r\n if (oldData != undefined) {\r\n indexOld = oldData.findIndex(x => x.id == notifId);\r\n }\r\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\r\n lenOld = Object.keys(oldData[indexOld].notifications).length;\r\n }\r\n let cardName = subheadline(notifId);\r\n let count = 0;\r\n let newValue = '';\r\n let type = '';\r\n if (lenOld == 0 && notifId != 'BILL_DEL') {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n type =\r\n notifNew.channel == 'TXT'\r\n ? 'text'\r\n : notifNew.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n });\r\n } else {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n type = 'email';\r\n newValue = notifNew.communicationText;\r\n }\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n (newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n count = 1;\r\n }\r\n });\r\n if (count == 0) {\r\n if (notifId == 'BILL_DEL') {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n }\r\n count = 0;\r\n });\r\n }\r\n\r\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\r\n let counter = 0,\r\n deleteFlag = false;\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n newValue = notifNew.communicationText;\r\n }\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n ((notifOld.communicationText != undefined &&\r\n notifOld.communicationText == 'Add New Email') ||\r\n newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n counter = 1;\r\n }\r\n });\r\n if (counter == 0) {\r\n deleteFlag = true;\r\n type =\r\n notifOld.channel == 'TXT'\r\n ? 'text'\r\n : notifOld.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n if (notifId == 'BILL_DEL') {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete',\r\n type,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n }\r\n counter = 0;\r\n });\r\n\r\n if (deleteFlag && vm.errorDelete) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/delete-success',\r\n );\r\n }\r\n }\r\n\r\n if (notifId == 'BILL_DEL') {\r\n if (vm.notificationPreferences[0].checkedPDFOption === true) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/billing-payment/add-communication/preference-successfully-saved/pdf-yes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/billing-payment/add-communication/preference-successfully-saved/pdf-no',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function subheadline(notifId) {\r\n if (notifId == 'BILL_DEL') {\r\n return 'paperless-billing';\r\n } else if (notifId == 'BILL_NOTIF') {\r\n return 'billing-notifications';\r\n } else if (notifId == 'PAY_CONFRM') {\r\n return 'payment-confirmation';\r\n } else if (notifId == 'PMT_UPDT') {\r\n return 'paperless-payment-updates';\r\n } else if (notifId == 'PREPAY') {\r\n return 'low-balance-alerts';\r\n } else if (notifId == 'PPY_AUTO') {\r\n return 'auto-reload';\r\n } else if (notifId == 'BILLPRINT') {\r\n return 'bill-format';\r\n }\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n });\r\n };\r\n\r\n function prepaidChanels() {\r\n if ($scope.$parent.isPrepaid) {\r\n const keyList = Object.keys(vm.notificationDropdowns);\r\n\r\n keyList.forEach(notifsId => {\r\n for (\r\n let index = 0;\r\n index < vm.notificationDropdowns[notifsId].channel.length;\r\n index++\r\n ) {\r\n if (notifsId !== 'BILL_NOTIF') {\r\n vm.notificationDropdowns[notifsId].channel[index] =\r\n assetService.notifPref.prepaidChanels;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n function dropChannel(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function errorModalVPV(\r\n type,\r\n req,\r\n duplicate,\r\n pattern,\r\n phoneType,\r\n phoneInvalid,\r\n ) {\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n let cardName = subheadline(notifId);\r\n if (req) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-an-email',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (duplicate) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-email-address-already-exists',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-phone-number-already-exists',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (pattern && type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-a-valid-email',\r\n cardName,\r\n );\r\n }\r\n if (phoneType && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-type-|-please-select-a-phone-type',\r\n cardName,\r\n );\r\n }\r\n if (phoneInvalid && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-valid-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n\r\n function inlineVPV(notifId, channel) {\r\n let cardName = subheadline(notifId);\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n channel.toLowerCase() + '-|-please-select-a-communication',\r\n cardName,\r\n );\r\n }\r\n\r\n function addCommVPV(notifId) {\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const prepaid = globalAccountInfo.accountSelected.prepaid;\r\n var tempData = '';\r\n if (prepaid === true) {\r\n tempData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n } else {\r\n tempData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.updatePreferencesave,\r\n );\r\n }\r\n let index = tempData.findIndex(x => x.id == notifId);\r\n let len = Object.keys(tempData[index].notifications).length;\r\n let cardName = subheadline(notifId);\r\n if (\r\n (notifId == 'BILL_DEL' && len > 0 && len < 10) ||\r\n (notifId == 'BILLPRINT' && len > 3) ||\r\n (notifId != 'BILL_DEL' && notifId != 'BILLPRINT' && len < 10)\r\n ) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/add-communication',\r\n );\r\n }\r\n }\r\n\r\n function dropCommunication(model, extra) {\r\n const data = vm.notificationPreferences;\r\n const divId = extra.search('/');\r\n const notifId = extra.substr(0, divId);\r\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\r\n const addNew = notificationHelper.communicationChange(\r\n model,\r\n extra,\r\n vm.currentNotifModal,\r\n data,\r\n );\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.id === notifId) {\r\n cards.notifications[vm.indexNumb].communicationText = model.text;\r\n }\r\n });\r\n\r\n if (model.text !== '') {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n } else vm.disableSave[notifId] = true;\r\n\r\n if (notifId === _strings.preferences.PMT_RMDR) {\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n\r\n if (!vm.disableSave[notifId])\r\n vm.disableSave[notifId] = !(\r\n newNotif.subThersholdvarModel || newNotif.subThersholdvar\r\n );\r\n else\r\n vm.disableSave[notifId] =\r\n newNotif.subThersholdvarModel === newNotif.subThersholdvar;\r\n\r\n newNotif.subThersholdvar = newNotif.subThersholdvarModel\r\n ? newNotif.subThersholdvarModel\r\n : newNotif.subThersholdvar;\r\n newNotif.subThersholdvarText = `${newNotif.subThersholdvar} ${_strings.Days}`;\r\n }\r\n\r\n if (addNew) {\r\n if (extra.split('/')[0] === 'BILL_NOTIF' || vm.modelSelected === 'TXT') {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypesMobile,\r\n null,\r\n null,\r\n );\r\n } else {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n }\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n newNotif.cardError = true;\r\n vm.modalForm.$setUntouched();\r\n vm.currentNotifModal.communicationModel = '';\r\n vm.showModalLoader = false;\r\n vm.isDuplicate = false;\r\n vm.typeError = false;\r\n angular.element('#BillingAddNewCommunicationModal').modal('show');\r\n\r\n $('#AddCommunication').val('');\r\n\r\n vm.gatActiveCard = vm.indexToCardTitle(notifId);\r\n\r\n let cardName = subheadline(notifId);\r\n if (model.text != 'Add New Phone Number') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/add-communication/add-new-email',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/add-communication/add-new-phone-number',\r\n );\r\n }\r\n }\r\n }\r\n\r\n // function resetAddCommunicationModalForm(modalForm){\r\n // modalForm.$setUntouched();\r\n // }\r\n\r\n function saveNewCommunication(saveChanges, button) {\r\n vm.typeError = false;\r\n if (button === 'Cancel') {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n const data = vm.notificationPreferences;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n notificationHelper\r\n .resetChanges(notifId, data, vm.currentNotifModal)\r\n .then(() => {\r\n return;\r\n });\r\n } else {\r\n saveChanges = vm.isvalidSubmit;\r\n saveChanges == true\r\n ? (vm.showModalLoader = true)\r\n : (vm.showModalLoader = false);\r\n vm.modalForm.AddCommunication.$touched = true;\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n const data = vm.notificationPreferences;\r\n\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n vm.modalValue = vm.currentNotifModal.communicationModel\r\n ? vm.currentNotifModal.communicationModel\r\n : '';\r\n\r\n if (\r\n vm.modalForm.AddCommunication.$error.email &&\r\n vm.currentNotifModal.communicationModel == undefined\r\n ) {\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n\r\n if (\r\n vm.currentNotifModal.communicationModel != '' &&\r\n vm.currentNotifModal.phoneType == undefined\r\n ) {\r\n vm.typeError = true;\r\n }\r\n if (saveChanges) {\r\n notificationHelper\r\n .createNewCommunication(\r\n saveChanges,\r\n notifId,\r\n data,\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n )\r\n .then(result => {\r\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\r\n if (\r\n $rootScope.emailErrorModal !== true &&\r\n $rootScope.phoneErrorModal !== true &&\r\n saveChanges !== false\r\n ) {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n } else {\r\n if (result === undefined) {\r\n saveNewCommunication(false, 'Cancel');\r\n }\r\n vm.showModalLoader = false;\r\n $('#AddCommunication').val(vm.modalInputValue);\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n });\r\n }\r\n if (saveChanges === true) {\r\n vm.disableSave[notifId] = false;\r\n } else {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n }\r\n\r\n if (saveChanges === true) {\r\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );*/\r\n }\r\n }\r\n }\r\n\r\n function changeFormatDetailed(notifId, typeOption, gatAction, gatCard) {\r\n vm.recordRadioGatAction(gatAction, gatCard);\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.cardsModel,\r\n );\r\n\r\n if (typeOption === _strings.rr)\r\n newNotif.optoutEdit =\r\n newNotif.rateReviewType !== currentNotif.rateReviewType;\r\n else\r\n newNotif.optoutEdit =\r\n newNotif.billFormatType !== currentNotif.billFormatType;\r\n\r\n if (\r\n notifId ===\r\n _strings.preferences\r\n .BILLPRINT /*||\r\n notifId === _strings.preferences.RATE_REVW*/\r\n )\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n }\r\n\r\n function checkboxSave() {\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n\r\n _paramDataToUpdate = {\r\n action: _strings.ENROLL,\r\n groupId: assetService.notifPref.SUBGROUPIDS.PAPERLESS,\r\n id: assetService.notifPref.SUBIDS.BILL_DEL,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n reqby: accountData.globalSelectedAccountEmail,\r\n contractAccountId: accountData.contractAccountId,\r\n created: [\r\n {\r\n channel: vm.checkedPDFOption\r\n ? assetService.notifPref.COMM_MEDIUMS.EBLP\r\n : assetService.notifPref.COMM_MEDIUMS.EBIL,\r\n },\r\n ],\r\n };\r\n\r\n const promiseE = [savePaperlessChanges()];\r\n commonService.executePromises(promiseE).then(() => {\r\n vm.paperlessBilling.status = vm.successEnrollRes;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n vm.paperlessBilling.status,\r\n );\r\n });\r\n }\r\n\r\n function savePaperlessChanges() {\r\n return createPreferencesService.sitecore\r\n .createPreferences(_paramDataToUpdate)\r\n .then(result => {\r\n //vm.paperlessBilling.status = true;\r\n //vm.successEnrollRes = true; // Setted true manually because for the moment, the response is not giving the value to validate.\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n });\r\n }\r\n function pdfBill(notifId, checkboxPDF) {\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.cardsModel,\r\n );\r\n newNotif.optoutEdit =\r\n currentNotif.checkedPDFOption !== newNotif.checkedPDFOption;\r\n labelflag = checkboxPDF;\r\n vm.checkedPDFOption = checkboxPDF;\r\n\r\n if (vm.disableSave[notifId] === false) {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n } else if (currentNotif.checkedPDFOption === newNotif.checkedPDFOption) {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n } else {\r\n vm.disableSave[notifId] = false;\r\n }\r\n // if(vm.bannerData !== null){\r\n // vm.bannerData[notifId].checkbox = checkboxPDF;\r\n // sessionStorageService.set('Preferences_BannerData', vm.bannerData);\r\n // }\r\n }\r\n\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function cancelModal() {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function cancelModalDelete() {\r\n angular.element('#ModalNotificationPreferenceDeleteChanel').modal('hide');\r\n }\r\n function ebillEnrollKubra(data, status) {\r\n // if(impDetails != null) {\r\n // showPaperlessUnauthorizedMessage();\r\n // return null;\r\n // }\r\n\r\n return ebillEnrollKubraService.sitecore.ebillEnrollment(data).then(\r\n result => {\r\n if (\r\n result.d.ContractAccounts.results[0].Messages.ReplyCode === _success\r\n ) {\r\n if (!status) {\r\n vm.showLoader['BILL_DEL'] = false;\r\n $rootScope.billingBanner['BILL_DEL'] = {\r\n type: 'S',\r\n message: '',\r\n };\r\n // vm.toastData.option = 'success';\r\n // vm.toastData.messageOption = vm.getSuccessMessage(0);\r\n // vm.toastData.show = true;\r\n // $timeout(() => {\r\n // vm.toastData.show = false;\r\n // }, 6000);\r\n vm.paperlessBilling.realStatus = true;\r\n //sendToastEvents('BILL_DEL');\r\n } else {\r\n vm.paperlessBilling.realStatus = false;\r\n }\r\n vm.paperlessBilling.status = !status;\r\n } else if (\r\n result.d.ContractAccounts.results[0].Messages.ReplyCode !== _success\r\n ) {\r\n vm.PaperlessEnrollmentFailed = true;\r\n vm.errorCode =\r\n result.d.ContractAccounts.results[0].Messages.MessageNum;\r\n vm.errorMessage =\r\n result.d.ContractAccounts.results[0].Messages.Message;\r\n\r\n vm.errorCode =\r\n vm.errorCode == '' || vm.errorCode == null ? 'NA' : vm.errorCode;\r\n vm.errorMessage =\r\n vm.errorMessage == '' || vm.errorMessage == null\r\n ? 'NA'\r\n : vm.errorMessage;\r\n\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n\r\n if (notifId === 'BILL_DEL') {\r\n if ($rootScope.paperlessSaveErrorCount < 2) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' +\r\n vm.errorCode +\r\n '/trouble-saving-your-changes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' +\r\n vm.errorCode +\r\n '/cannot-save-your-changes-right-now',\r\n );\r\n }\r\n pushDL(\r\n 'preferences-notifications_error',\r\n vm.errorCode +\r\n '-|-' +\r\n vm.errorMessage +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.ebillEnrollmentUrl}`,\r\n 'paperless-billing',\r\n );\r\n }\r\n }\r\n },\r\n error => {\r\n if (error != undefined) {\r\n $.growl.error({ message: error.message });\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.preferenceFlag,\r\n false,\r\n );\r\n vm.PaperlessEnrollmentFailed = true;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n\r\n if (notifId === 'BILL_DEL') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.ebillEnrollmentUrl}`,\r\n 'paperless-billing',\r\n );\r\n }\r\n },\r\n );\r\n }\r\n\r\n function handleEnrollment(enrolledStatus, notifId) {\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n let dtaUsers = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n let user = dtaUsers.accounts.find(\r\n data => data.value === accountData.contractAccountId,\r\n );\r\n //vm.notificationDropdowns[notifId].channel = [];\r\n vm.notificationDropdowns[notifId].communication = [];\r\n\r\n const status = sessionStorageService.get(\r\n assetService.storageKeys.preferenceFlag,\r\n );\r\n\r\n vm.flag = status ? true : false;\r\n\r\n if (enrolledStatus) {\r\n if (vm.isPaperlesBilling) {\r\n vm.paperlessBilling.status = true;\r\n if (!vm.PaperlessEnrollmentFailed && vm.flag) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/paperless-billing/billing-payment/save',\r\n );\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.preferenceFlag,\r\n true,\r\n );\r\n vm.flag = true;\r\n }\r\n }\r\n if (vm.currentNotifModal.notifIdModal != 'BILL_DEL') {\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/add-communication',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/save',\r\n );\r\n }\r\n\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n vm.currentNotifModal.notifIdModal,\r\n vm.notificationPreferences,\r\n );\r\n if (vm.currentNotifModal.notifIdModal === _strings.preferences.PMT_RMDR) {\r\n newNotif.subThersholdvarModel = '3';\r\n newNotif.subThersholdvar = newNotif.subThersholdvarModel\r\n ? newNotif.subThersholdvarModel\r\n : newNotif.subThersholdvar;\r\n newNotif.subThersholdvarText = `${newNotif.subThersholdvar} ${_strings.Days}`;\r\n }\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n\r\n notificationHelper.enrolledNotif(\r\n vm.currentNotifModal.notifIdModal,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n vm.floridaUser,\r\n );\r\n if (\r\n vm.notificationDropdowns[vm.currentNotifModal.notifIdModal].channel[0]\r\n .length === 1\r\n ) {\r\n model = {\r\n value:\r\n vm.notificationDropdowns[vm.currentNotifModal.notifIdModal]\r\n .channel[0][0].value,\r\n };\r\n extra = `${vm.currentNotifModal.notifIdModal}/${0}`;\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n\r\n if (\r\n /*vm.currentNotifModal.notifIdModal === _strings.preferences.RATE_REVW ||*/\r\n vm.currentNotifModal.notifIdModal === _strings.preferences.BILLPRINT\r\n ) {\r\n let currentNotifModalIndex = vm.notificationPreferences.findIndex(\r\n x => x.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n saveChanges(vm.currentNotifModal.notifIdModal, currentNotifModalIndex);\r\n }\r\n } else if (!enrolledStatus) {\r\n if (vm.isPaperlesBilling) {\r\n _paramDataToEnrollPB = {\r\n action: assetService.strings.UNENROLL,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n emailId: vm.emailAccount.EmailAddress,\r\n contractAccount: accountData.contractAccountId,\r\n };\r\n vm.paperlessStatus = true;\r\n ebillEnrollKubra(_paramDataToEnrollPB, vm.paperlessStatus).then(() => {\r\n //setPaperlessStatus();\r\n if (vm.PaperlessEnrollmentFailed) {\r\n vm.showLoader['BILL_DEL'] = false;\r\n $rootScope.billingBanner['BILL_DEL'] = {\r\n type: 'E',\r\n message: 'Enrollment cannot be completed at this time.',\r\n };\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption =\r\n // 'Enrollment cannot be completed at this time.';\r\n // vm.toastData.show = true;\r\n //sendToastEvents('BILL_DEL');\r\n _paramDataToEnrollPB = {\r\n action: assetService.strings.UNENROLL,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n emailId: vm.emailAccount.EmailAddress,\r\n contractAccount: accountData.contractAccountId,\r\n };\r\n } else {\r\n setPaperlessStatusUnEnroll();\r\n\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n let cardName = subheadline(notifId);\r\n let flag = enrolledStatus ? 'on' : 'off';\r\n\r\n if (flag === 'off') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/billing-payment/toggle/off',\r\n );\r\n }\r\n\r\n if (flag === 'on') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/billing-payment/save',\r\n );\r\n }\r\n\r\n vm.paperlessBilling.status = false;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n angular\r\n .element('#ModalManageNotificationPreferenceChange')\r\n .modal('hide');\r\n let currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n\r\n currPref.forEach(notif => {\r\n if (\r\n vm.paperlessBilling.isEligible &&\r\n (notif.id === _strings.preferences.PMT_RMDR ||\r\n notif.id === _strings.preferences.PMT_UPDT)\r\n ) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n });\r\n let newData = _.find(\r\n vm.notificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n vm.notificationPreferences,\r\n currentData,\r\n currentCommunication,\r\n );\r\n vm.checkedPDFOption = false;\r\n newData.enrolled = false;\r\n angular\r\n .element('#ModalManageNotificationPreferenceChange')\r\n .modal('hide');\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n });\r\n } else {\r\n const tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences));\r\n let newData = _.find(\r\n tempNotificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.notifications = [];\r\n newData.enrolled = false;\r\n const currentData = vm.cardsModel;\r\n notificationHelper\r\n .saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n tempNotificationPreferences,\r\n currentData,\r\n currentCommunication,\r\n )\r\n .then(result => {\r\n if (\r\n result[0]?.ReturnCodes &&\r\n result[0]?.ReturnCodes[0]?.ReturnCode1?.Type === 'E'\r\n ) {\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\r\n let showType = result[0].ReturnCodes[0].ReturnCode1?.Type;\r\n let returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum;\r\n let prefError = result[0].ReturnCodes[0].ReturnCode1?.Message;\r\n $rootScope.billingBanner[vm.currentNotifModal.notifIdModal] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n $rootScope.billingError = true;\r\n generateGATEvents(\r\n vm.currentNotifModal.notifIdModal,\r\n showType,\r\n returnCode,\r\n prefError,\r\n );\r\n broadcastService.refreshPreferences();\r\n } else {\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/billing-payment/off',\r\n );\r\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n vm.notificationPreferences = tempNotificationPreferences;\r\n newData.enrolled = false;\r\n angular\r\n .element('#ModalManageNotificationPreferenceChange')\r\n .modal('hide');\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n broadcastService.refreshPreferences();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n function enrolledNotif(notifId, enrolledStatus, title) {\r\n // if(impDetails != null) {\r\n // showPaperlessUnauthorizedMessage();\r\n // return false;\r\n // }\r\n vm.clickedSave[notifId] = false;\r\n vm.isPaperlesBilling = notifId === _strings.preferences.BILL_DEL;\r\n if (vm.isPaperlesBilling && vm.toggleClicked) {\r\n vm.toggleClickedCopy = vm.toggleClicked;\r\n vm.paperlessCTA = 'Save';\r\n vm.toggleClicked = false;\r\n vm.paperlessBilling.status = false;\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/paperless-billing/billing-payment/toggle/off',\r\n );\r\n vm.cancelChanges('BILL_DEL');\r\n return;\r\n }\r\n if (vm.isPaperlesBilling && !vm.toggleClicked) {\r\n vm.paperlessCTA = 'Update';\r\n }\r\n if (vm.isPaperlesBilling && !vm.paperlessBilling.status) {\r\n vm.toggleClicked = true;\r\n vm.toggleClickedCopy = false;\r\n vm.paperlessCTA = 'Save';\r\n }\r\n vm.currentNotifModal.notifIdModal = notifId;\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.currentNotifModal.title = title;\r\n vm.handleEnrollment(\r\n vm.currentNotifModal.enrolledStatus,\r\n vm.currentNotifModal.notifIdModal,\r\n );\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function setModels() {\r\n const data = vm.notificationPreferences;\r\n vm.preferencesReady = true;\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.id === _strings.preferences.PREPAY) {\r\n cards.remainingDays.sort((a, b) => a - b);\r\n cards.remainingDays.forEach(days => {\r\n vm.lowBalanceDays[days - 1] = true;\r\n });\r\n }\r\n if (cards.id === _strings.preferences.PMT_RMDR) {\r\n cards.subThersholdvarDropdown =\r\n assetService.notifPref.subThersholdvarDropdown;\r\n }\r\n if (cards.notifications) {\r\n notificationHelper.setNotifications(\r\n cards.id,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n } else {\r\n cards.deleted = 10;\r\n cards.notifications = [];\r\n }\r\n vm.clickedSave[cards.id] = false;\r\n vm.showError[cards.id] = [];\r\n vm.showLoader[cards.id] = false;\r\n });\r\n notificationHelper.setCommunicationValue(\r\n vm.cardsModel,\r\n vm.notificationPreferences,\r\n vm.communicationOptions,\r\n );\r\n prepaidChanels();\r\n }\r\n\r\n function addNotification(notifId) {\r\n //TO-DO: Refactor\r\n const data = vm.notificationPreferences;\r\n const { phones } = vm.communicationOptions;\r\n\r\n notificationHelper.addNotification(\r\n notifId,\r\n phones,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n var notifPos = newNotif.notifications.length - 1;\r\n if (vm.notificationDropdowns[notifId].channel[notifPos].length === 1) {\r\n model = {\r\n value: vm.notificationDropdowns[notifId].channel[notifPos][0].value,\r\n };\r\n extra = `${notifId}/${notifPos}`;\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n prepaidChanels();\r\n }\r\n\r\n function cancelChanges(notifId) {\r\n vm.clickedSave[notifId] = false;\r\n vm.showError[notifId] = [];\r\n if (notifId === 'BILL_DEL') {\r\n //Reset PDF checkbox\r\n vm.notificationPreferences.filter(\r\n x => x.id === 'BILL_DEL',\r\n )[0].checkedPDFOption = vm.cardsModel.filter(\r\n x => x.id === 'BILL_DEL',\r\n )[0].checkedPDFOption;\r\n //resetCheckbox value\r\n vm.checkedPDFOption = vm.cardsModel.filter(\r\n x => x.id === 'BILL_DEL',\r\n )[0].checkedPDFOption;\r\n //reset banner\r\n if ($rootScope.paperlessSaveErrorCount) {\r\n $rootScope.paperlessSaveErrorCount = 0;\r\n }\r\n vm.toggleClicked = false;\r\n if (!vm.toggleClickedCopy) {\r\n vm.toggleClickedCopy = false;\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/clickthrough/paperless-billing/billing-payment/cancel',\r\n );\r\n }\r\n } else if (notifId === 'BILLPRINT') {\r\n //and bill format radio\r\n vm.notificationPreferences.filter(\r\n x => x.id === 'BILLPRINT',\r\n )[0].billFormatType = vm.cardsModel.filter(\r\n x => x.id === 'BILLPRINT',\r\n )[0].billFormatType;\r\n } /*else if (notifId === 'RATE_REVW') {\r\n vm.notificationPreferences.filter(\r\n x => x.id === 'RATE_REVW',\r\n )[0].rateReviewType = vm.cardsModel.filter(\r\n x => x.id === 'RATE_REVW',\r\n )[0].rateReviewType;\r\n }*/\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n\r\n if (notifId != 'BILL_DEL') {\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/clickthrough/' +\r\n cardName +\r\n '/billing-payment/cancel',\r\n );\r\n }\r\n\r\n notificationHelper.cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n\r\n if (data[0].enrolled === false) {\r\n vm.paperlessBilling.status = false;\r\n }\r\n\r\n if ($scope.$parent.isPrepaid) {\r\n vm.lowBalanceDays = vm.lowBalanceDaysBackup.slice();\r\n }\r\n }\r\n\r\n function continueSaveChanges() {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n angular.element('#ModalNotificationPreferenceDeleteChanel').modal('hide');\r\n notificationHelper.saveChanges(\r\n vm.notifId,\r\n newData,\r\n currentData,\r\n currentCommunication,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n\r\n function enrollmodal(notifId, index, enrolledStatus, madeChanges) {\r\n if (\r\n notifId === 'BILL_DEL' &&\r\n vm.notificationPreferences[0].confirmButton === 'Save'\r\n ) {\r\n vm.toggleClicked = false;\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(vm.getData)\r\n .then(\r\n result => {\r\n vm.temp = [];\r\n vm.temp = result.d.results[0].Partner_Preference.results.filter(\r\n item =>\r\n item.SubGroupID === 'PAPERLESS' && item.SubID === 'BILL_DEL',\r\n );\r\n if (\r\n vm.temp.length > 0 &&\r\n vm.temp[0].Comm_Medium === 'DIST' &&\r\n vm.temp[0].OPTOUT === ''\r\n ) {\r\n vm.notifyStatus = 'enabled';\r\n sessionStorageService.set(\r\n assetService.storageKeys.notifyPrefer,\r\n vm.notifyStatus,\r\n );\r\n vm.notifId = notifId;\r\n vm.indexId = index;\r\n vm.enrolledStatus = enrolledStatus;\r\n\r\n modalService.paperlessEnroll();\r\n } else {\r\n //in case of paperless billing it shows no changes made if user directly click save\r\n //so manually setting variable true in the case.\r\n madeChanges = true;\r\n saveChanges(notifId, index, enrolledStatus, madeChanges);\r\n }\r\n },\r\n error => {\r\n $.growl.error({ message: error.message });\r\n },\r\n );\r\n } else if (madeChanges) {\r\n saveChanges(notifId, index, enrolledStatus, madeChanges);\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.unEnrollNotification, () => {\r\n cancelChanges(vm.notifId);\r\n });\r\n\r\n $scope.$on(assetService.events.enrollNotification, () => {\r\n saveChanges(vm.notifId, vm.indexId, vm.enrolledStatus, true);\r\n });\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n // Search the progName in the getProductsRecomendations response, if it is found, call to DELETE_PROGRAM from Sitecore\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId,\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function updatePreferences(notifId, index) {\r\n const oldData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n const newPref = _.find(newData, preference => preference.id === notifId);\r\n const curPref = _.find(\r\n currentData,\r\n preference => preference.id === notifId,\r\n );\r\n vm.showLoader[notifId] = true;\r\n //vm.notificationPreferences[index].loadingChanges = true;\r\n notificationHelper\r\n .saveChanges(notifId, newData, currentData, currentCommunication)\r\n .then(result => {\r\n vm.showLoader[notifId] = false;\r\n if (\r\n result[0].ReturnCodes &&\r\n result[0].ReturnCodes[0].ReturnCode1?.Type === 'E'\r\n ) {\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n } else {\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'S',\r\n message: '',\r\n };\r\n gatAddDeleteEvent(notifId, newData, oldData);\r\n }\r\n\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'success';\r\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\r\n // vm.toastData.show = true;\r\n // $timeout(() => {\r\n // vm.toastData.show = false;\r\n // }, 6000);\r\n //sendToastEvents(notifId);\r\n })\r\n .catch(function() {\r\n vm.showLoader[notifId] = false;\r\n\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'E',\r\n message: 'Unexpected error',\r\n };\r\n\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n });\r\n if (\r\n /*notifId === _strings.preferences.RATE_REVW ||*/\r\n notifId === _strings.preferences.BILLPRINT\r\n ) {\r\n /*curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\r\n curPref.billFormatType =\r\n notifId === _strings.preferences.BILLPRINT\r\n ? newData.billFormatType\r\n : curPref.billFormatType;\r\n }\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n\r\n function checkPreference(notifId, index, currPref, newstatus) {\r\n const newData = newstatus;\r\n const currentData = vm.cardsModel;\r\n const newPref = _.find(newData, preference => preference.id === notifId);\r\n const curPref = _.find(\r\n currentData,\r\n preference => preference.id === notifId,\r\n );\r\n //vm.notificationPreferences[index].loadingChanges = true;\r\n notificationHelper.createsaveChanges(\r\n notifId,\r\n newData,\r\n currentData,\r\n currentCommunication,\r\n );\r\n currentCommunication = $scope.$parent.currComm;\r\n getPreferences(vm.notificationPreferences, currentCommunication);\r\n //setModels();\r\n if (\r\n $rootScope.paperlessSaveErrorCount > 0 &&\r\n $rootScope.paperlessSaveErrorCount < 3\r\n ) {\r\n vm.notificationPreferences[0].editionMode = true;\r\n } else {\r\n vm.notificationPreferences[0].editionMode = false;\r\n }\r\n // vm.notificationPreferences[index].loadingChanges = false;\r\n if (\r\n /* notifId === _strings.preferences.RATE_REVW ||*/\r\n\r\n notifId === _strings.preferences.BILLPRINT\r\n ) {\r\n /* curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\r\n curPref.billFormatType =\r\n notifId === _strings.preferences.BILLPRINT\r\n ? newData.billFormatType\r\n : curPref.billFormatType;\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n function callReadandDeriveService() {\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(vm.getData)\r\n .then(\r\n result => {\r\n // On Succes of Read Derive preferences service\r\n },\r\n error => {\r\n $.growl.error({ message: error.message });\r\n },\r\n );\r\n }\r\n document.addEventListener('click', () => {\r\n if (!vm.noChanges) {\r\n $rootScope.billingBanner = {};\r\n }\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n vm.noChanges = false;\r\n });\r\n function saveChanges(notifId, index, enrolledStatus, madeChanges) {\r\n if (madeChanges) {\r\n vm.showLoader[notifId] = true;\r\n if (notifId === 'BILL_DEL') {\r\n if (vm.notificationPreferences[0].confirmButton === 'Save') {\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n if (enrolledStatus) {\r\n if (vm.isPaperlesBilling) {\r\n vm.temp = vm.notificationDropdowns.BILL_DEL.communication[0].filter(\r\n item =>\r\n item.text.toLowerCase() === vm.primaryEmail.toLowerCase(),\r\n );\r\n dropCommunication(vm.temp[0], 'BILL_DEL/0');\r\n\r\n _paramDataToEnrollPB = {\r\n action: assetService.strings.ENROLL,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n emailId: vm.primaryEmail,\r\n contractAccount: accountData.contractAccountId,\r\n billNotify: vm.checkedPDFOption\r\n ? assetService.notifPref.COMM_MEDIUMS.EBLP\r\n : assetService.notifPref.COMM_MEDIUMS.EBIL,\r\n };\r\n vm.paperlessStatus = false;\r\n ebillEnrollKubra(_paramDataToEnrollPB, vm.paperlessStatus).then(\r\n () => {\r\n const requestCare = {\r\n accountNumber: accountData.contractAccountId,\r\n jurisdiction: accountData.jurisdiction,\r\n progName: 'P0156',\r\n };\r\n\r\n setPaperlessStatus();\r\n productRecommendationsCARE(requestCare);\r\n let currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n\r\n currPref.forEach(notif => {\r\n if (\r\n vm.paperlessBilling.isEligible &&\r\n (notif.id === _strings.preferences.PMT_RMDR ||\r\n notif.id === _strings.preferences.PMT_UPDT)\r\n ) {\r\n notif.paperlessBillingInelegible = false;\r\n }\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n });\r\n if (vm.PaperlessEnrollmentFailed) {\r\n $rootScope.billingBanner[_strings.preferences.BILL_DEL] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n $rootScope.paperlessSaveErrorCount += 1;\r\n vm.paperlessBilling.status = true;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n if ($rootScope.paperlessSaveErrorCount > 2) {\r\n $rootScope.billingBanner[\r\n _strings.preferences.BILL_DEL\r\n ] = {\r\n type: 'EE',\r\n message: '',\r\n };\r\n vm.paperlessBilling.status = false;\r\n vm.paperlessBilling.editionMode = false;\r\n setPaperlessStatusUnEnroll();\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n let newData = _.find(\r\n vm.notificationPreferences,\r\n element =>\r\n element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n vm.notificationPreferences,\r\n currentData,\r\n currentCommunication,\r\n );\r\n }\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption =\r\n // 'Enrollment cannot be completed at this time.';\r\n // vm.toastData.show = true;\r\n //sendToastEvents(notifId);\r\n // _paramDataToEnrollPB = {\r\n // action: assetService.strings.UNENROLL,\r\n // businessPartnerId: accountData.relatedBusinessPartnerId,\r\n // emailId: vm.emailAccount.EmailAddress,\r\n // contractAccount: accountData.contractAccountId,\r\n // };\r\n //vm.paperlessStatus = true;\r\n //setPaperlessStatusUnEnroll();\r\n // vm.paperlessBilling.status = true;\r\n // sessionStorageService.set(\r\n // assetService.notifPref.sessionStorage.paperlessBilling,\r\n // vm.paperlessBilling,\r\n // );\r\n // angular\r\n // .element('#ModalManageNotificationPreferenceChange')\r\n // .modal('hide');\r\n // let currPref = sessionStorageService.get(\r\n // assetService.notifPref.sessionStorage.billing,\r\n // );\r\n\r\n // currPref.forEach(notif => {\r\n // if (\r\n // vm.paperlessBilling.isEligible &&\r\n // (notif.id === _strings.preferences.PMT_RMDR ||\r\n // notif.id === _strings.preferences.PMT_UPDT)\r\n // ) {\r\n // notif.paperlessBillingInelegible = true;\r\n // }\r\n // sessionStorageService.set(\r\n // assetService.notifPref.sessionStorage.billing,\r\n // vm.notificationPreferences,\r\n // );\r\n // });\r\n // let newData = _.find(\r\n // vm.notificationPreferences,\r\n // element => element.id === vm.currentNotifModal.notifIdModal,\r\n // );\r\n // newData.notifications = [];\r\n // const currentData = vm.cardsModel;\r\n // notificationHelper.saveChanges(\r\n // vm.currentNotifModal.notifIdModal,\r\n // vm.notificationPreferences,\r\n // currentData,\r\n // currentCommunication,\r\n // );\r\n // newData.enrolled = false;\r\n // angular\r\n // .element('#ModalManageNotificationPreferenceChange')\r\n // .modal('hide');\r\n // sessionStorageService.set(\r\n // assetService.notifPref.sessionStorage.billing,\r\n // vm.notificationPreferences,\r\n // );\r\n } else {\r\n if (notifId == 'BILL_DEL') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/paperless-billing/billing-payment/toggle/on',\r\n );\r\n\r\n if (\r\n vm.notificationPreferences[0].checkedPDFOption === true\r\n ) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/paperless-billing/billing-payment/add-communication/preference-successfully-saved/pdf-yes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/paperless-billing/billing-payment/add-communication/preference-successfully-saved/pdf-no',\r\n );\r\n }\r\n }\r\n }\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n const newStatus = vm.notificationPreferences;\r\n currentCommunication = $scope.$parent.currComm;\r\n checkPreference(notifId, index, currPref, newStatus);\r\n angular\r\n .element('#ModalManageNotificationPreferenceChange')\r\n .modal('hide');\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n\r\n if (\r\n /*vm.currentNotifModal.notifIdModal ===\r\n _strings.preferences.RATE_REVW ||*/\r\n vm.currentNotifModal.notifIdModal ===\r\n _strings.preferences.BILLPRINT\r\n ) {\r\n let currentNotifModalIndex = vm.notificationPreferences.findIndex(\r\n x => x.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n currentNotifModalIndex,\r\n );\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n\r\n //vm.notificationPreferences[0].notifications[0].communicationText = vm.temp[0].text;\r\n },\r\n );\r\n }\r\n }\r\n }\r\n if (vm.notificationPreferences[0].confirmButton === 'Update') {\r\n updatePreferences(notifId, index);\r\n }\r\n broadcastService.refreshPreferences();\r\n $window.scrollTo(0, 0);\r\n } else {\r\n $rootScope.billingBanner[notifId] = {\r\n type: '',\r\n message: '',\r\n };\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n const newPref = _.find(\r\n newData,\r\n preference => preference.id === notifId,\r\n );\r\n const curPref = _.find(\r\n currentData,\r\n preference => preference.id === notifId,\r\n );\r\n // if(newPref.notifications.length < curPref.notifications.length) {\r\n // vm.notifId = notifId\r\n // angular.element('#ModalNotificationPreferenceDeleteChanel').modal('show');\r\n // } else {\r\n // vm.notificationPreferences[index].loadingChanges = true;\r\n notificationHelper\r\n .saveChanges(\r\n notifId,\r\n newData,\r\n currentData,\r\n currentCommunication,\r\n vm.floridaUser,\r\n )\r\n .then(result => {\r\n vm.showType = result[0].ReturnCodes[0].ReturnCode1?.Type\r\n ? result[0].ReturnCodes[0].ReturnCode1.Type\r\n : '';\r\n vm.returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum\r\n ? result[0].ReturnCodes[0].ReturnCode1.MessageNum\r\n : '';\r\n vm.prefError = result[0].ReturnCodes[0].ReturnCode1?.Message\r\n ? result[0].ReturnCodes[0].ReturnCode1.Message\r\n : '';\r\n\r\n if (\r\n result[0].ReturnCodes &&\r\n result[0].ReturnCodes[0].ReturnCode1?.Type === 'E'\r\n ) {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n } else {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'S',\r\n message: '',\r\n };\r\n\r\n if (notifId != 'BILLPRINT') {\r\n const oldData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n gatAddDeleteEvent(notifId, newData, oldData);\r\n }\r\n\r\n if (vm.notificationPreferences[index].confirmButton != 'Update') {\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/billing-payment/toggle/on',\r\n );\r\n }\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'success';\r\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\r\n // vm.toastData.show = true;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n broadcastService.refreshPreferences();\r\n $window.scrollTo(0, 0);\r\n })\r\n .catch(function() {\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n vm.showLoader[notifId] = false;\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'E',\r\n message: 'Unexpected error',\r\n };\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n })\r\n .then(function() {\r\n //sendToastEvents(notifId);\r\n generateGATEvents(\r\n notifId,\r\n vm.showType,\r\n vm.returnCode,\r\n vm.prefError,\r\n );\r\n });\r\n //}\r\n if (\r\n /*notifId === _strings.preferences.RATE_REVW ||*/\r\n notifId === _strings.preferences.BILLPRINT\r\n ) {\r\n /*curPref.rateReviewType =\r\n notifId === _strings.preferences.RATE_REVW\r\n ? newData.rateReviewType\r\n : curPref.rateReviewType;*/\r\n curPref.billFormatType =\r\n notifId === _strings.preferences.BILLPRINT\r\n ? newData.billFormatType\r\n : curPref.billFormatType;\r\n vm.paperlessBilling.status = false;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n }\r\n }\r\n } else {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n let result = notificationHelper.compareChanges(\r\n notifId,\r\n newData,\r\n currentData,\r\n );\r\n if (result) {\r\n vm.showLoader[notifId] = false;\r\n vm.noChanges = true;\r\n $rootScope.billingBanner[notifId] = {\r\n type: 'N',\r\n message: '',\r\n };\r\n\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/billing-payment/na/make-change-to-update-your-preference',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-make-change-to-update-your-preference-|-na',\r\n cardName,\r\n );\r\n }\r\n }\r\n }\r\n\r\n function deleteNotification(notifId, dropDownIndex) {\r\n const data = vm.notificationPreferences;\r\n vm.showError[notifId].splice(dropDownIndex, 1);\r\n let cardName = subheadline(notifId);\r\n\r\n let globaldata = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n\r\n let index = globaldata.findIndex(x => x.id == notifId);\r\n globaldata = globaldata[index].notifications;\r\n let deleteValue =\r\n data[index].notifications[dropDownIndex].communicationText;\r\n let channelType = data[index].notifications[dropDownIndex].channel;\r\n deleteValue = deleteValue.toLowerCase();\r\n if (channelType != 'MAIL' && deleteValue != 'send my communication to') {\r\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\r\n }\r\n\r\n if (deleteValue != 'send my communication to' && globaldata != undefined) {\r\n let commText = '';\r\n\r\n globaldata.forEach(notif => {\r\n if (notif.communicationText != undefined) {\r\n commText = notif.communicationText.toLowerCase();\r\n } else {\r\n commText = notif.communication.toLowerCase();\r\n }\r\n if (commText === deleteValue && notif.channel == channelType) {\r\n vm.errorDelete = true;\r\n let type =\r\n notif.channel == 'TXT'\r\n ? 'text'\r\n : notif.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n if (notifId == 'BILL_DEL') {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete-|-intent',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete-|-intent',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/intent/' +\r\n cardName +\r\n '/billing-payment/delete-intent',\r\n );\r\n }\r\n });\r\n }\r\n notificationHelper.deleteNotification(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n vm.notificationDropdowns,\r\n );\r\n if (\r\n vm.notificationPreferences.filter(element => element.notifications) == ''\r\n ) {\r\n vm.disableSave[notifId] = true;\r\n } else vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.billing,\r\n vm.notificationPreferences,\r\n );*/\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function cancelChange(notification) {\r\n notification.value = !notification.value;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function communicationVal(model, extra) {\r\n if (model === 'Text') {\r\n model = 'TXT';\r\n } else if (model === 'Call') {\r\n model = 'VOIC';\r\n } else if (model === 'Email') {\r\n model = 'MAIL';\r\n }\r\n const data = vm.notificationPreferences;\r\n vm.modelSelected = model;\r\n let cardId = extra.split('/')[0];\r\n notificationHelper.dropdownFilter(\r\n cardId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n model,\r\n );\r\n vm.displayOptions = sessionStorageService.get('displayOptions');\r\n notificationHelper.commChange(\r\n model,\r\n extra,\r\n vm.displayOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function setPaperlessStatus() {\r\n vm.notificationPreferences.forEach(notif => {\r\n if (\r\n notif.id === _strings.preferences.PMT_RMDR ||\r\n notif.id === _strings.preferences.PMT_UPDT\r\n ) {\r\n notif.paperlessBillingInelegible = !vm.paperlessBilling.status;\r\n }\r\n if (notif.id === _strings.preferences.BILLPRINT && !vm.checkedPDFOption) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n });\r\n }\r\n\r\n function setPaperlessStatusUnEnroll() {\r\n vm.notificationPreferences.forEach(notif => {\r\n if (\r\n notif.id === _strings.preferences.PMT_RMDR ||\r\n notif.id === _strings.preferences.PMT_UPDT\r\n ) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n if (notif.id === _strings.preferences.BILLPRINT) {\r\n notif.editionMode = false;\r\n notif.display = true;\r\n notif.paperlessBillingInelegible = false;\r\n }\r\n });\r\n }\r\n\r\n function getPreferences(preferences, comm_opt) {\r\n vm.jurisdiction = comm_opt.jurisdiction;\r\n vm.notificationPreferences = preferences;\r\n vm.notificationPreferences.forEach((card, $index) => {\r\n card['display'] = true;\r\n if (\r\n vm.paperlessBilling.status &&\r\n !vm.checkedPDFOption &&\r\n card.id === 'BILLPRINT'\r\n ) {\r\n card.display = false;\r\n }\r\n if (card.id === _strings.preferences.PMT_RMDR) {\r\n card['display'] = false;\r\n }\r\n if ($index === 7) {\r\n card['display'] = false;\r\n }\r\n });\r\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\r\n vm.cardsModel = vm.cardsModel.map(item => {\r\n if (item.notifications)\r\n item.notifications = genericHelperService.notReferencesArrayObjects(\r\n item.notifications,\r\n );\r\n else item.notifications = [];\r\n return item;\r\n });\r\n\r\n vm.communicationOptions = comm_opt;\r\n }\r\n\r\n function load() {\r\n vm.flag = true;\r\n vm.toggleClicked = false;\r\n vm.roleBase = sessionStorageService.get(assetService.storageKeys.roleBase);\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.floridaUser =\r\n globalAccountInfo.accountSelected.jurisdiction ===\r\n _strings.jurisdictions.FL01;\r\n vm.decUser =\r\n globalAccountInfo.accountSelected.jurisdiction ===\r\n _strings.jurisdictions.NC01 ||\r\n globalAccountInfo.accountSelected.jurisdiction ===\r\n _strings.jurisdictions.SC01;\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n const globalAccountsEmails = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.emails,\r\n );\r\n //if (globalAccountsEmails && globalAccountsEmails.length >= 1)\r\n vm.primaryEmail = globalAccountInfo.userEmail;\r\n paperlessInfo = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.paperlessTriggerFromPage,\r\n );\r\n\r\n vm.paperlessBilling = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n );\r\n vm.paperlessBilling.realStatus = vm.paperlessBilling\r\n ? vm.paperlessBilling.status\r\n : false;\r\n vm.autopay = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.autopay,\r\n );\r\n\r\n let currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.billing,\r\n );\r\n vm.enrolledPref = currPref;\r\n if (currPref[0].checkedPDFOption != undefined) {\r\n vm.checkedPDFOption = currPref[0].checkedPDFOption;\r\n } else {\r\n vm.checkedPDFOption = false;\r\n labelflag = true;\r\n }\r\n /* if (\r\n currPref.length > 7 &&\r\n (currPref[7].rateReviewType === 'N' || currPref[7].rateReviewType === '')\r\n ) {\r\n currPref[7].enrolled = false;\r\n } */\r\n currPref.forEach(notif => {\r\n if (notif.loadingChanges) {\r\n notif.loadingChanges = false;\r\n }\r\n if (\r\n !vm.autopay.status &&\r\n (notif.id === _strings.preferences.APP_SCHED ||\r\n notif.id === _strings.preferences.APP_UPDT)\r\n ) {\r\n notif.autopayInelegible = true;\r\n }\r\n\r\n if (\r\n !vm.paperlessBilling.status &&\r\n (notif.id === _strings.preferences.PMT_RMDR ||\r\n notif.id === _strings.preferences.PMT_UPDT)\r\n ) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n\r\n if (\r\n vm.paperlessBilling.status &&\r\n !vm.checkedPDFOption &&\r\n notif.id === _strings.preferences.BILLPRINT\r\n ) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n\r\n if (\r\n !vm.paperlessBilling.isEligible &&\r\n notif.id === _strings.preferences.BILL_DEL\r\n ) {\r\n notif.paperlessBillingInelegible = true;\r\n }\r\n });\r\n\r\n if ($scope.$parent.isPrepaid) {\r\n vm.autoReload = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.autoReload,\r\n );\r\n\r\n currPref.forEach(notif => {\r\n if (\r\n vm.autoReload &&\r\n !vm.autoReload.status &&\r\n notif.id === _strings.preferences.PPY_AUTO\r\n ) {\r\n notif.autoReloadInelegible = true;\r\n }\r\n if (notif.id === _strings.preferences.PREPAY) {\r\n notif.remainingDays = notif.remainingDays ? notif.remainingDays : [];\r\n }\r\n });\r\n }\r\n\r\n currentCommunication = $scope.$parent.currComm;\r\n getPreferences(currPref, currentCommunication);\r\n vm.emailAccount = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.email,\r\n );\r\n setModels();\r\n //To call the Ebill enroll from Dashboard/Billing & payment page\r\n if (\r\n (paperlessInfo != null &&\r\n paperlessInfo.trigger ===\r\n assetService.notifPref.sessionStorage.triggerOn) ||\r\n ($rootScope.paperlessSaveErrorCount <= 2 &&\r\n $rootScope.paperlessSaveErrorCount > 0)\r\n ) {\r\n // if(impDetails != null) {\r\n // showPaperlessUnauthorizedMessage();\r\n // paperlessInfo.enrolledStatus = false;\r\n // }\r\n // else {\r\n if (\r\n $rootScope.paperlessSaveErrorCount <= 2 &&\r\n $rootScope.paperlessSaveErrorCount > 0\r\n ) {\r\n paperlessInfo = {\r\n notifId: assetService.notifPref.SUBIDS.BILL_DEL,\r\n enrolledStatus: false,\r\n trigger: assetService.notifPref.sessionStorage.triggerOn,\r\n };\r\n $rootScope.billingBanner[_strings.preferences.BILL_DEL] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n }\r\n vm.enrolledNotif(\r\n assetService.notifPref.SUBIDS.BILL_DEL,\r\n paperlessInfo.enrolledStatus,\r\n vm.paperlessBilling.serviceName,\r\n );\r\n vm.notificationPreferences.filter(\r\n x => x.id === assetService.notifPref.SUBIDS.BILL_DEL,\r\n )[0].confirmButton = assetService.notifPref.sessionStorage.updateSave;\r\n vm.notificationPreferences.filter(\r\n x => x.id === assetService.notifPref.SUBIDS.BILL_DEL,\r\n )[0].checkedPDFOption = true;\r\n //vm.defaultEmail = vm.emailAccount.EmailAddress;\r\n paperlessInfo.enrolledStatus = true;\r\n //}\r\n paperlessInfo.trigger = assetService.notifPref.sessionStorage.triggerOff;\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessTriggerFromPage,\r\n paperlessInfo,\r\n );\r\n }\r\n\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n vm.getData = {\r\n businessPartnerId: accountData.businessPartnerId,\r\n contractAccountId: accountData.contractAccountId,\r\n requestedBy: vm.emailAccount.EmailAddress,\r\n };\r\n }\r\n\r\n function dayAlert(day, notifId) {\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.cardsModel,\r\n );\r\n\r\n let j = 0;\r\n let band = false;\r\n vm.lowBalanceDays[day] = !vm.lowBalanceDays[day];\r\n newNotif.remainingDays = [];\r\n for (let i = 0; i < vm.lowBalanceDays.length; i++) {\r\n let days = vm.lowBalanceDays[i];\r\n\r\n if (!days && newNotif.remainingDays.length > 0) {\r\n j = 0;\r\n\r\n newNotif.remainingDays.forEach(remDay => {\r\n if (remDay === i + 1) {\r\n band = true;\r\n return;\r\n }\r\n\r\n j += 1;\r\n });\r\n if (band) newNotif.remainingDays.splice(j, 1);\r\n }\r\n pushDay = i + 1;\r\n if (days) newNotif.remainingDays.push(`${pushDay}`);\r\n }\r\n\r\n if (\r\n JSON.stringify(newNotif.remainingDays) ===\r\n JSON.stringify(currentNotif.remainingDays)\r\n ) {\r\n newNotif.optoutEdit = false;\r\n } else {\r\n newNotif.optoutEdit = true;\r\n vm.disableSave[notifId] = false;\r\n }\r\n }\r\n /* Initialization */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n\r\n function sendBilling(notifId, flagToggle) {\r\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\r\n }\r\n\r\n function sendNotification(stringToConcat) {\r\n pushVPV(\r\n '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/',\r\n );\r\n }\r\n\r\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\r\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\r\n return stringBase.concat(stringToConcat);\r\n }\r\n\r\n function sendEditBilling(notifId, concatEdit, madeChanges) {\r\n $rootScope.billingBanner = {};\r\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\r\n if (vm.isPaperlesBilling) {\r\n if (concatEdit == 'Cancel') {\r\n if (vm.paperlessBilling.realStatus !== true) {\r\n vm.paperlessBilling.status = false;\r\n }\r\n }\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.paperlessBilling,\r\n vm.paperlessBilling,\r\n );\r\n }\r\n if (notifId == 'BILLPRINT' && concatEdit === 'Edit') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/bill-format/billing-payment/update',\r\n );\r\n }\r\n let param = {\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: concatEdit,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n };\r\n vm.buttonClicked = concatEdit;\r\n if (concatEdit === 'Update') {\r\n param.buttonText = 'edit';\r\n param.addedSpec = concatEdit;\r\n $rootScope.billingError = true;\r\n }\r\n if (concatEdit === 'Save') {\r\n $rootScope.billingError = false;\r\n }\r\n /*notificationHelper.sendEventAttribute(param);*/\r\n } else {\r\n const newData = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n newData.notifications.forEach(x => {\r\n if (\r\n (x.communicationText == 'Send My Communication To' ||\r\n x.communicationText == 'Add New Email') &&\r\n x.communication == 'Send My Communication To' &&\r\n x.channelText != 'Method'\r\n ) {\r\n inlineVPV(notifId, x.channelText);\r\n }\r\n });\r\n\r\n let i = 0;\r\n vm.showError[notifId] = [];\r\n newData.notifications.forEach(x => {\r\n vm.showError[notifId].push(x.classError);\r\n i += 1;\r\n });\r\n vm.clickedSave[notifId] = true;\r\n }\r\n }\r\n\r\n function sendToastEvents(notifId) {\r\n if (notifId != 'BILL_DEL') {\r\n attributePush(\r\n `workFlow: ${vm.toastData.workFlow}`,\r\n `headline:${vm.toastData.option}`,\r\n `subheadline:${vm.toastData.messageOption}`,\r\n 'buttonText: impression',\r\n `addedSpec:${vm.gatConstants.businessFunction}`,\r\n `addedEvent: ${vm.indexToCardTitle(notifId)}`,\r\n );\r\n virtualPagePush(\r\n vm.toastData.workFlow,\r\n vm.gatConstants.businessFunction,\r\n vm.indexToCardTitle(notifId),\r\n vm.toastData.messageOption,\r\n 'impression',\r\n vm.toastData.option,\r\n );\r\n }\r\n }\r\n\r\n function generateGATEvents(notifId, showError, getCode, getMsg) {\r\n let cardName = subheadline(notifId);\r\n\r\n if (\r\n notifId == 'BILL_NOTIF' ||\r\n notifId == 'PAY_CONFRM' ||\r\n notifId == 'PMT_UPDT' ||\r\n notifId == 'PREPAY' ||\r\n notifId == 'PPY_AUTO' ||\r\n notifId == 'BILLPRINT'\r\n ) {\r\n if (showError == 'S') {\r\n if (notifId == 'BILLPRINT') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/billing-payment/na/preference-successfully-saved',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/billing-payment/add-communication/preference-successfully-saved',\r\n );\r\n }\r\n } else if (showError == 'E') {\r\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\r\n if (vm.preferenceAction === 'UPDATE') {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`,\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.CreatePreferences}`,\r\n cardName,\r\n );\r\n }\r\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/billing-payment/' +\r\n getCode +\r\n '/trouble-saving-your-changes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/billing-payment/' +\r\n getCode +\r\n '/trouble-updating-your-changes',\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function closeToast() {\r\n vm.toastData.show = '';\r\n }\r\n function getSuccessMessage(index) {\r\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n var titleTxt = '';\r\n switch (index) {\r\n case 0:\r\n titleTxt = $scope.$parent.isPrepaid ? 'Low Balance Alerts' : 'Paperless Billing';\r\n break;\r\n case 1:\r\n titleTxt = $scope.$parent.isPrepaid ? 'Auto Reload' : 'Billing Notifications';\r\n break;\r\n case 2:\r\n titleTxt = 'Payment Confirmation';\r\n break;\r\n case 3:\r\n titleTxt = 'Payment Reminders';\r\n break;\r\n case 4:\r\n titleTxt = 'Auto Payment Scheduled';\r\n break;\r\n case 5:\r\n titleTxt = 'Auto Payment Updates';\r\n break;\r\n case 6:\r\n titleTxt = 'Payment Updates';\r\n break;\r\n case 7:\r\n titleTxt = vm.floridaUser ? 'Rate Review' : 'Annual Rate Review';\r\n break;\r\n case 7:\r\n titleTxt = 'Bill Format';\r\n break;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n return 'Success! ' + titleTxt + ' saved successfully!'; */\r\n return 'Success! Changes saved.';\r\n }\r\n function indexToCardTitle(notifId) {\r\n var titleTxt = '';\r\n if (!$scope.$parent.isPrepaid) {\r\n switch (notifId) {\r\n case 'BILL_DEL':\r\n return vm.gatConstants.paperlessBilling;\r\n case 'BILL_NOTIF':\r\n return vm.gatConstants.billingNotifications;\r\n case 'PAY_CONFRM':\r\n return vm.gatConstants.paymentConfirmations;\r\n case 'PMT_UPDT':\r\n return vm.gatConstants.paymentUpdates;\r\n case 'BILLPRINT':\r\n return vm.gatConstants.billPrint;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n } else {\r\n switch (notifId) {\r\n case 'BILL_NOTIF':\r\n return vm.gatConstants.billingNotifications;\r\n case 'PAY_CONFRM':\r\n return vm.gatConstants.paymentConfirmations;\r\n case 'PREPAY':\r\n return vm.gatConstants.lowBalAlerts;\r\n case 'PPY_AUTO':\r\n return vm.gatConstants.autoReload;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n }\r\n }\r\n function isIdentical(notifId) {\r\n if (notifId === _strings.preferences.BILLPRINT)\r\n return (\r\n vm.notificationPreferences[8].billFormatType ===\r\n vm.cardsModel[8].billFormatType\r\n );\r\n /* if (notifId === _strings.preferences.RATE_REVW)\r\n return (\r\n vm.notificationPreferences[7].rateReviewType ===\r\n vm.cardsModel[7].rateReviewType\r\n ); */\r\n var enteredPairs = getPairs(vm.notificationPreferences, notifId);\r\n var currentPairs = getPairs(vm.cardsModel, notifId);\r\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\r\n }\r\n function getPairs(comms, notifId) {\r\n var copy = genericHelperService.notReferencesArrayObjects(\r\n comms.filter(x => x.id === notifId)[0].notifications,\r\n );\r\n return copy\r\n .sort((a, b) => {\r\n if (a.channel !== b.channel)\r\n // order by channel, then by communication\r\n return a.channel.localeCompare(b.channel);\r\n return a.communication.localeCompare(b.communication);\r\n })\r\n .map(x => {\r\n return {\r\n channel: x.channel,\r\n communication: x.communication,\r\n };\r\n });\r\n }\r\n function isUnique() {\r\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n );\r\n vm.isDuplicate = vm.currentNotifModal.disableSave;\r\n\r\n //To check for duplicate emails, length > 64\r\n if (vm.currentNotifModal.type == 'emails') {\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n let defaultItem = vm.communicationOptions.emails.filter(function(itm) {\r\n return itm.text === vm.modalInputValue;\r\n });\r\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\r\n }\r\n }\r\n\r\n function showPaperlessUnauthorizedMessage() {\r\n vm.toastData.option = 'error';\r\n vm.toastData.messageOption =\r\n 'You are not authorized to perform this function on behalf of the customer.';\r\n vm.toastData.show = true;\r\n }\r\n function initGatConstants(\r\n businessFunction,\r\n addedSpec,\r\n pageTitle,\r\n bilDel,\r\n billNotif,\r\n payConfrm,\r\n payUpdt,\r\n billPrint,\r\n prePay,\r\n ppyAuto,\r\n ) {\r\n vm.gatConstants.businessFunction = businessFunction;\r\n vm.gatConstants.addedSpec = addedSpec;\r\n vm.gatConstants.pageTitle = pageTitle;\r\n vm.gatConstants.paperlessBilling = bilDel;\r\n vm.gatConstants.billingNotifications = billNotif;\r\n vm.gatConstants.paymentConfirmations = payConfrm;\r\n vm.gatConstants.paymentUpdates = payUpdt;\r\n vm.gatConstants.billPrint = billPrint;\r\n vm.gatConstants.lowBalAlerts = prePay;\r\n vm.gatConstants.autoReload = ppyAuto;\r\n }\r\n function recordRadioGatAction(action, card) {\r\n if (vm.gatRadioToggle) {\r\n // applying workaround because click event on cc-radio-button firing twice for some reason ¯\\_(ツ)_/¯\r\n vm.gatRadioToggle = false;\r\n return;\r\n } else vm.gatRadioToggle = true;\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: card,\r\n });*/\r\n }\r\n function gatNewComm(action, label, verify) {\r\n if (verify) {\r\n vm.isvalidSubmit = false;\r\n } else {\r\n vm.isvalidSubmit = true;\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatActiveCard,\r\n subheadline: label,\r\n });\r\n }\r\n }\r\n function gatContinuePaperless(action, label) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle('BILL_DEL'),\r\n subheadline: label,\r\n });*/\r\n }\r\n function sendAddNotification(notifId, action) {\r\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\r\n }\r\n function sendDelete(notifId, channelTxt, label) {\r\n /*if(notifId != 'BILL_DEL'){\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });\r\n }*/\r\n }\r\n function gatRRLearnMore(action) {\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(7),\r\n });\r\n }\r\n}\r\n","app.controller('PaymentsPreferencesController', PaymentsPreferencesController);\r\nPaymentsPreferencesController.$inject = [\r\n 'genericHelperService',\r\n 'NotificationPreferencesHelperService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n];\r\n\r\nfunction PaymentsPreferencesController(\r\n genericHelperService,\r\n notificationHelper,\r\n assetService,\r\n sessionStorageService,\r\n $rootScope,\r\n) {\r\n /* Global Vars */\r\n\r\n const vm = this;\r\n\r\n /* Scope Vars */\r\n vm.cardsModel = [];\r\n vm.chan_opt = [];\r\n vm.comm_opt = [];\r\n vm.channelItemsDDList = null;\r\n vm.preferencesReady = false;\r\n vm.notificationPreferences = null;\r\n vm.emailToDelete = null;\r\n vm.phoneToDelete = null;\r\n vm.notificationToConfirm = null;\r\n vm.notificationDropdowns = {\r\n PAY_REMIND: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PAY_CONFRM: {\r\n channel: [],\r\n communication: [],\r\n },\r\n };\r\n vm.currentNotifModal = {\r\n title: '',\r\n type: '',\r\n notifIdModal: '',\r\n channelIdModal: null,\r\n enrolledStatus: false,\r\n };\r\n\r\n /* Function Declarations */\r\n\r\n vm.cancelChange = cancelChange;\r\n vm.deleteNotification = deleteNotification;\r\n vm.addNotification = addNotification;\r\n vm.dropChannel = dropChannel;\r\n vm.dropCommunication = dropCommunication;\r\n vm.cancelChanges = cancelChanges;\r\n vm.saveChanges = saveChanges;\r\n vm.changeFormatDetailed = changeFormatDetailed;\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.saveNewCommunication = saveNewCommunication;\r\n vm.handleEnrollment = handleEnrollment;\r\n vm.cancelModal = cancelModal;\r\n vm.checkPlaceholder = checkPlaceholder;\r\n vm.sendNotification = sendNotification;\r\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\r\n vm.sendPayment = sendPayment;\r\n vm.sendEditPayments = sendEditPayments;\r\n vm.phonesTypes = [];\r\n\r\n /* Function Definitions */\r\n function dropChannel(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function dropCommunication(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n const addNew = notificationHelper.communicationChange(\r\n model,\r\n extra,\r\n vm.currentNotifModal,\r\n data,\r\n );\r\n\r\n if (addNew)\r\n angular.element('#BillingAddNewCommunicationModal').modal('show');\r\n }\r\n\r\n function saveNewCommunication(saveChanges) {\r\n const data = vm.notificationPreferences;\r\n\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n\r\n notificationHelper.createNewCommunication(\r\n saveChanges,\r\n notifId,\r\n data,\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n );\r\n\r\n notificationHelper.updateNotif(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n }\r\n\r\n function changeFormatDetailed(active, notifId) {\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n currentNotif.format_condensed = !currentNotif.format_detailed;\r\n }\r\n\r\n function enrolledNotif(notifId, enrolledStatus, title) {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('show');\r\n vm.currentNotifModal.notifIdModal = notifId;\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.currentNotifModal.title = title;\r\n }\r\n\r\n function cancelModal() {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function handleEnrollment(enrolledStatus) {\r\n if (enrolledStatus) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n notificationHelper.enrolledNotif(\r\n vm.currentNotifModal.notifIdModal,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n } else if (!enrolledStatus) {\r\n let newData = _.find(\r\n vm.notificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n vm.notificationPreferences,\r\n currentData,\r\n );\r\n newData.enrolled = false;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n }\r\n\r\n function setModels() {\r\n const data = vm.notificationPreferences;\r\n\r\n vm.preferencesReady = true;\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.notifications) {\r\n notificationHelper.setNotifications(\r\n cards.id,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n } else {\r\n cards.deleted = 5;\r\n cards.notifications = [];\r\n }\r\n });\r\n }\r\n\r\n function addNotification(notifId) {\r\n const data = vm.notificationPreferences;\r\n const { phones } = vm.communicationOptions;\r\n\r\n notificationHelper.addNotification(\r\n notifId,\r\n phones,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function cancelChanges(notifId) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n\r\n notificationHelper.cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n }\r\n\r\n function saveChanges(notifId) {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(notifId, newData, currentData);\r\n }\r\n\r\n function deleteNotification(notifId, dropDownIndex) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.deleteNotification(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n vm.notificationDropdowns,\r\n );\r\n }\r\n\r\n function cancelChange(notification) {\r\n notification.value = !notification.value;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function getPreferences(preferences, comm_opt) {\r\n vm.notificationPreferences = preferences;\r\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\r\n vm.cardsModel = vm.cardsModel.map(item => {\r\n if (item.notifications)\r\n item.notifications = genericHelperService.notReferencesArrayObjects(\r\n item.notifications,\r\n );\r\n else item.notifications = [];\r\n return item;\r\n });\r\n\r\n vm.communicationOptions = comm_opt;\r\n if (vm.communicationOptions.phones.length < 5)\r\n vm.communicationOptions.phones.push(\r\n assetService.notifPref.addNewComm.phone,\r\n );\r\n if (vm.communicationOptions.emails.length < 5)\r\n vm.communicationOptions.emails.push(\r\n assetService.notifPref.addNewComm.email,\r\n );\r\n }\r\n\r\n function load() {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n\r\n const currComm = {\r\n phones: [],\r\n emails: [],\r\n };\r\n\r\n const currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.payments,\r\n );\r\n currComm.phones = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.commOpt.notifPhones,\r\n );\r\n currComm.emails = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.emails,\r\n );\r\n\r\n getPreferences(currPref, currComm);\r\n setModels();\r\n }\r\n\r\n /* Initialization */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n\r\n function sendPayment(index, flagToggle) {\r\n let outage = {\r\n event: 'fire-vpv',\r\n 'vpv-name': '/vpv/authenticated/notification-preferences/payments/',\r\n };\r\n switch (index) {\r\n case 0:\r\n outage['vpv-name'] = outage['vpv-name'].concat('payment-reminder/');\r\n break;\r\n case 1:\r\n outage['vpv-name'] = outage['vpv-name'].concat('payment-confirmation/');\r\n break;\r\n }\r\n outage['vpv-name'] = flagToggle\r\n ? outage['vpv-name'].concat('ON')\r\n : outage['vpv-name'].concat('OFF');\r\n dataLayer.push(outage);\r\n }\r\n\r\n function sendNotification(stringToConcat) {\r\n let vpvName =\r\n '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\r\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\r\n $rootScope.virtualPagePush('fire-vpv', vpvName);\r\n }\r\n\r\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\r\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\r\n return stringBase.concat(stringToConcat);\r\n }\r\n\r\n function sendEditPayments(index, concatEdit) {\r\n let outage = {\r\n 'event-category': 'notification_preferences',\r\n 'event-action': 'edit',\r\n 'event-label': 'payments-|-',\r\n event: 'fire-event',\r\n };\r\n outage['event-action'] = outage['event-action'].concat(concatEdit);\r\n outage['event-label'] =\r\n index === 1\r\n ? outage['event-label'].concat('payment-reminder')\r\n : outage['event-label'].concat('payment-confirmation');\r\n dataLayer.push(outage);\r\n }\r\n}\r\n","app.controller('OutagesPreferencesController', OutagesPreferencesController);\r\nOutagesPreferencesController.$inject = [\r\n 'genericHelperService',\r\n 'NotificationPreferencesHelperService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n '$rootScope',\r\n '$timeout',\r\n '$window',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n '$document',\r\n];\r\n\r\nfunction OutagesPreferencesController(\r\n genericHelperService,\r\n notificationHelper,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n $rootScope,\r\n $timeout,\r\n $window,\r\n commongaTaggingService,\r\n broadcastService,\r\n $document,\r\n) {\r\n /* Global Vars */\r\n\r\n const vm = this;\r\n let currentCommunication = {};\r\n let cardName = '';\r\n\r\n /* Scope Vars */\r\n vm.cardsModel = [];\r\n vm.chan_opt = [];\r\n vm.comm_opt = [];\r\n vm.channelItemsDDList = null;\r\n vm.preferencesReady = false;\r\n vm.notificationPreferences = null;\r\n vm.emailToDelete = null;\r\n vm.phoneToDelete = null;\r\n vm.notificationToConfirm = null;\r\n vm.showLoader = {};\r\n vm.notificationDropdowns = {\r\n ACTIVE_OUT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n SRVO_NOT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n APPT_REM: {\r\n channel: [],\r\n communication: [],\r\n },\r\n PPY_DISC: {\r\n channel: [],\r\n communication: [],\r\n },\r\n };\r\n vm.currentNotifModal = {\r\n title: '',\r\n type: '',\r\n communicationModel: '',\r\n notifIdModal: '',\r\n channelIdModal: null,\r\n enrolledStatus: false,\r\n disableSave: true,\r\n };\r\n vm.toastData = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n workFlow: 'toast notification',\r\n };\r\n vm.gatConstants = {};\r\n vm.gatActiveCard = '';\r\n vm.modalValue = '';\r\n vm.isvalidSubmit = false;\r\n vm.isDuplicate = false;\r\n vm.clickedSave = {};\r\n vm.showError = {};\r\n vm.mobileView = window.innerWidth <= 705;\r\n vm.isMobileView = vm.mobileView ? 'mobile' : 'desktop';\r\n vm.typeError = false;\r\n vm.errorDelete = false;\r\n\r\n /* Function Declarations */\r\n vm.addCommVPV = addCommVPV;\r\n vm.inlineVPV = inlineVPV;\r\n vm.errorModalVPV = errorModalVPV;\r\n vm.cancelChange = cancelChange;\r\n vm.deleteNotification = deleteNotification;\r\n vm.addNotification = addNotification;\r\n vm.dropChannel = dropChannel;\r\n vm.dropCommunication = dropCommunication;\r\n vm.cancelChanges = cancelChanges;\r\n vm.saveChanges = saveChanges;\r\n vm.changeFormatDetailed = changeFormatDetailed;\r\n vm.checkPlaceholder = checkPlaceholder;\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.saveNewCommunication = saveNewCommunication;\r\n vm.handleEnrollment = handleEnrollment;\r\n vm.sendNotification = sendNotification;\r\n vm.lowerCasesAndDashesThenConcat = lowerCasesAndDashesThenConcat;\r\n vm.sendOutage = sendOutage;\r\n vm.sendEditOutage = sendEditOutage;\r\n vm.phonesTypes = [];\r\n vm.disableSave = {};\r\n vm.disableModalSave = true;\r\n vm.closeToast = closeToast;\r\n vm.getSuccessMessage = getSuccessMessage;\r\n vm.isIdentical = isIdentical;\r\n vm.isUnique = isUnique;\r\n vm.indexToCardTitle = indexToCardTitle;\r\n vm.initGatConstants = initGatConstants;\r\n vm.gatNewComm = gatNewComm;\r\n vm.sendAddNotification = sendAddNotification;\r\n vm.sendDelete = sendDelete;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.communicationVal = communicationVal;\r\n vm.showModalLoader = false;\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n //vm.resetAddCommunicationModalForm = resetAddCommunicationModalForm;\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n\r\n $scope.$on(assetService.events.addNewCommunication, (event, data) => {\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n data,\r\n vm.notificationPreferences,\r\n );\r\n newNotif.loadingChanges = false;\r\n\r\n notificationHelper.updateNotif(\r\n data,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n vm.notificationPreferences,\r\n );\r\n prepaidChanels();\r\n $scope.$parent.currComm = vm.communicationOptions;\r\n });\r\n\r\n function prepaidChanels() {\r\n if ($scope.$parent.isPrepaid) {\r\n const keyList = Object.keys(vm.notificationDropdowns);\r\n\r\n keyList.forEach(notifsId => {\r\n for (\r\n let index = 0;\r\n index < vm.notificationDropdowns[notifsId].channel.length;\r\n index++\r\n ) {\r\n vm.notificationDropdowns[notifsId].channel[index] =\r\n assetService.notifPref.prepaidChanels;\r\n }\r\n });\r\n }\r\n }\r\n\r\n //GAT for ADD/DELETE COMMUNICATION\r\n function gatAddDeleteEvent(notifId, newData, oldData) {\r\n let indexNew = newData.findIndex(x => x.id == notifId);\r\n let lenOld = 0;\r\n let indexOld = '';\r\n if (oldData != undefined) {\r\n indexOld = oldData.findIndex(x => x.id == notifId);\r\n }\r\n if (oldData != undefined && oldData[indexOld].notifications != undefined) {\r\n lenOld = Object.keys(oldData[indexOld].notifications).length;\r\n }\r\n let cardName = subheadline(notifId);\r\n let count = 0;\r\n let newValue = '';\r\n let type = '';\r\n if (lenOld == 0) {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n type =\r\n notifNew.channel == 'TXT'\r\n ? 'text'\r\n : notifNew.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n });\r\n } else {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n type = notifNew.channel == 'TXT' ? 'text' : 'call';\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n type = 'email';\r\n newValue = notifNew.communicationText;\r\n }\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n (newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n count = 1;\r\n }\r\n });\r\n if (count == 0) {\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'add',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n count = 0;\r\n });\r\n }\r\n\r\n if (lenOld != 0 && oldData[indexOld].notifications != undefined) {\r\n let counter = 0,\r\n deleteFlag = false;\r\n oldData[indexOld].notifications.forEach(notifOld => {\r\n newData[indexNew].notifications.forEach(notifNew => {\r\n if (notifNew.channel != 'MAIL') {\r\n newValue = notifNew.communicationText.replace(/[^0-9]/g, '');\r\n } else {\r\n newValue = notifNew.communicationText;\r\n }\r\n if (\r\n notifOld.channel == notifNew.channel &&\r\n ((notifOld.communicationText != undefined &&\r\n notifOld.communicationText == 'Add New Email') ||\r\n notifOld.communicationText == 'Add New Phone Number' ||\r\n newValue.toLowerCase() === notifOld.communication.toLowerCase() ||\r\n (notifOld.communicationText != undefined &&\r\n newValue.toLowerCase() ===\r\n notifOld.communicationText.toLowerCase()))\r\n ) {\r\n counter = 1;\r\n }\r\n });\r\n if (counter == 0) {\r\n deleteFlag = true;\r\n type =\r\n notifOld.channel == 'TXT'\r\n ? 'text'\r\n : notifOld.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n counter = 0;\r\n });\r\n\r\n if (deleteFlag && vm.errorDelete) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/delete-success',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function subheadline(notifId) {\r\n if (notifId == 'ACTIVE_OUT') {\r\n return 'outage-alerts';\r\n }\r\n if (notifId == 'SRVO_NOT') {\r\n return 'service-orders';\r\n }\r\n if (notifId == 'APPT_REM') {\r\n return 'appointments';\r\n }\r\n if (notifId == 'PPY_DISC') {\r\n return 'electric-connectdisconnect';\r\n }\r\n }\r\n\r\n function errorModalVPV(\r\n type,\r\n req,\r\n duplicate,\r\n pattern,\r\n phoneType,\r\n phoneInvalid,\r\n ) {\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n let cardName = subheadline(notifId);\r\n if (req) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-an-email',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (duplicate) {\r\n if (type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-email-address-already-exists',\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-phone-number-address-already-exists',\r\n cardName,\r\n );\r\n }\r\n }\r\n if (pattern && type == 'email') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'email-|-please-enter-a-valid-email',\r\n cardName,\r\n );\r\n }\r\n if (phoneType && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-type-|-please-select-a-phone-type',\r\n cardName,\r\n );\r\n }\r\n if (phoneInvalid && type == 'phone') {\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n 'phone-number-|-please-enter-a-valid-phone-number',\r\n cardName,\r\n );\r\n }\r\n }\r\n\r\n function inlineVPV(notifId, channel) {\r\n let cardName = subheadline(notifId);\r\n pushDL(\r\n 'preferences-notifications_field-validation-error',\r\n channel.toLowerCase() + '-|-please-select-a-communication',\r\n cardName,\r\n );\r\n }\r\n\r\n function addCommVPV(notifId) {\r\n const tempData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.outage,\r\n );\r\n let index = tempData.findIndex(x => x.id == notifId);\r\n let len = Object.keys(tempData[index].notifications).length;\r\n let cardName = subheadline(notifId);\r\n if (len > 0 && len < 10) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/add-communication',\r\n );\r\n }\r\n }\r\n\r\n /* Function Definitions */\r\n function dropChannel(model, extra) {\r\n const data = vm.notificationPreferences;\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function dropCommunication(model, extra) {\r\n const data = vm.notificationPreferences;\r\n const addNew = notificationHelper.communicationChange(\r\n model,\r\n extra,\r\n vm.currentNotifModal,\r\n data,\r\n );\r\n let notifId = extra.split('/')[0];\r\n vm.indexNumb = JSON.parse(extra.split('/')[1]);\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.id === notifId) {\r\n cards.notifications[vm.indexNumb].communicationText = model.text;\r\n }\r\n });\r\n\r\n if (model.text !== '') {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n } else vm.disableSave[notifId] = true;\r\n\r\n if (addNew) {\r\n if (vm.modelSelected === 'TXT') {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypesMobile,\r\n null,\r\n null,\r\n );\r\n } else {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n }\r\n vm.modalForm.$setUntouched();\r\n vm.currentNotifModal.communicationModel = '';\r\n vm.showModalLoader = false;\r\n vm.isDuplicate = false;\r\n vm.typeError = false;\r\n angular.element('#BillingAddNewCommunicationModal').modal('show');\r\n $('#AddCommunication').val('');\r\n vm.gatActiveCard = vm.indexToCardTitle(vm.currentNotifModal.notifIdModal);\r\n\r\n let cardName = subheadline(notifId);\r\n if (model.text != 'Add New Phone Number') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/add-communication/add-new-email',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/add-communication/add-new-phone-number',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function generateGATEvents(notifId, showError, getCode, getMsg) {\r\n cardName = subheadline(notifId);\r\n\r\n if (showError == 'S') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/success/' +\r\n cardName +\r\n '/outages-and-services/add-communication/preference-successfully-saved',\r\n );\r\n } else if (showError == 'E') {\r\n vm.preferenceAction = sessionStorageService.get('PreferenceAction');\r\n if (vm.preferenceAction === 'UPDATE') {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`,\r\n cardName,\r\n );\r\n } else {\r\n pushDL(\r\n 'preferences-notifications_error',\r\n getCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(getMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.CreatePreferences}`,\r\n cardName,\r\n );\r\n }\r\n if (vm.buttonClicked && vm.buttonClicked.toLowerCase() === 'save') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/outages-and-services/' +\r\n getCode +\r\n '/trouble-saving-your-changes',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/outages-and-services/' +\r\n getCode +\r\n '/trouble-updating-your-changes',\r\n );\r\n }\r\n }\r\n }\r\n\r\n function saveNewCommunication(saveChanges, button) {\r\n vm.typeError = false;\r\n if (button === 'Cancel') {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n const data = vm.notificationPreferences;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n notificationHelper\r\n .resetChanges(notifId, data, vm.currentNotifModal)\r\n .then(() => {\r\n return;\r\n });\r\n } else {\r\n saveChanges = vm.isvalidSubmit;\r\n saveChanges == true\r\n ? (vm.showModalLoader = true)\r\n : (vm.showModalLoader = false);\r\n vm.modalForm.AddCommunication.$touched = true;\r\n const data = vm.notificationPreferences;\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n vm.modalValue = vm.currentNotifModal.communicationModel\r\n ? vm.currentNotifModal.communicationModel\r\n : '';\r\n\r\n if (\r\n vm.modalForm.AddCommunication.$error.email &&\r\n vm.currentNotifModal.communicationModel == undefined\r\n ) {\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n\r\n if (\r\n vm.currentNotifModal.communicationModel != '' &&\r\n vm.currentNotifModal.phoneType == undefined\r\n ) {\r\n vm.typeError = true;\r\n }\r\n if (saveChanges) {\r\n notificationHelper\r\n .createNewCommunication(\r\n saveChanges,\r\n notifId,\r\n data,\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n )\r\n .then(result => {\r\n //Hides the Modal when clicked on cancel or when data is correct and changes are saved\r\n if (\r\n $rootScope.emailErrorModal !== true &&\r\n $rootScope.phoneErrorModal !== true &&\r\n saveChanges !== false\r\n ) {\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n } else {\r\n if (result === undefined) {\r\n saveNewCommunication(false, 'Cancel');\r\n }\r\n vm.showModalLoader = false;\r\n $('#AddCommunication').val(vm.modalInputValue);\r\n vm.currentNotifModal.communicationModel = vm.modalInputValue;\r\n }\r\n }); //.then(function(){vm.disableSave = isIdentical(notifId);});\r\n }\r\n if (saveChanges === true) {\r\n vm.disableSave[notifId] = false;\r\n } else {\r\n vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n }\r\n //vm.disableSave[notifId] = false; //vm.isIdentical(notifId);\r\n\r\n /*if (saveChanges === true) {\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n }*/\r\n }\r\n }\r\n\r\n // function resetAddCommunicationModalForm(modalForm) {\r\n // modalForm.$setUntouched();\r\n // }\r\n\r\n function changeFormatDetailed(active, notifId) {\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n currentNotif.format_condensed = !currentNotif.format_detailed;\r\n }\r\n\r\n function enrolledNotif(notifId, enrolledStatus, title) {\r\n vm.clickedSave[notifId] = false;\r\n vm.currentNotifModal.notifIdModal = notifId;\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.currentNotifModal.title = title;\r\n handleEnrollment(\r\n vm.currentNotifModal.enrolledStatus,\r\n vm.currentNotifModal.notifIdModal,\r\n );\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function handleEnrollment(enrolledStatus, notifId) {\r\n if (enrolledStatus) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n vm.notificationDropdowns[notifId].channel = [];\r\n vm.notificationDropdowns[notifId].communication = [];\r\n notificationHelper.enrolledNotif(\r\n vm.currentNotifModal.notifIdModal,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/add-communication',\r\n );\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/load/' +\r\n cardName +\r\n '/outages-and-services/save',\r\n );\r\n } else if (!enrolledStatus) {\r\n //creating a temporary copy of notificationPrefences to send in the API call - if we send original the front end\r\n // is getting affected white api returns a response\r\n const tempNotificationPreferences = JSON.parse(JSON.stringify(vm.notificationPreferences));\r\n let newData = _.find(\r\n tempNotificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.enrolled = false;\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n vm.scrollY = window.scrollY;\r\n notificationHelper\r\n .saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n tempNotificationPreferences,\r\n currentData,\r\n currentCommunication,\r\n )\r\n .then(result => {\r\n if (\r\n result[0]?.ReturnCodes &&\r\n result[0]?.ReturnCodes[0]?.ReturnCode1?.Type === 'E'\r\n ) {\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\r\n let showType = result[0].ReturnCodes[0].ReturnCode1?.Type;\r\n let returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum;\r\n let prefError = result[0].ReturnCodes[0].ReturnCode1?.Message;\r\n $rootScope.outagesBanner[vm.currentNotifModal.notifIdModal] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n $rootScope.updateError = true;\r\n generateGATEvents(\r\n vm.currentNotifModal.notifIdModal,\r\n showType,\r\n returnCode,\r\n prefError,\r\n );\r\n } else {\r\n vm.showLoader[vm.currentNotifModal.notifIdModal] = false;\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n vm.notificationPreferences = tempNotificationPreferences;\r\n newData.enrolled = false;\r\n let cardName = subheadline(vm.currentNotifModal.notifIdModal);\r\n if (result[0] != undefined) {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/outages-and-services/off',\r\n );\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n });\r\n broadcastService.refreshPreferences();\r\n }\r\n }\r\n\r\n function setModels() {\r\n const data = vm.notificationPreferences;\r\n vm.notificationPreferences.forEach(x => {\r\n vm.disableSave[x.id] = true;\r\n vm.clickedSave[x.id] = false;\r\n vm.showError[x.id] = [];\r\n vm.showLoader[x.id] = false;\r\n });\r\n vm.preferencesReady = true;\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.notifications) {\r\n notificationHelper.setNotifications(\r\n cards.id,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n } else {\r\n cards.deleted = 10;\r\n cards.notifications = [];\r\n }\r\n cards.editionMode = false;\r\n });\r\n notificationHelper.setCommunicationValue(\r\n vm.cardsModel,\r\n vm.notificationPreferences,\r\n vm.communicationOptions,\r\n );\r\n prepaidChanels();\r\n }\r\n\r\n function addNotification(notifId) {\r\n const data = vm.notificationPreferences;\r\n const { phones } = vm.communicationOptions;\r\n let newNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.cardsModel,\r\n );\r\n if (newNotif == currentNotif) {\r\n vm.disableSave[notifId] = true;\r\n } else {\r\n notificationHelper.addNotification(\r\n notifId,\r\n phones,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n prepaidChanels();\r\n }\r\n\r\n function cancelChanges(notifId) {\r\n vm.showError[notifId] = [];\r\n vm.clickedSave[notifId] = false;\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n\r\n notificationHelper.cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/clickthrough/' +\r\n cardName +\r\n '/outages-and-services/cancel',\r\n );\r\n\r\n /*if ($scope.$parent.isPrepaid) {\r\n vm.notificationPreferences.forEach(cards => {\r\n cards.enrolled = true;\r\n });\r\n }*/\r\n }\r\n document.addEventListener('click', () => {\r\n if (!vm.noChanges) {\r\n $rootScope.outagesBanner = {};\r\n }\r\n $rootScope.emailErrorModal = false;\r\n $rootScope.phoneErrorModal = false;\r\n vm.noChanges = false;\r\n });\r\n function saveChanges(notifId, index, madeChanges) {\r\n $rootScope.outagesBanner[notifId] = {\r\n type: '',\r\n message: '',\r\n };\r\n if (madeChanges) {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n //vm.notificationPreferences[index].loadingChanges = true;\r\n vm.showLoader[notifId] = true;\r\n notificationHelper\r\n .saveChanges(notifId, newData, currentData, currentCommunication)\r\n .then(result => {\r\n vm.showType = result[0].ReturnCodes[0].ReturnCode1?.Type;\r\n vm.returnCode = result[0].ReturnCodes[0].ReturnCode1?.MessageNum;\r\n vm.prefError = result[0].ReturnCodes[0].ReturnCode1?.Message;\r\n\r\n if (\r\n result[0].ReturnCodes &&\r\n result[0].ReturnCodes[0].ReturnCode1?.Type === 'E'\r\n ) {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.outagesBanner[notifId] = {\r\n type: 'E',\r\n message: '',\r\n };\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n } else {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.outagesBanner[notifId] = {\r\n type: 'S',\r\n message: '',\r\n };\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n\r\n const oldData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.outage,\r\n );\r\n gatAddDeleteEvent(notifId, newData, oldData);\r\n\r\n if (vm.notificationPreferences[index].confirmButton != 'Update') {\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/toggle/' +\r\n cardName +\r\n '/outages-and-services/toggle/on',\r\n );\r\n }\r\n // vm.toastData.option = 'success';\r\n // vm.toastData.messageOption = vm.getSuccessMessage(index);\r\n // vm.toastData.show = true;\r\n\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );\r\n }\r\n broadcastService.refreshPreferences();\r\n $window.scrollTo(0, 0);\r\n })\r\n .catch(function() {\r\n vm.showLoader[notifId] = false;\r\n $rootScope.outagesBanner[notifId] = {\r\n type: 'E',\r\n message: 'Unexpected error',\r\n };\r\n vm.notificationPreferences[index].loadingChanges = false;\r\n // vm.toastData.option = 'error';\r\n // vm.toastData.messageOption = 'Unexpected error';\r\n // vm.toastData.show = true;\r\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );*/\r\n broadcastService.refreshPreferences();\r\n $window.scrollTo(0, 0);\r\n })\r\n .then(function() {\r\n generateGATEvents(notifId, vm.showType, vm.returnCode, vm.prefError);\r\n });\r\n /*sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.outage,\r\n vm.notificationPreferences,\r\n );*/\r\n //broadcastService.refreshPreferences();\r\n vm.clickedSave[notifId] = false;\r\n // $window.scrollTo(0, 0);\r\n } else {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n let result = notificationHelper.compareChanges(\r\n notifId,\r\n newData,\r\n currentData,\r\n );\r\n if (result) {\r\n vm.showLoader[notifId] = false;\r\n vm.noChanges = true;\r\n $rootScope.outagesBanner[notifId] = {\r\n type: 'N',\r\n message: '',\r\n };\r\n let cardName = subheadline(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/outages-and-services/na/make-change-to-update-your-preference',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-make-change-to-update-your-preference-|-na',\r\n cardName,\r\n );\r\n }\r\n }\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n });\r\n };\r\n\r\n function deleteNotification(notifId, dropDownIndex) {\r\n const data = vm.notificationPreferences;\r\n let cardName = subheadline(notifId);\r\n\r\n let globaldata = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.outage,\r\n );\r\n\r\n let index = globaldata.findIndex(x => x.id == notifId);\r\n globaldata = globaldata[index].notifications;\r\n let deleteValue =\r\n data[index].notifications[dropDownIndex].communicationText;\r\n let channelType = data[index].notifications[dropDownIndex].channel;\r\n deleteValue = deleteValue.toLowerCase();\r\n if(channelType != \"MAIL\" && deleteValue != 'send my communication to'){\r\n deleteValue = deleteValue.replace(/[^0-9]/g, '');\r\n }\r\n\r\n if(deleteValue != 'send my communication to' && globaldata != undefined){\r\n let commText = '';\r\n\r\n globaldata.forEach(notif => {\r\n if (notif.communicationText != undefined) {\r\n commText = notif.communicationText.toLowerCase();\r\n } else {\r\n commText = notif.communication.toLowerCase();\r\n }\r\n if (commText === deleteValue && notif.channel == channelType) {\r\n vm.errorDelete = true;\r\n let type =\r\n notif.channel == 'TXT'\r\n ? 'text'\r\n : notif.channel == 'VOIC'\r\n ? 'call'\r\n : 'email';\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/intent/' +\r\n cardName +\r\n '/outages-and-services/delete-intent',\r\n );\r\n pushDL(\r\n 'preferences-notifications_communications-methods',\r\n 'delete-|-intent',\r\n type + '-|-' + cardName,\r\n );\r\n }\r\n });\r\n }\r\n vm.showError[notifId].splice(dropDownIndex, 1);\r\n notificationHelper.deleteNotification(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n vm.notificationDropdowns,\r\n );\r\n if (\r\n vm.notificationPreferences.filter(element => element.notifications) == ''\r\n ) {\r\n vm.disableSave[notifId] = true;\r\n } else vm.disableSave[notifId] = vm.isIdentical(notifId);\r\n // sessionStorageService.set(\r\n // assetService.notifPref.sessionStorage.outage,\r\n // vm.notificationPreferences,\r\n // );\r\n notificationHelper.dropdownFilter(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n '',\r\n );\r\n }\r\n\r\n function cancelChange(notification) {\r\n notification.value = !notification.value;\r\n }\r\n\r\n function communicationVal(model, extra) {\r\n if (model === 'Text') {\r\n model = 'TXT';\r\n } else if (model === 'Call') {\r\n model = 'VOIC';\r\n } else if (model === 'Email') {\r\n model = 'MAIL';\r\n }\r\n const data = vm.notificationPreferences;\r\n let cardId = extra.split('/')[0];\r\n vm.modelSelected = model;\r\n notificationHelper.dropdownFilter(\r\n cardId,\r\n vm.communicationOptions,\r\n vm.enrolledPref,\r\n model,\r\n );\r\n vm.displayOptions = sessionStorageService.get('displayOptions');\r\n notificationHelper.commChange(\r\n model,\r\n extra,\r\n vm.displayOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function getPreferences(preferences, comm_opt) {\r\n vm.notificationPreferences = preferences;\r\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\r\n vm.cardsModel = vm.cardsModel.map(item => {\r\n if (item.notifications)\r\n item.notifications = genericHelperService.notReferencesArrayObjects(\r\n item.notifications,\r\n );\r\n else item.notifications = [];\r\n return item;\r\n });\r\n\r\n vm.communicationOptions = comm_opt;\r\n }\r\n\r\n function load() {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n const currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.outage,\r\n );\r\n vm.enrolledPref = currPref;\r\n currentCommunication = $scope.$parent.currComm;\r\n getPreferences(currPref, currentCommunication);\r\n setModels();\r\n }\r\n\r\n /* Initialization */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n\r\n function sendOutage(notifId, flagToggle) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: !flagToggle ? 'ON' : 'OFF',\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n\r\n function sendNotification(stringToConcat) {\r\n let vpvName =\r\n '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\r\n vpvName = lowerCasesAndDashesThenConcat(stringToConcat, vpvName);\r\n /*$rootScope.virtualPagePush('fire-vpv', vpvName);*/\r\n }\r\n\r\n function lowerCasesAndDashesThenConcat(stringToConcat, stringBase) {\r\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\r\n return stringBase.concat(stringToConcat);\r\n }\r\n function sendEditOutage(notifId, concatEdit, madeChanges) {\r\n $rootScope.outagesBanner = {};\r\n if (concatEdit === 'Edit' || madeChanges || concatEdit === 'Cancel') {\r\n let param = {\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: concatEdit,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n };\r\n vm.buttonClicked = concatEdit;\r\n if (concatEdit === 'Update') {\r\n param.buttonText = 'edit';\r\n param.addedSpec = concatEdit;\r\n $rootScope.updateError = true;\r\n }\r\n if (concatEdit === 'Save') {\r\n $rootScope.updateError = false;\r\n }\r\n /*notificationHelper.sendEventAttribute(param);*/\r\n } else {\r\n let i = 0;\r\n vm.showError[notifId] = [];\r\n const newData = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n newData.notifications.forEach(x => {\r\n if (\r\n (x.communicationText == 'Send My Communication To' ||\r\n x.communicationText == 'Add New Email') &&\r\n x.communication == 'Send My Communication To' &&\r\n x.channelText != 'Method'\r\n ) {\r\n inlineVPV(notifId, x.channelText);\r\n }\r\n });\r\n newData.notifications.forEach(x => {\r\n vm.showError[notifId].push(x.classError);\r\n i += 1;\r\n });\r\n vm.clickedSave[notifId] = true;\r\n }\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function closeToast() {\r\n vm.toastData.show = '';\r\n }\r\n function getSuccessMessage(index) {\r\n /*\r\n -----------------------------------------------------------------------------------\r\n Reference QC 40652/CCOT-11135 and CCOT-8947\r\n Hardcoding static message for all cards. Uncomment following if this changes in future\r\n -----------------------------------------------------------------------------------\r\n\r\n var titleTxt = '';\r\n switch(index){\r\n case 0:\r\n titleTxt = $scope.$parent.isPrepaid ? \"Electric Connect/Disconnect\" : \"Outages Alerts\";\r\n break;\r\n case 1:\r\n titleTxt = \"Service Orders\";\r\n break;\r\n case 2:\r\n titleTxt = \"Appointments\";\r\n break;\r\n default: titleTxt = 'Item';\r\n }\r\n return \"Success! \" + titleTxt + \" saved successfully!\"; */\r\n return 'Success! Changes saved.';\r\n }\r\n function indexToCardTitle(notifId) {\r\n let titleTxt = '';\r\n switch (notifId) {\r\n case 'ACTIVE_OUT':\r\n return vm.gatConstants.outageAlerts;\r\n case 'SRVO_NOT':\r\n return vm.gatConstants.serviceOrders;\r\n case 'APPT_REM':\r\n return vm.gatConstants.Appointments;\r\n case 'PPY_DISC':\r\n return vm.gatConstants.ElectricConnectDisconnect;\r\n default:\r\n titleTxt = 'Item';\r\n }\r\n }\r\n function isIdentical(notifId) {\r\n let enteredPairs = getPairs(vm.notificationPreferences, notifId);\r\n let currentPairs = getPairs(vm.cardsModel, notifId);\r\n return JSON.stringify(enteredPairs) === JSON.stringify(currentPairs);\r\n }\r\n function getPairs(comms, notifId) {\r\n let copy = genericHelperService.notReferencesArrayObjects(\r\n comms.filter(x => x.id === notifId)[0].notifications,\r\n );\r\n return copy\r\n .sort((a, b) => {\r\n if (a.channel !== b.channel)\r\n // order by channel, then by communication\r\n return a.channel.localeCompare(b.channel);\r\n return a.communication.localeCompare(b.communication);\r\n })\r\n .map(x => {\r\n return {\r\n channel: x.channel,\r\n communication: x.communication,\r\n };\r\n });\r\n }\r\n function isUnique() {\r\n vm.currentNotifModal.disableSave = notificationHelper.updateDisableSave(\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n );\r\n vm.isDuplicate = vm.currentNotifModal.disableSave;\r\n\r\n //To check for duplicate emails, length > 64\r\n if (vm.currentNotifModal.type == 'emails') {\r\n vm.modalInputValue = vm.modalForm.AddCommunication.$viewValue;\r\n let defaultItem = vm.communicationOptions.emails.filter(function(itm) {\r\n return itm.text === vm.modalInputValue;\r\n });\r\n vm.isDuplicate = defaultItem.length > 0 ? true : false;\r\n }\r\n }\r\n\r\n function initGatConstants(\r\n businessFunction,\r\n addedSpec,\r\n ActiveOut,\r\n ServoNot,\r\n ApptRem,\r\n PPYDesc,\r\n ) {\r\n vm.gatConstants.businessFunction = businessFunction;\r\n vm.gatConstants.addedSpec = addedSpec;\r\n vm.gatConstants.outageAlerts = ActiveOut;\r\n vm.gatConstants.serviceOrders = ServoNot;\r\n vm.gatConstants.Appointments = ApptRem;\r\n vm.gatConstants.ElectricConnectDisconnect = PPYDesc;\r\n }\r\n\r\n function gatNewComm(action, label, verify) {\r\n if (verify) {\r\n vm.isvalidSubmit = false;\r\n } else {\r\n vm.isvalidSubmit = true;\r\n notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.gatActiveCard,\r\n subheadline: label,\r\n });\r\n }\r\n }\r\n function sendAddNotification(notifId, action) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: action,\r\n headline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n function sendDelete(notifId, channelTxt, label) {\r\n /*notificationHelper.sendEventAttribute({\r\n workFlow: vm.gatConstants.businessFunction,\r\n buttonText: channelTxt,\r\n addedSpec: label,\r\n headline: vm.gatConstants.addedSpec,\r\n subheadline: vm.indexToCardTitle(notifId),\r\n });*/\r\n }\r\n}\r\n","app.controller(\r\n 'ServiceOrdersPreferencesController',\r\n ServiceOrdersPreferencesController,\r\n);\r\nServiceOrdersPreferencesController.$inject = [\r\n 'genericHelperService',\r\n 'NotificationPreferencesHelperService',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n];\r\n\r\nfunction ServiceOrdersPreferencesController(\r\n genericHelperService,\r\n notificationHelper,\r\n assetService,\r\n sessionStorageService,\r\n $rootScope,\r\n) {\r\n /* Global Vars */\r\n\r\n const vm = this;\r\n\r\n /* Scope Vars */\r\n vm.cardsModel = [];\r\n vm.chan_opt = [];\r\n vm.comm_opt = [];\r\n vm.channelItemsDDList = null;\r\n vm.preferencesReady = false;\r\n vm.notificationPreferences = null;\r\n vm.emailToDelete = null;\r\n vm.phoneToDelete = null;\r\n vm.notificationToConfirm = null;\r\n vm.notificationDropdowns = {\r\n SRVO_NOT: {\r\n channel: [],\r\n communication: [],\r\n },\r\n };\r\n vm.currentNotifModal = {\r\n title: '',\r\n type: '',\r\n notifIdModal: '',\r\n channelIdModal: null,\r\n enrolledStatus: false,\r\n };\r\n\r\n /* Function Declarations */\r\n\r\n vm.cancelChange = cancelChange;\r\n vm.deleteNotification = deleteNotification;\r\n vm.addNotification = addNotification;\r\n vm.dropChannel = dropChannel;\r\n vm.dropCommunication = dropCommunication;\r\n vm.cancelChanges = cancelChanges;\r\n vm.checkPlaceholder = checkPlaceholder;\r\n vm.saveChanges = saveChanges;\r\n vm.changeFormatDetailed = changeFormatDetailed;\r\n vm.enrolledNotif = enrolledNotif;\r\n vm.saveNewCommunication = saveNewCommunication;\r\n vm.handleEnrollment = handleEnrollment;\r\n vm.cancelModal = cancelModal;\r\n vm.sendNotification = sendNotification;\r\n vm.phonesTypes = [];\r\n\r\n /* Function Definitions */\r\n function dropChannel(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.channelChange(\r\n model,\r\n extra,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function dropCommunication(model, extra) {\r\n const data = vm.notificationPreferences;\r\n\r\n const addNew = notificationHelper.communicationChange(\r\n model,\r\n extra,\r\n vm.currentNotifModal,\r\n data,\r\n );\r\n\r\n if (addNew)\r\n angular.element('#BillingAddNewCommunicationModal').modal('show');\r\n }\r\n\r\n function saveNewCommunication(saveChanges) {\r\n const data = vm.notificationPreferences;\r\n\r\n const notifId = vm.currentNotifModal.notifIdModal;\r\n\r\n notificationHelper.createNewCommunication(\r\n saveChanges,\r\n notifId,\r\n data,\r\n vm.currentNotifModal,\r\n vm.communicationOptions,\r\n );\r\n\r\n notificationHelper.updateNotif(\r\n notifId,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n\r\n angular.element('#BillingAddNewCommunicationModal').modal('hide');\r\n }\r\n\r\n function changeFormatDetailed(active, notifId) {\r\n let currentNotif = notificationHelper.getCurrentNotification(\r\n notifId,\r\n vm.notificationPreferences,\r\n );\r\n currentNotif.format_condensed = !currentNotif.format_detailed;\r\n }\r\n\r\n function enrolledNotif(notifId, enrolledStatus, title) {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('show');\r\n vm.currentNotifModal.notifIdModal = notifId;\r\n vm.currentNotifModal.enrolledStatus = !enrolledStatus;\r\n vm.currentNotifModal.title = title;\r\n }\r\n\r\n function cancelModal() {\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function handleEnrollment(enrolledStatus) {\r\n if (enrolledStatus) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n notificationHelper.enrolledNotif(\r\n vm.currentNotifModal.notifIdModal,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n } else if (!enrolledStatus) {\r\n let newData = _.find(\r\n vm.notificationPreferences,\r\n element => element.id === vm.currentNotifModal.notifIdModal,\r\n );\r\n newData.notifications = [];\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(\r\n vm.currentNotifModal.notifIdModal,\r\n vm.notificationPreferences,\r\n currentData,\r\n );\r\n newData.enrolled = false;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n }\r\n\r\n function setModels() {\r\n const data = vm.notificationPreferences;\r\n\r\n vm.preferencesReady = true;\r\n\r\n vm.notificationPreferences.forEach(cards => {\r\n if (cards.notifications) {\r\n notificationHelper.setNotifications(\r\n cards.id,\r\n vm.communicationOptions,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n } else {\r\n cards.deleted = 5;\r\n cards.notifications = [];\r\n }\r\n });\r\n }\r\n\r\n function addNotification(notifId) {\r\n const data = vm.notificationPreferences;\r\n const { phones } = vm.communicationOptions;\r\n\r\n notificationHelper.addNotification(\r\n notifId,\r\n phones,\r\n vm.notificationDropdowns,\r\n data,\r\n );\r\n }\r\n\r\n function cancelChanges(notifId) {\r\n const data = vm.notificationPreferences;\r\n const dataModel = vm.cardsModel;\r\n\r\n notificationHelper.cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n vm.notificationDropdowns,\r\n vm.communicationOptions,\r\n );\r\n }\r\n\r\n function saveChanges(notifId) {\r\n const newData = vm.notificationPreferences;\r\n const currentData = vm.cardsModel;\r\n notificationHelper.saveChanges(notifId, newData, currentData);\r\n }\r\n\r\n function deleteNotification(notifId, dropDownIndex) {\r\n const data = vm.notificationPreferences;\r\n\r\n notificationHelper.deleteNotification(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n vm.notificationDropdowns,\r\n );\r\n }\r\n\r\n function cancelChange(notification) {\r\n notification.value = !notification.value;\r\n angular.element('#ModalManageNotificationPreferenceChange').modal('hide');\r\n }\r\n\r\n function checkPlaceholder() {\r\n setTimeout(() => {\r\n $('#AddCommunication').removeClass('ng-touched');\r\n }, '200');\r\n }\r\n\r\n function getPreferences(preferences, comm_opt) {\r\n vm.notificationPreferences = preferences;\r\n vm.cardsModel = genericHelperService.notReferencesArrayObjects(preferences);\r\n vm.cardsModel = vm.cardsModel.map(item => {\r\n if (item.notifications)\r\n item.notifications = genericHelperService.notReferencesArrayObjects(\r\n item.notifications,\r\n );\r\n else item.notifications = [];\r\n return item;\r\n });\r\n\r\n vm.communicationOptions = comm_opt;\r\n if (vm.communicationOptions.phones.length < 5)\r\n vm.communicationOptions.phones.push(\r\n assetService.notifPref.addNewComm.phone,\r\n );\r\n if (vm.communicationOptions.emails.length < 5)\r\n vm.communicationOptions.emails.push(\r\n assetService.notifPref.addNewComm.email,\r\n );\r\n }\r\n\r\n function load() {\r\n vm.phonesTypes = genericHelperService.arrayToDrop(\r\n assetService.notifPref.phonesTypes,\r\n null,\r\n null,\r\n );\r\n\r\n const currComm = {\r\n phones: [],\r\n emails: [],\r\n };\r\n\r\n const currPref = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.servOrd,\r\n );\r\n currComm.phones = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.commOpt.notifPhones,\r\n );\r\n currComm.emails = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.emails,\r\n );\r\n\r\n getPreferences(currPref, currComm);\r\n setModels();\r\n }\r\n\r\n /* Initialization */\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n\r\n function sendNotification(stringToConcat) {\r\n let vpvName =\r\n '/vpv/authenticated/notification-preferences/outages/outages-alerts/OFF/';\r\n stringToConcat = stringToConcat.replace(/\\s+/g, '-').toLowerCase();\r\n vpvName = vpvName.concat(stringToConcat);\r\n $rootScope.virtualPagePush('fire-vpv', vpvName);\r\n }\r\n}\r\n","ccPrepaidAddSpeedPay.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'speedpayService',\r\n 'getPrepaidDetailsService',\r\n 'getAccountBalanceForPrepaid',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'getLoggedInUserDetailsService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'commongaTaggingService',\r\n];\r\n\r\napp.controller('ccPrepaidAddSpeedPay', ccPrepaidAddSpeedPay);\r\n\r\nfunction ccPrepaidAddSpeedPay(\r\n $log,\r\n assetService,\r\n speedpayService,\r\n getPrepaidDetailsService,\r\n getAccountBalanceForPrepaid,\r\n commonService,\r\n sessionStorageService,\r\n getLoggedInUserDetailsService,\r\n getAccountBalanceForRegularAccountService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalSelectedAccount = null;\r\n let globalAccountInfo = null;\r\n let accountBalanceDetails = null;\r\n let prepaidDetails = null;\r\n let billingInfo = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.speedpay = speedpay;\r\n vm.user = '';\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n vm.goToPage = goToPage;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function goToPage(url) {\r\n location.href = url;\r\n }\r\n\r\n function speedpay() {\r\n const zipcode = vm.user.accountData.zipCode;\r\n speedpayService.getSpeedpayUrl({\r\n action: assetService.strings.START,\r\n login: vm.user.value,\r\n password: zipcode,\r\n UserID: vm.currentUser.cdpId,\r\n returnUrl: window.location.origin + vm.returnUrl,\r\n }).then(result => {\r\n location.href = result;\r\n });\r\n }\r\n\r\n function loadUserDetails(globalAccountInfo) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n const dtaUsers = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n vm.user = dtaUsers.accounts.find(\r\n data => data.value === globalSelectedAccount.accountNum,\r\n );\r\n }\r\n\r\n function load() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n loadUserDetails(globalAccountInfo);\r\n\r\n commonService\r\n .executePromises([\r\n getPrepaidDetails({\r\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\r\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\r\n bankDetail: false,\r\n }),\r\n getAccountBalance({\r\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\r\n }),\r\n getAccountBalanceRegular({\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n globalAccountInfo.accountSelected.accountNum,\r\n zipCode: globalAccountInfo.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n setModels();\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function getPrepaidDetails(params) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(\r\n result => {\r\n prepaidDetails = {\r\n ...result.d.PrepaidToBP.results[0].BPToCA.results[0],\r\n };\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalance(params) {\r\n return getAccountBalanceForPrepaid.sitecore\r\n .getAccountBalanceForPrepaid(params)\r\n .then(\r\n result => {\r\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalanceRegular(params) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(params)\r\n .then(\r\n result => {\r\n billingInfo = result.getAccountAndBillingInfoResList[0];\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n vm.costPerDay = parseFloat(prepaidDetails.AverageCostPerDay).toFixed(2);\r\n let accountBalance = accountBalanceDetails.PrepaidBalance; // billingInfo.totalDueDlrs || 0;\r\n //store balance in session\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountBalance,\r\n accountBalance,\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n vm.loadingSpinner = true;\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n load();\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n } else {\r\n load();\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","ccPrepaidAddFundsSuccess.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'getAccountBalanceForPrepaid',\r\n 'commonService',\r\n 'sessionStorageService',\r\n 'getLoggedInUserDetailsService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'commongaTaggingService',\r\n];\r\n\r\napp.controller('ccPrepaidAddFundsSuccess', ccPrepaidAddFundsSuccess);\r\n\r\nfunction ccPrepaidAddFundsSuccess(\r\n $log,\r\n assetService,\r\n getAccountBalanceForPrepaid,\r\n commonService,\r\n sessionStorageService,\r\n // getLoggedInUserDetailsService,\r\n getAccountBalanceForRegularAccountService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let accountBalanceDetails = null;\r\n let billingInfo = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n vm.showSuccessMessage = false;\r\n vm.goToPage = goToPage;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function goToPage(url) {\r\n location.href = url;\r\n }\r\n\r\n function load() {\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n\r\n commonService\r\n .executePromises([\r\n getAccountBalance({\r\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\r\n }),\r\n getAccountBalanceRegular({\r\n accountList: [\r\n {\r\n contractAccountNumber:\r\n globalAccountInfo.accountSelected.accountNum,\r\n zipCode: globalAccountInfo.accountSelected.zipCode,\r\n },\r\n ],\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n showSuccessMessage();\r\n vm.loadingSpinner = false;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function showSuccessMessage() {\r\n let previousAccountBalance = sessionStorageService.get(\r\n assetService.storageKeys.accountBalance,\r\n );\r\n let currentAccountBalance = accountBalanceDetails.PrepaidBalance; \r\n // billingInfo.totalDueDlrs || 0;\r\n\r\n if (\r\n parseFloat(currentAccountBalance) > parseFloat(previousAccountBalance)\r\n ) {\r\n let addedAmount =\r\n parseFloat(currentAccountBalance) - parseFloat(previousAccountBalance);\r\n vm.addedAmount = addedAmount.toFixed(2);\r\n vm.showSuccessMessage = true;\r\n vm.showComponent = true;\r\n //store latest balance in session\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountBalance,\r\n currentAccountBalance,\r\n );\r\n virtualPagePush(\r\n 'prepaid-advantage',\r\n 'add-funds',\r\n 'success',\r\n 'confirmation',\r\n );\r\n } else {\r\n location.href = vm.ErrorPageUrl;\r\n }\r\n }\r\n\r\n function getAccountBalance(params) {\r\n return getAccountBalanceForPrepaid.sitecore\r\n .getAccountBalanceForPrepaid(params)\r\n .then(\r\n result => {\r\n accountBalanceDetails = result.d.PrepayCAToBAL_NAV;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalanceRegular(params) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(params)\r\n .then(\r\n result => {\r\n billingInfo = result.getAccountAndBillingInfoResList[0];\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n vm.loadingSpinner = true;\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ccPrepaidAddFunds', ccPrepaidAddFunds);\r\nccPrepaidAddFunds.$inject = [\r\n 'prepaidService',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n];\r\n\r\nfunction ccPrepaidAddFunds(\r\n prepaidService,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n $state.go(prepaidService.prepaidRouteState.ADDFUNDS_LP);\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n const globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\napp.controller('CCAutoReloadWhenController', CCAutoReloadWhenController);\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nCCAutoReloadWhenController.$inject = [\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n];\r\n\r\n// eslint-disable-next-line max-len\r\nfunction CCAutoReloadWhenController(\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n vm.newAmountsArray = [];\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.autoReload = {\r\n when: {},\r\n };\r\n\r\n $rootScope.mainBtnActivate = true;\r\n $rootScope.apiValidation = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.formatNewAmounts = formatNewAmounts;\r\n vm.sumAll = sumAll;\r\n /* --------------Function Definitions-----------------------*/\r\n function sumAll() {\r\n vm.newTotalAmount = 0;\r\n vm.totalNoWarmth = 0;\r\n let element = vm.autoReload.when.amount;\r\n if (isNaN(Number(element.charAt(0)))) {\r\n if (element.charAt(0) === '-') {\r\n vm.newTotalAmount += Number(element);\r\n } else {\r\n var sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n vm.newTotalAmount += Number(sub);\r\n }\r\n } else {\r\n vm.newTotalAmount += Number(element);\r\n }\r\n\r\n vm.autoReload.when.amount = vm.newTotalAmount.toFixed(2);\r\n vm.formCompleted();\r\n }\r\n\r\n vm.formCompleted = function() {\r\n if (vm.autoReload.when.whenOption === 'BalanceEqualToOrBelow') {\r\n vm.autoReload.when.daysRemaining = undefined;\r\n $rootScope.mainBtnActivate = !vm.autoReload.when.amount;\r\n }\r\n\r\n if (vm.autoReload.when.whenOption === 'DaysRemaining') {\r\n vm.autoReload.when.amount = undefined;\r\n $rootScope.mainBtnActivate = !vm.autoReload.when.daysRemaining;\r\n }\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n };\r\n\r\n function formatNewAmounts(index, ident) {\r\n //sumAll();\r\n vm.newAmountsArray[index] = {\r\n id: ident,\r\n bill: isNaN(vm.bindedAmounts[index].charAt(0))\r\n ? vm.bindedAmounts[index].charAt(0) == '-'\r\n ? vm.bindedAmounts[index]\r\n : vm.bindedAmounts[index].substring(1).replace(/,/g, '')\r\n : vm.bindedAmounts[index],\r\n };\r\n }\r\n\r\n function load() {\r\n $rootScope.btnType = false;\r\n\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n\r\n if (storage) vm.autoReload = storage || {};\r\n if (storage) vm.autoReload.when = storage.when || {};\r\n //come to the service\r\n vm.autoReload.prepaid = storage.averageCostPerDay;\r\n\r\n if (vm.autoReload.prepaid != '') {\r\n vm.autoReload.prepaid = parseFloat(vm.autoReload.prepaid).toFixed(2);\r\n vm.autoReload.averageCostPerDay = vm.autoReload.prepaid;\r\n }\r\n\r\n if (!vm.autoReload.when.whenOption) {\r\n vm.autoReload.when.whenOption = 'BalanceEqualToOrBelow';\r\n }\r\n vm.formCompleted();\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n $scope.$on('saveData', (event, data) => {\r\n $rootScope.btnType = true;\r\n $rootScope.apiValidation = false;\r\n $rootScope.mainBtnActivate = false;\r\n\r\n if (vm.autoReload.when.whenOption === 'DaysRemaining') {\r\n vm.autoReload.when.amount = vm.autoReload.prepaid;\r\n }\r\n\r\n $scope.$emit(\r\n 'changueTrackSelected',\r\n assetService.autoReload.stepPosition.reloadAmount,\r\n );\r\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\r\n });\r\n\r\n vm.nextComponent = function(trackName) {};\r\n\r\n vm.gotoStep = function(trackName) {};\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\napp.controller('CCAutoReloadAmountController', CCAutoReloadAmountController);\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nCCAutoReloadAmountController.$inject = [\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n];\r\n\r\n// eslint-disable-next-line max-len\r\nfunction CCAutoReloadAmountController(\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.init = init;\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n };\r\n vm.workFlow = '';\r\n vm.headline = '';\r\n vm.buttonText = '';\r\n vm.virtual = [];\r\n /* --------------Global Vars-----------------------*/\r\n vm.autoReload = {\r\n reload: {},\r\n };\r\n $rootScope.mainBtnActivate = true;\r\n $rootScope.apiValidation = false;\r\n vm.showError = false;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.sumAll = sumAll;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function sumAll() {\r\n vm.newTotalAmount = 0;\r\n let element = vm.autoReload.reload.reloadAmount;\r\n if (isNaN(Number(element.charAt(0)))) {\r\n if (element.charAt(0) === '-') {\r\n vm.newTotalAmount += Number(element);\r\n } else {\r\n var sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n vm.newTotalAmount += Number(sub);\r\n }\r\n if (Number(sub) < 15 || Number(sub) > 500) {\r\n vm.showError = true;\r\n } else {\r\n vm.showError = false;\r\n }\r\n } else {\r\n vm.newTotalAmount += Number(element);\r\n }\r\n\r\n vm.autoReload.reload.reloadAmount = vm.newTotalAmount.toFixed(2);\r\n vm.formCompleted();\r\n }\r\n\r\n vm.formCompleted = function() {\r\n $rootScope.mainBtnActivate = !vm.autoReload.reload.reloadAmount;\r\n if (vm.showError) {\r\n $rootScope.mainBtnActivate = true;\r\n }\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n };\r\n\r\n function load() {\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n if (storage) vm.autoReload = storage || {};\r\n if (storage) vm.autoReload.reload = storage.reload || {};\r\n vm.autoReload.averageCostPerDay = storage.averageCostPerDay;\r\n\r\n if (vm.autoReload.averageCostPerDay != '') {\r\n vm.autoReload.averageCostPerDay = parseFloat(\r\n vm.autoReload.averageCostPerDay,\r\n ).toFixed(2);\r\n }\r\n //come to the service\r\n vm.formCompleted();\r\n }\r\n\r\n $scope.$on('cancelling', (event, data) => {\r\n vm.autoReload = {\r\n reload: {\r\n reloadAmount: '',\r\n },\r\n when: {\r\n amount: '',\r\n daysRemaining: '',\r\n },\r\n };\r\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\r\n });\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n $scope.$on('saveData', (event, data) => {\r\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\r\n attributePush(\r\n 'workFlow:' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'subheadline:' + vm.taggingElements.subHeadline,\r\n 'buttonText:' + vm.taggingElements.buttonText,\r\n 'addedSpec:' + vm.taggingElements.addedSpec,\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n vm.taggingElements.subHeadline,\r\n vm.taggingElements.buttonText,\r\n vm.taggingElements.addedSpec,\r\n );\r\n });\r\n vm.nextComponent = function(trackName) {};\r\n\r\n vm.gotoStep = function(trackName) {};\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(workflow, headline, subheadline, buttonText, addedSpec) {\r\n vm.taggingElements.workflow = workflow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subheadline;\r\n vm.taggingElements.buttonText = buttonText;\r\n vm.taggingElements.addedSpec = addedSpec;\r\n load();\r\n }\r\n\r\n //init();\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\napp.controller(\r\n 'CCAutoReloadBancAcctController',\r\n CCAutoReloadBancAcctController,\r\n);\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nCCAutoReloadBancAcctController.$inject = [\r\n '$log',\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'genericHelperService',\r\n 'manageBankAccountsForPrepaidService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'speedpayService',\r\n 'commongaTaggingService',\r\n 'ccAutoPayAssetService',\r\n];\r\n\r\n// eslint-disable-next-line max-len\r\nfunction CCAutoReloadBancAcctController(\r\n $log,\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n genericHelperService,\r\n manageBankAccountsForPrepaidService,\r\n getAccountBalanceForRegularAccountService,\r\n speedpayService,\r\n commongaTaggingService,\r\n ccAutoPayAssetService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.statusIsProcessing = false;\r\n /* --------------Global Vars-----------------------*/\r\n vm.bankAccounts = [];\r\n vm.bankList = [];\r\n vm.bankAccount = {};\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.selectedAccount = {};\r\n vm.autoReload = {\r\n payment: {},\r\n };\r\n vm.banckAccounts = [];\r\n vm.data = {};\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n };\r\n vm.mainBtnActivate = true;\r\n $rootScope.apiValidation = true;\r\n $rootScope.btnType = false;\r\n $rootScope.editBtn = false;\r\n vm.dropdownT = 'dropText';\r\n vm.dropdownV = assetService.autoReload.dropdownKeys.value;\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.disableBankAccount = false;\r\n vm.showDrops = false;\r\n vm.showAddbankAccountLink = true;\r\n vm.bankAccountPresent = false;\r\n vm.accNumEmpty = false;\r\n vm.accNameEmpty = false;\r\n vm.accRoutingEmpty = false;\r\n vm.accNumEmpty = false;\r\n vm.accConfirmNumEmpty = false;\r\n vm.accTypeEmpty = false;\r\n vm.doNotAcceptCheck = false;\r\n vm.getaccountNumLimit = undefined;\r\n vm.getNicknamelimit = undefined;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.clearAutoReload = clearAutoReload;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n vm.init = init;\r\n vm.getPrepaidDetails = getPrepaidDetails;\r\n vm.manageBankAccountsForPrepaid = manageBankAccountsForPrepaid;\r\n vm.hideBankForm = hideBankForm;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.populateGATagging = populateGATagging;\r\n const creditOrDebitCardWithSpeedpay =\r\n assetService.autoReload.paymentOptions.CreditOrDebitCardWithSpeedpay;\r\n const bankAccount = assetService.autoReload.paymentOptions.BankAccount;\r\n vm.errorCode = '';\r\n vm.BankAccountDefaultText = 'Select Bank Account';\r\n vm.goToSpeedpay = goToSpeedpay;\r\n vm.gatEvents = gatEvents;\r\n vm.checkNickname = checkNickname;\r\n vm.noNameError = noNameError;\r\n vm.checkAcctNum = checkAcctNum;\r\n vm.noAccError = noAccError;\r\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\r\n vm.noConfirmAccError = noConfirmAccError;\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n function checkNickname() {\r\n const nameLength = vm.data.bankAccountNickname\r\n ? vm.data.bankAccountNickname.length\r\n : 0;\r\n if (nameLength >= vm.getNicknamelimit) {\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function noNameError() {\r\n const nameLength = vm.data.bankAccountNickname\r\n ? vm.data.bankAccountNickname.length\r\n : 0;\r\n if (nameLength > vm.getNicknamelimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function checkAcctNum() {\r\n const accLength = vm.data.accountNumber ? vm.data.accountNumber.length : 0;\r\n if (accLength >= vm.getaccountNumLimit) {\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function noAccError() {\r\n const accLength = vm.data.accountNumber ? vm.data.accountNumber.length : 0;\r\n if (accLength > vm.getaccountNumLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function checkConfirmAcctNum() {\r\n const accCLength = vm.data.confirmAccountNumber\r\n ? vm.data.confirmAccountNumber.length\r\n : 0;\r\n if (accCLength >= vm.getaccountNumLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function noConfirmAccError() {\r\n const accCLength = vm.data.confirmAccountNumber\r\n ? vm.data.confirmAccountNumber.length\r\n : 0;\r\n if (accCLength > vm.getaccountNumLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function populateGATagging(workFlow, headline, subheadline, buttonText) {\r\n vm.taggingElements.workflow = workFlow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subheadline;\r\n vm.taggingElements.buttonText = buttonText;\r\n }\r\n function clearAutoReload(url) {\r\n vm.autoReload = {\r\n reload: {\r\n reloadAmount: '',\r\n },\r\n when: {\r\n amount: '',\r\n daysRemaining: '',\r\n },\r\n };\r\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\r\n window.location.href = url;\r\n }\r\n\r\n vm.formCompleted = function() {\r\n if (vm.autoReload.payment.paymentOption === bankAccount) {\r\n if (!vm.newBA) {\r\n vm.mainBtnActivate = !vm.autoReload.payment.banckAccount;\r\n } else {\r\n vm.mainBtnActivate =\r\n $scope.autoReload.$invalid ||\r\n vm.data.confirmAccountNumber !== vm.data.accountNumber ||\r\n !vm.data.accountNumber;\r\n }\r\n }\r\n\r\n if (vm.autoReload.payment.paymentOption === creditOrDebitCardWithSpeedpay) {\r\n vm.autoReload.payment.banckAccount = undefined;\r\n vm.autoReload.payment.banckAccountId = undefined;\r\n vm.data.bankAccountNickname = undefined;\r\n vm.data.routingNumber = undefined;\r\n vm.data.routingNumber2 = undefined;\r\n vm.data.accountNumber = undefined;\r\n vm.data.confirmAccountNumber = undefined;\r\n vm.data.accountType = undefined;\r\n vm.newBA = false;\r\n vm.mainBtnActivate = false;\r\n }\r\n };\r\n\r\n function getPrepaidDetails() {\r\n getPrepaidDetailsService.sitecore.getPrepaidDetails(vm.getData).then(\r\n result => {\r\n if (result.MessageNum !== '102') {\r\n vm.bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\r\n\r\n vm.bankList.forEach(bankAccount => {\r\n bankAccount.dropText = '';\r\n if (bankAccount.BankDescription) {\r\n bankAccount.dropText =\r\n bankAccount.BankDescription +\r\n ' - ' +\r\n '******' +\r\n bankAccount.BankAccountNumber.slice(-4);\r\n } else {\r\n bankAccount.dropText =\r\n ' ' +\r\n ' - ' +\r\n '******' +\r\n bankAccount.BankAccountNumber.slice(-4);\r\n }\r\n });\r\n vm.bankAccounts = genericHelperService.createDropdownList(\r\n vm.bankList,\r\n vm.dropdownV,\r\n vm.dropdownT,\r\n );\r\n vm.bankAccounts.push({\r\n text: 'Add Account',\r\n value: ccAutoPayAssetService.strings.addAccount,\r\n });\r\n }\r\n if (vm.bankList.length > 0) {\r\n vm.bankAccountPresent = true;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function manageBankAccountsForPrepaid(trackName) {\r\n manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(vm.data)\r\n .then(\r\n result => {\r\n vm.errorCode = $scope.analytics.ServiceErrorCode;\r\n if (\r\n result.d.ManageBankAcc_NAV.ReplyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n vm.autoReload.payment.banckAccountId =\r\n result.d.ManageBankAcc_NAV.BankId;\r\n vm.gotoStep(trackName);\r\n vm.autoReload.payment.warning = false;\r\n $scope.$emit('classTrack', 'ccAutoReloadReview');\r\n vm.statusIsProcessing = false;\r\n } else if (result.d.ManageBankAcc_NAV.MessageNum === vm.errorCode) {\r\n vm.statusIsProcessing = true;\r\n } else {\r\n vm.statusIsProcessing = true;\r\n vm.autoReload.payment.warning = true;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n if (vm.statusIsProcessing == true) {\r\n attributePush(\r\n 'workFlow:' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'subheadline:' + vm.taggingElements.subHeadline,\r\n 'buttonText:' + vm.taggingElements.buttonText,\r\n );\r\n virtualPagePush(\r\n 'prepaid-advantage',\r\n 'auto-reload',\r\n 'payment-method',\r\n 'select-a-reload-amount',\r\n 'add',\r\n 'error',\r\n );\r\n }\r\n }\r\n\r\n function gatEvents() {\r\n if (\r\n vm.data.bankAccountNickname != undefined &&\r\n vm.data.routingNumber2 != undefined &&\r\n vm.data.accountNumber != undefined &&\r\n vm.data.confirmAccountNumber != undefined &&\r\n vm.selectAccountType != undefined\r\n ) {\r\n attributePush(\r\n `workFlow:${$('#hidden-value').attr('workFlow')}`,\r\n `headline:${$('#hidden-value').attr('headLine')}`,\r\n `subheadline:${$('#hidden-value').attr('subheadLine')}`,\r\n `buttonText:${$('#hidden-value').attr('buttonText')}`,\r\n );\r\n virtualPagePush(\r\n `${$('#hidden-value').attr('workFlow')}`,\r\n `${$('#hidden-value').attr('headLine')}`,\r\n `${$('#hidden-value').attr('subheadLine')}`,\r\n `${$('#hidden-value').attr('buttonText')}`,\r\n `${$('#hidden-value').attr('addedSpec')}`,\r\n `${$('#hidden-value').attr('bankLabel')}`,\r\n `${$('#hidden-value').attr('buttonLabel')}`,\r\n );\r\n }\r\n }\r\n\r\n vm.addnew = function($event) {\r\n if ($event) {\r\n $event.preventDefault();\r\n }\r\n\r\n vm.newBA = true;\r\n vm.showDrops = true;\r\n vm.bankAccounts.forEach(item => {\r\n //delete item.selected;\r\n //Select the add account option in dropdown\r\n if (item.value === ccAutoPayAssetService.strings.addAccount) {\r\n vm.autoReload.payment.banckAccountId = '';\r\n item.selected = true;\r\n vm.BankAccountDefaultText = item.text;\r\n vm.selectedAccount = item.value;\r\n getAccountType();\r\n if (vm.autoReloadForm == null) {\r\n vm.autoReloadForm = {};\r\n }\r\n vm.autoReloadForm.bankAccount = item.value;\r\n }\r\n });\r\n showBankDetailsForm();\r\n };\r\n\r\n function showBankDetailsForm() {\r\n vm.newBA = true;\r\n vm.showDrops = true;\r\n vm.autoReload.payment.banckAccount = false;\r\n vm.mainBtnActivate = false;\r\n vm.formCompleted();\r\n }\r\n\r\n function getAccountBalance(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n vm.temp = [];\r\n vm.temp = result.getAccountAndBillingInfoResList.filter(\r\n item =>\r\n item.contractAccountNumber ==\r\n data.accountList[0].contractAccountNumber,\r\n );\r\n\r\n // vm.paynowStatus = (vm.temp[0].cashOnly === 'T' || vm.temp[0].noCheckDraftInd === 'T') ? \"failure\" : \"success\";\r\n\r\n if (vm.temp[0].cashOnly === 'T') {\r\n vm.disableBankAccount = true;\r\n } else {\r\n if (vm.temp[0].noCheckDraftInd === 'T') {\r\n vm.disableBankAccount = true;\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.statusIsProcessing = false;\r\n $rootScope.$broadcast('btnShow', true);\r\n // vm.banckAccounts = [{ text: 'Steve´s Ally', value: 'Steve´s Ally' }];\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n\r\n if (storage) vm.autoReload = storage || {};\r\n\r\n if (storage.payment) {\r\n vm.autoReload.payment = storage.payment;\r\n } else {\r\n vm.autoReload.payment = { paymentOption: '' };\r\n }\r\n\r\n vm.autoReload.copyTBD = 1.5;\r\n\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n accountBalanceRes = sessionStorageService.get('accountBalanceRes');\r\n vm.currentAccount = accountBalanceRes.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber == _globalSelectedAccount.accountNum,\r\n );\r\n vm.indicatorStatusCurrentAccount = vm.currentAccount[0];\r\n vm.doNotAcceptCheck =\r\n vm.indicatorStatusCurrentAccount.noCheckDraftInd === 'T' ? true : false;\r\n vm.getData = {\r\n businessPartnerId:\r\n sessionStorageService.get(assetService.storageKeys.relatedBPNumber) ||\r\n _globalAccountInfo.accountSelected.primaryBp,\r\n //contractAccountId: _globalSelectedAccount.accountNum,\r\n bankDetail: true,\r\n };\r\n\r\n vm.getPrepaidDetails();\r\n getAccountBalance({\r\n accountList: [\r\n { contractAccountNumber: _globalSelectedAccount.accountNum },\r\n ],\r\n });\r\n vm.formCompleted();\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n $scope.$on('dropdown', (event, data) => {\r\n vm.autoReload.payment.banckAccountId = data.value;\r\n });\r\n\r\n $scope.onSelectItem = function(item) {\r\n vm.showDrops = false;\r\n vm.newBA = false;\r\n vm.BankAccountDefaultText = item.text;\r\n vm.selectedAccount = _.find(\r\n vm.bankList,\r\n bankAcc => bankAcc.BankAccountId === item.value,\r\n );\r\n getAccountType();\r\n if (item.value === 'addAccount') {\r\n vm.showDrops = true;\r\n showBankDetailsForm();\r\n } else {\r\n vm.showDrops = false;\r\n vm.showAddbankAccountLink = false;\r\n }\r\n };\r\n\r\n $scope.onSelectItems = function(item) {\r\n vm.selectedAccount = _.find(\r\n vm.bankList,\r\n bankAcc => bankAcc.BankAccountId === item.value,\r\n );\r\n };\r\n\r\n function getAccountType() {\r\n vm.accountTypeValue = '';\r\n vm.accountType.forEach(item => {\r\n if (\r\n vm.selectedAccount &&\r\n item.value === vm.selectedAccount.BankAccountType\r\n ) {\r\n vm.accountTypeValue = item.text;\r\n }\r\n });\r\n }\r\n\r\n $scope.onSelectAccountType = function(item) {\r\n vm.formCompleted();\r\n };\r\n\r\n function hideBankForm() {\r\n vm.autoReloadForm.bankAccountInfo = true;\r\n if (vm.autoReloadForm.bankAccount) {\r\n vm.addBA = false;\r\n vm.mainBtnActivate = false;\r\n vm.autoReload.payment.banckAccountId = vm.autoReloadForm.bankAccount;\r\n }\r\n }\r\n\r\n vm.gotoStep = function(trackName) {\r\n $rootScope.btnType = true;\r\n $rootScope.editBtn = true;\r\n sessionStorageService.set(assetService.autoReload.storage, vm.autoReload);\r\n\r\n $rootScope.$broadcast('btnShow', false);\r\n $scope.$emit(\r\n 'changueTrackSelected',\r\n assetService.autoReload.stepPosition[trackName],\r\n );\r\n };\r\n\r\n function redirection() {\r\n vm.autoReload.payment.warning = false;\r\n vm.gotoStep(vm.trackName);\r\n $scope.$emit('classTrack', 'ccAutoReloadReview');\r\n }\r\n\r\n vm.nextComponent = function(trackName) {\r\n vm.accNameEmpty = vm.data.bankAccountNickname ? false : true;\r\n vm.accRoutingEmpty = vm.data.routingNumber2 ? false : true;\r\n vm.accNumEmpty = vm.data.accountNumber ? false : true;\r\n vm.accConfirmNumEmpty = vm.data.confirmAccountNumber ? false : true;\r\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\r\n if (vm.newBA && vm.autoReload.payment.paymentOption === bankAccount) {\r\n vm.data.action =\r\n assetService.serviceActions.manageBankAccountsForPrepaid.ADD;\r\n vm.data.businessPartnerId =\r\n sessionStorageService.get(assetService.storageKeys.relatedBPNumber) ||\r\n _globalSelectedAccount.primaryBp;\r\n vm.data.bankDescription = vm.data.bankAccountNickname;\r\n vm.data.routingNumber = `${vm.data.routingNumber2}`;\r\n vm.data.routingNumber = ('000000000' + vm.data.routingNumber).slice(-9);\r\n vm.data.accountType = vm.selectAccountType;\r\n vm.data.requestedBy = vm.emailId.primaryEmail;\r\n if (\r\n vm.data.bankAccountNickname != undefined &&\r\n vm.data.routingNumber2 != undefined &&\r\n vm.data.accountNumber != undefined &&\r\n vm.data.confirmAccountNumber != undefined &&\r\n vm.selectAccountType != undefined\r\n ) {\r\n vm.manageBankAccountsForPrepaid(trackName);\r\n }\r\n } else {\r\n vm.trackName = trackName;\r\n redirection();\r\n }\r\n };\r\n\r\n function goToSpeedpay() {\r\n var speedFrameUrl =\r\n location.href.split('?')[0] + '?action=' + assetService.strings.START;\r\n //Store the request in local storage\r\n sessionStorageService.set(\r\n assetService.storageKeys.speedframeCallBackUrl,\r\n speedFrameUrl,\r\n );\r\n\r\n speedpayService\r\n .getSpeedpayUrl({\r\n action: 'start',\r\n disableACH: 'Y',\r\n login: _globalSelectedAccount.primaryBp,\r\n speedframeCallbackUrl: speedFrameUrl,\r\n })\r\n .then(result => {\r\n window.location.href = result;\r\n });\r\n }\r\n\r\n vm.previousComponent = function(trackName) {\r\n vm.gotoStep(trackName);\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n\r\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\r\n vm.getaccountNumLimit = accountNumberLimit;\r\n vm.getNicknamelimit = nicknameLimit;\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n // vm.accountType.unshift({\r\n // text: 'Add Account Type',\r\n // value: '',\r\n // });\r\n }\r\n }\r\n\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('CCAutoReloadReviewController', CCAutoReloadReviewController);\r\n\r\nCCAutoReloadReviewController.$inject = [\r\n '$log',\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'getUpdateCardDetailsService',\r\n 'enrollUnenrollInAutoReloadService',\r\n 'genericHelperService',\r\n 'commongaTaggingService',\r\n 'commonService',\r\n '$location',\r\n];\r\n\r\nfunction CCAutoReloadReviewController(\r\n $log,\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n getUpdateCardDetailsService,\r\n enrollUnenrollInAutoReloadService,\r\n genericHelperService,\r\n commongaTaggingService,\r\n commonService,\r\n $location,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.autoReload = {\r\n order: {},\r\n };\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.banckAccount = { BankAccountNumber: assetService.autoReload.password };\r\n const findDetails = assetService.autoReload.paymentOptions.BankAccount;\r\n const actioEnroll =\r\n assetService.serviceActions.enrollUnenrollInAutoReload.ENRL_AUTO;\r\n $rootScope.mainBtnActivate = true;\r\n $rootScope.editBtn = false;\r\n const _kwValue = assetService.strings.VALUE;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.init = init;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.loadingSpinner = false;\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n\r\n if (storage) vm.autoReload = storage || {};\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n if (vm.autoReload.payment.paymentOption === findDetails) {\r\n vm.paymentMethod = undefined;\r\n\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n vm.getData = {\r\n businessPartnerId: _globalSelectedAccount.primaryBp,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n bankDetail: true,\r\n };\r\n vm.getPrepaidDetails();\r\n } else vm.paymentMethod = assetService.autoReload.Speedpay;\r\n }\r\n\r\n function getPrepaidDetails() {\r\n getPrepaidDetailsService.sitecore.getPrepaidDetails(vm.getData).then(\r\n result => {\r\n vm.DaysRemainingThreshold =\r\n result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload.results[0].DaysRemainingThreshold;\r\n vm.BalanceThreshold =\r\n result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload.results[0].BalanceThreshold;\r\n const bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\r\n bankList.forEach(bankAccount => {\r\n vm.accountTypeValue = '';\r\n\r\n vm.accountType.forEach(item => {\r\n if (item.value === bankAccount.BankAccountType) {\r\n vm.accountTypeValue = item.text;\r\n }\r\n });\r\n });\r\n vm.banckAccount = bankList.find(\r\n account =>\r\n account.BankAccountId === vm.autoReload.payment.banckAccountId,\r\n );\r\n\r\n vm.banckAccount.BankAccountNumber = `${vm.banckAccount.BankAccountNumber}`;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getUpdateCardDetails(action, expire, externalId) {\r\n if (action === 'DISPLAY') {\r\n vm.getCardData = {\r\n action: action,\r\n businessPartnerId: _globalSelectedAccount.primaryBp,\r\n requestedBy: vm.emailId.primaryEmail,\r\n };\r\n }\r\n if (action === 'ADD') {\r\n vm.getCardData = {\r\n action: action,\r\n businessPartnerId: _globalSelectedAccount.primaryBp,\r\n requestedBy: vm.emailId.primaryEmail,\r\n creditCardNumber: externalId,\r\n creditCardType: '0006',\r\n expirationDate: expire,\r\n };\r\n }\r\n\r\n return getUpdateCardDetailsService.sitecore\r\n .getUpdateCardDetails(vm.getCardData)\r\n .then(\r\n result => {\r\n if (action === 'DISPLAY') {\r\n vm.result = result;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function enrollUnenrollInAutoReload(dataOject, trackName) {\r\n enrollUnenrollInAutoReloadService.sitecore\r\n .enrollUnenrollInAutoReload(dataOject)\r\n .then(\r\n result => {\r\n console.log(result);\r\n vm.loadingSpinner = false;\r\n if (\r\n result.d.Message.ReplyCode.toUpperCase() ===\r\n assetService.replyCodes.Success.toUpperCase()\r\n ) {\r\n $rootScope.editBtn = false;\r\n $rootScope.stepsShow = false;\r\n $scope.$emit(\r\n 'changueTrackSelected',\r\n assetService.autoReload.stepPosition[trackName],\r\n );\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n vm.nextComponent = function(trackName) {\r\n $rootScope.editBtn = false;\r\n $rootScope.stepsShow = false;\r\n const daysRemaining = vm.autoReload.when.whenOption === 'DaysRemaining';\r\n const dataObj = {\r\n action: actioEnroll,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n daysRemainingThreshold: daysRemaining\r\n ? `${vm.autoReload.when.daysRemaining}`\r\n : `${vm.DaysRemainingThreshold}`,\r\n accountBalanceThreshold: daysRemaining\r\n ? `${vm.BalanceThreshold}`\r\n : `${vm.autoReload.when.amount}`,\r\n reloadAmount: `${vm.autoReload.reload.reloadAmount}`,\r\n bankAccountId: `${vm.autoReload.payment.banckAccountId}`,\r\n bankDescription: 'BANK',\r\n requestedOn: null,\r\n requestedTime: 'PT00H00M00S',\r\n requestedBy: vm.emailId.primaryEmail,\r\n };\r\n\r\n enrollUnenrollInAutoReload(dataObj, trackName);\r\n };\r\n\r\n function speedpayCheck() {\r\n vm.loadingSpinner = true;\r\n $scope.$emit('classTrack', 'ccAutoReloadReview');\r\n const urlParams = $location.search();\r\n const { externalId, expirationDate } = urlParams;\r\n const displayAction = assetService.serviceActions.updateCardDetails.DISPLAY;\r\n const addAction = assetService.serviceActions.updateCardDetails.ADD;\r\n vm.autoReload = sessionStorageService.get(assetService.autoReload.storage);\r\n const daysRemaining = vm.autoReload.when.whenOption === 'DaysRemaining';\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n\r\n const expirationDateArr = expirationDate.split('/');\r\n let monthEndDate = new Date(\r\n expirationDateArr[1],\r\n parseInt(expirationDateArr[0]),\r\n 0,\r\n );\r\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\r\n const detailCreditCardPromise = [\r\n getUpdateCardDetails(displayAction, null, null),\r\n ];\r\n vm.DaysRemainingThreshold = '0.00';\r\n vm.BalanceThreshold = '0.00';\r\n let enrollRequest = {\r\n action: actioEnroll,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n daysRemainingThreshold: daysRemaining\r\n ? `${vm.autoReload.when.daysRemaining}`\r\n : `${vm.DaysRemainingThreshold}`,\r\n accountBalanceThreshold: daysRemaining\r\n ? `${vm.BalanceThreshold}`\r\n : `${vm.autoReload.when.amount}`,\r\n reloadAmount: `${vm.autoReload.reload.reloadAmount}`,\r\n bankAccountId: '',\r\n bankDescription: 'CARD',\r\n requestedBy: vm.emailId.primaryEmail,\r\n };\r\n\r\n // get existing card details\r\n commonService.executePromises(detailCreditCardPromise).then(() => {\r\n var cardDetails =\r\n vm.result.d.CredCard_Res.results.length > 0 &&\r\n vm.result.d.CredCard_Res.results.filter(\r\n item => item.CreditCardNumber === externalId,\r\n );\r\n\r\n //if card details already exists\r\n if (cardDetails && cardDetails.length > 0) {\r\n enrollRequest.bankAccountId = cardDetails[0].CreditCardID;\r\n enrollUnenrollInAutoReload(enrollRequest, 'succes');\r\n } else {\r\n // if the card details doesn't exists\r\n const updateCreditCardPromise = [\r\n getUpdateCardDetails(addAction, monthEndDate, externalId),\r\n ];\r\n\r\n //update credit card details\r\n commonService.executePromises(updateCreditCardPromise).then(() => {\r\n //get the credit card details\r\n const getDetailCreditCardPromise = [\r\n getUpdateCardDetails(displayAction, null, null, null),\r\n ];\r\n commonService.executePromises(getDetailCreditCardPromise).then(() => {\r\n var cardDetails =\r\n vm.result.d.CredCard_Res.results.length > 0 &&\r\n vm.result.d.CredCard_Res.results.filter(\r\n item => item.CreditCardNumber === externalId,\r\n );\r\n\r\n if (cardDetails && cardDetails.length > 0) {\r\n enrollRequest.bankAccountId = cardDetails[0].CreditCardID;\r\n //call enroll service\r\n enrollUnenrollInAutoReload(enrollRequest, 'succes');\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n vm.previousComponent = function(trackName) {\r\n vm.gotoStep(trackName);\r\n };\r\n\r\n vm.gotoStep = function(trackName) {\r\n $rootScope.editBtn = true;\r\n $rootScope.apiValidation = false;\r\n\r\n $scope.$emit(\r\n 'changueTrackSelected',\r\n assetService.autoReload.stepPosition[trackName],\r\n );\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n vm.getPrepaidDetails = getPrepaidDetails;\r\n vm.getUpdateCardDetails = getUpdateCardDetails;\r\n function init(accountTypeArray) {\r\n //for speedpay check start\r\n const urlParams = $location.search();\r\n const { externalId, expirationDate } = urlParams;\r\n if (\r\n externalId != null &&\r\n expirationDate != null &&\r\n externalId != '' &&\r\n expirationDate != ''\r\n ) {\r\n speedpayCheck();\r\n return;\r\n }\r\n //speedpay check end\r\n\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n load();\r\n }\r\n}\r\n","app.controller('CCAutoReloadSuccesController', CCAutoReloadSuccesController);\r\n\r\nCCAutoReloadSuccesController.$inject = [\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCAutoReloadSuccesController(\r\n $state,\r\n $scope,\r\n $rootScope,\r\n assetService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.init = init;\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n subHeadline2: ''\r\n };\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.autoReload = {\r\n email: '',\r\n };\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.populateGATagging = populateGATagging;\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n function populateGATagging() {\r\n attributePush(\r\n 'workFlow:' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'subheadline:' + vm.taggingElements.subHeadline,\r\n 'buttonText:' + vm.taggingElements.buttonText\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n vm.taggingElements.subHeadline,\r\n vm.taggingElements.buttonText\r\n ); \r\n }\r\n function load() {\r\n const storage = sessionStorageService.get(assetService.autoReload.storage);\r\n if (storage) vm.autoReload = storage || {};\r\n if (storage) vm.autoReload.email = storage.email || 'email@email.com';\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n vm.taggingElements.subHeadline,\r\n vm.taggingElements.subHeadline2\r\n );\r\n \r\n }\r\n\r\n /* --------------Emit and Broadcast events-----------------------*/\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(workflow, headline, subHeadline, buttonText,subHeadline2) {\r\n vm.taggingElements.workflow = workflow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subHeadline;\r\n vm.taggingElements.buttonText = buttonText; \r\n vm.taggingElements.subHeadline2 = subHeadline2;\r\n load();\r\n };\r\n\r\n //init();\r\n}\r\n","app.controller('ccAddBankAccountPrepaid', ccAddBankAccountPrepaid);\r\n\r\nccAddBankAccountPrepaid.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'prepaidService',\r\n 'manageBankAccountsForPrepaidService',\r\n 'assetService',\r\n 'apiApigeeConfigService',\r\n 'sessionStorageService',\r\n 'genericHelperService',\r\n 'broadcastService',\r\n 'ccAutoPayAssetService',\r\n '$scope',\r\n 'getLoggedInUserDetailsService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ccAddBankAccountPrepaid(\r\n $log,\r\n $modalInstance,\r\n prepaidService,\r\n manageBankAccountsForPrepaidService,\r\n assetService,\r\n apiApigeeConfigService,\r\n sessionStorageService,\r\n genericHelperService,\r\n broadcastService,\r\n ccAutoPayAssetService,\r\n $scope,\r\n getLoggedInUserDetailsService,\r\n commongaTaggingService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.init = init;\r\n vm.populateAccountTypes = populateAccountTypes;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.accountTypeValue = '';\r\n const _kwValue = assetService.strings.VALUE;\r\n vm.form = {\r\n nickname: null,\r\n rountingNumber: null,\r\n accountNumber: null,\r\n accNumberConfirm: null,\r\n accountType: null,\r\n };\r\n vm.loaded = false;\r\n vm.showerror = false;\r\n vm.statusIsProcessing = false;\r\n vm.currentUser = {};\r\n vm.accNumEmpty = false;\r\n vm.accNameEmpty = false;\r\n vm.accRoutingEmpty = false;\r\n vm.accNumEmpty = false;\r\n vm.accConfirmNumEmpty = false;\r\n vm.accTypeEmpty = false;\r\n let _accountIdGenerated = null;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n vm.getAccountNumLimit = undefined;\r\n vm.getNicknameLimit = undefined;\r\n /**\r\n * Function Definitions\r\n */\r\n vm.closeModal = closeModal;\r\n vm.save = save;\r\n vm.checkAndContinue = checkAndContinue;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.taggingElements = {\r\n workflow: '',\r\n headline: '',\r\n subHeadline: '',\r\n buttonText: '',\r\n addedSpec: '',\r\n };\r\n vm.checkNickname = checkNickname;\r\n vm.noNameError = noNameError;\r\n vm.checkAcctNum = checkAcctNum;\r\n vm.noAccError = noAccError;\r\n vm.checkConfirmAcctNum = checkConfirmAcctNum;\r\n vm.noConfirmAccError = noConfirmAccError;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n function closeModal() {\r\n broadcastService.modalAddNewBankAccountClosed();\r\n $modalInstance.close();\r\n }\r\n\r\n function checkAndContinue(value) {\r\n vm.showError = false;\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n function virtualPagePush() {\r\n var arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function checkNickname() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength >= vm.getNicknameLimit) {\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function noNameError() {\r\n const nameLength = vm.form.nickname ? vm.form.nickname.length : 0;\r\n if (nameLength > vm.getNicknameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function checkAcctNum() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength >= vm.getAccountNumLimit) {\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function noAccError() {\r\n const accLength = vm.form.accountNumber ? vm.form.accountNumber.length : 0;\r\n if (accLength > vm.getAccountNumLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function checkConfirmAcctNum() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength >= vm.getAccountNumLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function noConfirmAccError() {\r\n const accCLength = vm.form.accNumberConfirm\r\n ? vm.form.accNumberConfirm.length\r\n : 0;\r\n if (accCLength > vm.getAccountNumLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function save() {\r\n vm.accNameEmpty = vm.form.nickname ? false : true;\r\n vm.accRoutingEmpty = vm.form.rountingNumber ? false : true;\r\n vm.accNumEmpty = vm.form.accountNumber ? false : true;\r\n vm.accConfirmNumEmpty = vm.form.accNumberConfirm ? false : true;\r\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\r\n\r\n var data = {\r\n businessPartnerId:\r\n sessionStorageService.get(assetService.storageKeys.relatedBPNumber) ||\r\n globalSelectedAccount.primaryBp,\r\n bankDescription: vm.form.nickname,\r\n accountNumber: vm.form.accountNumber,\r\n routingNumber: vm.form.rountingNumber,\r\n accountType: vm.selectAccountType,\r\n requestedBy: vm.emailId.primaryEmail,\r\n action: prepaidService.serviceActions.ADD,\r\n };\r\n if (\r\n vm.form.nickname != null &&\r\n vm.form.rountingNumber != null &&\r\n vm.form.accountNumber != null &&\r\n vm.form.accNumberConfirm != null &&\r\n vm.selectAccountType != null\r\n ) {\r\n addNewBankAccountToSAP(data).then(() => {\r\n if (!vm.showError) {\r\n $modalInstance.close();\r\n sessionStorageService.set(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n _accountIdGenerated,\r\n );\r\n data.bankAccountId = _accountIdGenerated;\r\n sessionStorageService.set(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.addedBankAccount,\r\n data,\r\n );\r\n broadcastService.addNewBankAcccountIdGenerated();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function addNewBankAccountToSAP(data) {\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(data)\r\n .then(\r\n result => {\r\n vm.errorCode = $scope.analytics.ServiceErrorCode;\r\n if (\r\n result.d.ManageBankAcc_NAV.ReplyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n _accountIdGenerated = result.d.ManageBankAcc_NAV.BankId;\r\n $scope.$emit(\r\n prepaidService.events.SAVE_MANAGE_AUTORELOAD,\r\n assetService.replyCodes.SUCCESS,\r\n );\r\n vm.showError = false;\r\n attributePush(\r\n 'workFlow:' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'subheadline:' + vm.taggingElements.subHeadline,\r\n 'buttonText:' + vm.taggingElements.buttonText,\r\n 'addedSpec:' + vm.taggingElements.addedSpec,\r\n );\r\n virtualPagePush(\r\n 'prepaid-advantage',\r\n 'manage-auto-reload',\r\n 'add-bank-account',\r\n 'add',\r\n );\r\n } else if (\r\n result.d.ManageBankAcc_NAV.MessageNum === vm.errorCode.toString()\r\n ) {\r\n vm.statusIsProcessing = true;\r\n vm.showError = true;\r\n if (result && result.d) {\r\n }\r\n } else {\r\n vm.statusIsProcessing = true;\r\n vm.showError = true;\r\n if (result && result.d) {\r\n }\r\n }\r\n },\r\n error => {\r\n vm.showError = true;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function errorGATagging(errorMsg) {\r\n attributePush(\r\n 'workFlow:' + 'error ' + vm.taggingElements.workflow,\r\n 'headline:' + vm.taggingElements.headline,\r\n 'subheadline:' + vm.taggingElements.subHeadline,\r\n 'buttonText:' + errorMsg.ManageBankAcc_NAV.MessageNum,\r\n 'addedSpec:' + ' /form/prepaidservices/managebankaccount ',\r\n 'addedEvent:' + vm.taggingElements.errorMessage,\r\n );\r\n virtualPagePush(\r\n vm.taggingElements.workflow,\r\n vm.taggingElements.headline,\r\n assetService.storageKeys.paymentMethod,\r\n vm.taggingElements.subHeadline,\r\n vm.taggingElements.buttonText,\r\n 'error',\r\n errorMsg.ManageBankAcc_NAV.MessageNum,\r\n );\r\n }\r\n\r\n function load() {\r\n vm.loaded = true;\r\n vm.ShowError = false;\r\n vm.statusIsProcessing = false;\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n });\r\n /**\r\n * Initialization\r\n */\r\n\r\n function populateAccountTypes(\r\n accountTypeArray,\r\n workFlow,\r\n headline,\r\n subheadline,\r\n buttonText,\r\n errorMessage,\r\n ) {\r\n vm.taggingElements.workflow = workFlow;\r\n vm.taggingElements.headline = headline;\r\n vm.taggingElements.subHeadline = subheadline;\r\n vm.taggingElements.buttonText = buttonText;\r\n vm.taggingElements.errorMessage = errorMessage;\r\n init(accountTypeArray);\r\n }\r\n\r\n function init(accountTypeArray, accountNumberLimit, nicknameLimit) {\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n // vm.accountType.unshift({\r\n // text: 'Add Account Type',\r\n // value: '',\r\n // });\r\n }\r\n }\r\n vm.getAccountNumLimit = accountNumberLimit;\r\n vm.getNicknameLimit = nicknameLimit;\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n load();\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller(\r\n 'CCLowBalanceComponent',\r\n CCLowBalanceComponent,\r\n);\r\nCCLowBalanceComponent.$inject = [\r\n '$state',\r\n '$scope',\r\n 'assetService',\r\n];\r\n\r\nfunction CCLowBalanceComponent(\r\n $state,\r\n $scope,\r\n assetService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n\r\n vm.data = {\r\n checkbox: [],\r\n days: [\r\n {\r\n number: '1',\r\n },\r\n {\r\n number: '2',\r\n },\r\n {\r\n number: '3',\r\n },\r\n {\r\n number: '4',\r\n },\r\n {\r\n number: '5',\r\n },\r\n // {\r\n // number: '6',\r\n // },\r\n // {\r\n // number: '7',\r\n // },\r\n // {\r\n // number: '8',\r\n // },\r\n // {\r\n // number: '9',\r\n // },\r\n // {\r\n // number: '10',\r\n // },\r\n ],\r\n };\r\n\r\n /* Function definitions */\r\n\r\n function load() {\r\n /*empty function*/\r\n }\r\n\r\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n // globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n // if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n // globalSelectedAccount = globalAccountInfo.accountSelected;\r\n // }\r\n\r\n // vm.loadingSpinner = true;\r\n // load();\r\n // });\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('ccManageAutoReload', ccManageAutoReload);\r\nccManageAutoReload.$inject = [\r\n '$log',\r\n 'prepaidService',\r\n 'getPrepaidDetailsService',\r\n 'manageAutoReloadService',\r\n 'enrollUnenrollInAutoReloadService',\r\n 'apiApigeeConfigService',\r\n 'genericHelperService',\r\n 'speedpayService',\r\n 'sessionStorageService',\r\n 'FPModalService',\r\n 'modalService',\r\n 'assetService',\r\n 'ccAutoPayAssetService',\r\n '$rootScope',\r\n '$scope',\r\n '$state',\r\n '$timeout',\r\n 'commonService',\r\n 'componentStateHandler',\r\n 'getUpdateCardDetailsService',\r\n '$location',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ccManageAutoReload(\r\n $log,\r\n prepaidService,\r\n getPrepaidDetailsService,\r\n manageAutoReloadService,\r\n enrollUnenrollInAutoReloadService,\r\n apiApigeeConfigService,\r\n genericHelperService,\r\n speedpayService,\r\n sessionStorageService,\r\n FPModalService,\r\n modalService,\r\n assetService,\r\n ccAutoPayAssetService,\r\n $rootScope,\r\n $scope,\r\n $state,\r\n $timeout,\r\n commonService,\r\n componentStateHandler,\r\n getUpdateCardDetailsService,\r\n $location,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.accountTypeValue = '';\r\n vm.loadingSpinner = true;\r\n vm.bankAccounts = [];\r\n vm.bankList = [];\r\n vm.bankAccount = {};\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.addBA = false;\r\n vm.saveInfo = false;\r\n vm.selectedAccount = {};\r\n vm.contractAccountId = '';\r\n vm.businessPartnerId = '';\r\n vm.activeBank = null;\r\n vm.error = false;\r\n vm.clickedSave = false;\r\n vm.doNotAcceptCheck = false;\r\n vm.autoReloadForm = {\r\n reloadWhenOption: '',\r\n balanceAmountRW: '',\r\n daysRemaining: '',\r\n reloadAmount: '',\r\n paymentMethod: '',\r\n bankAccount: '',\r\n bankAccountInfo: false,\r\n };\r\n vm.bankAccounForm = {\r\n nickname: '',\r\n routingNumber: '',\r\n accountNumber: '',\r\n confirmAccountNumber: '',\r\n };\r\n vm.dropdownT = 'dropText';\r\n vm.dropdownV = assetService.autoReload.dropdownKeys.value;\r\n vm.dropdownBP = assetService.autoReload.dropdownKeys.bankBP;\r\n vm.unenrollFromAutoPay = unenrollFromAutoPay;\r\n vm.selectedBankAccountResponse = '';\r\n vm.bankListResponse = '';\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.selectedWhen = 'not set';\r\n vm.selectedAmount = 'not set';\r\n vm.selectedMethod = 'not set';\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n const _kwValue = assetService.strings.VALUE;\r\n const reloadBalanceOption = 'balanceOption';\r\n const reloadDaysOption = 'daysROption';\r\n const paymentoptionBank = 'bankAccount';\r\n const paymentOptionSpeedPay = 'speedPay';\r\n let _newBankAccountIdGenerated = null;\r\n const prepaidDetails = null;\r\n\r\n vm.toastData = {\r\n option: '',\r\n show: false,\r\n messageOption: '',\r\n };\r\n vm.closeToast = closeToast;\r\n vm.loaded = false;\r\n vm.disableSaveButton = true;\r\n let enrolledWithCreditCard = false;\r\n vm.showError = false;\r\n /* --------------Function Definitions-----------------------*/\r\n vm.init = init;\r\n\r\n vm.populateAccountTypes = populateAccountTypes;\r\n vm.validateForm = validateForm;\r\n vm.reloadWhensumAll = reloadWhensumAll;\r\n vm.reloadAmountsumAll = reloadAmountsumAll;\r\n const actioUnenroll =\r\n assetService.serviceActions.enrollUnenrollInAutoReload.UNENRL;\r\n /* ---------------Initialization-------------------*/\r\n /**\r\n * Emit and Broadcast events\r\n */\r\n $scope.$on(ccAutoPayAssetService.events.addNewBankAcccountIdGenerated, () => {\r\n _newBankAccountIdGenerated = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.accountIdGenerated,\r\n );\r\n const data = sessionStorageService.get(\r\n ccAutoPayAssetService.storageKeys.manageAutoPay.addedBankAccount,\r\n );\r\n vm.toastData.option = 'success';\r\n vm.toastData.messageOption = 'Success! Bank account added.';\r\n vm.toastData.show = true;\r\n $timeout(() => {\r\n vm.toastData.show = false;\r\n }, 6000);\r\n if (data) {\r\n vm.selectedAccount = {};\r\n vm.selectedAccount.BankAccountNumber = data.accountNumber;\r\n vm.selectedAccount.BankRoutingNumber = data.routingNumber;\r\n vm.selectedAccount.BankAccountType = data.accountType;\r\n vm.selectedAccount.BankDescription = data.bankDescription;\r\n vm.selectedAccount.BankBp = data.businessPartnerId;\r\n vm.selectedAccount.BankAccountId = data.bankAccountId;\r\n vm.activeBank = vm.selectedAccount;\r\n vm.autoReloadForm.bankAccount = vm.selectedAccount.BankAccountId;\r\n vm.bankList.push(vm.selectedAccount);\r\n getAccountType();\r\n populateBankList();\r\n vm.disableSaveButton = false;\r\n }\r\n // reload();\r\n });\r\n\r\n $scope.$on(ccAutoPayAssetService.events.modalAddNewBankAccountClosed, () => {\r\n _newBankAccountIdGenerated = null;\r\n reload();\r\n });\r\n\r\n function reload() {\r\n vm.loaded = false;\r\n load();\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.selectedMethod = 'load';\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n vm.businessPartnerId = globalSelectedAccount.primaryBp;\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n accountBalanceRes = sessionStorageService.get('accountBalanceRes');\r\n vm.currentAccount = accountBalanceRes.getAccountAndBillingInfoResList.filter(\r\n account => account.contractAccountNumber == vm.contractAccountId,\r\n );\r\n vm.indicatorStatusCurrentAccount = vm.currentAccount[0];\r\n vm.doNotAcceptCheck =\r\n vm.indicatorStatusCurrentAccount.noCheckDraftInd === 'T' ? true : false;\r\n // getBankAccounts();\r\n commonService\r\n .executePromises([\r\n getPrepaidDetails({\r\n businessPartnerId: vm.businessPartnerId,\r\n contractAccountId: vm.contractAccountId,\r\n bankDetail: false,\r\n }),\r\n getPrepaidDetails({\r\n businessPartnerId:\r\n sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n ) || globalAccountInfo.accountSelected.primaryBp,\r\n bankDetail: true,\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n if (!vm.error) {\r\n getSelectedBankAccounts(vm.selectedBankAccountResponse);\r\n getBankList(vm.bankListResponse);\r\n getAccountType();\r\n }\r\n },\r\n error => {\r\n componentStateHandler.hideComponentDashboard(vm);\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function addNewBankAccount() {\r\n vm.selectedAccount = {};\r\n // vm.addBA = !vm.addBA;\r\n modalService.autoReloadAddNewBankAccount();\r\n // modalService.addNewBankAccount();\r\n }\r\n\r\n $scope.$on(assetService.events.autoreloadUnenrollNotification, () => {\r\n unenrollStatus();\r\n });\r\n\r\n function unenrollStatus() {\r\n const dataObj = {\r\n action: actioUnenroll,\r\n contractAccountId: vm.contractAccountId,\r\n requestedOn: null,\r\n requestedTime: 'PT00H00M00S',\r\n requestedBy: vm.emailId.primaryEmail,\r\n };\r\n\r\n enrollUnenrollInAutoReload(dataObj);\r\n }\r\n\r\n function unenrollFromAutoPay() {\r\n modalService.manageAutoReloadUnenroll();\r\n }\r\n\r\n function enrollUnenrollInAutoReload(dataOject) {\r\n enrollUnenrollInAutoReloadService.sitecore\r\n .enrollUnenrollInAutoReload(dataOject)\r\n .then(\r\n result => {\r\n const attributeDataValues = {\r\n workFlow: $('#manageAutoReload').attr('businessFunction'),\r\n title: $('#manageAutoReload').attr('headLine'),\r\n confirmation: 'confirmation',\r\n };\r\n sessionStorageService.set(\r\n 'manageAutoReloadUnenrollSucessConfirmation',\r\n attributeDataValues,\r\n );\r\n location.href = '/my-account/manage-auto-reload/unenroll';\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getPrepaidDetails(params) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(params).then(\r\n result => {\r\n if (!params.bankDetail) {\r\n vm.selectedBankAccountResponse = result;\r\n } else {\r\n vm.bankListResponse = result;\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n vm.error = true;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getSelectedBankAccounts(result) {\r\n const autoReloadDetails =\r\n result.d.PrepaidToBP.results[0].BPToCA.results[0].CAToAutoReload\r\n .results[0];\r\n vm.autoReloadForm.balanceAmountRW = autoReloadDetails.BalanceThreshold;\r\n vm.autoReloadForm.daysRemaining = autoReloadDetails.DaysRemainingThreshold;\r\n vm.autoReloadForm.reloadAmount = autoReloadDetails.ReloadAmount;\r\n\r\n vm.autoReloadForm.reloadWhenOption = '';\r\n\r\n // format the values\r\n if (vm.autoReloadForm.balanceAmountRW != '') {\r\n vm.autoReloadForm.balanceAmountRW = parseFloat(\r\n vm.autoReloadForm.balanceAmountRW,\r\n ).toFixed(2);\r\n\r\n if (parseFloat(vm.autoReloadForm.balanceAmountRW) > 0) {\r\n vm.autoReloadForm.reloadWhenOption = reloadBalanceOption;\r\n }\r\n }\r\n\r\n if (vm.autoReloadForm.daysRemaining != '') {\r\n vm.autoReloadForm.daysRemaining = parseInt(\r\n vm.autoReloadForm.daysRemaining,\r\n );\r\n\r\n if (vm.autoReloadForm.daysRemaining > 0) {\r\n vm.autoReloadForm.reloadWhenOption = reloadDaysOption;\r\n }\r\n }\r\n\r\n if (vm.autoReloadForm.reloadAmount != '') {\r\n vm.autoReloadForm.reloadAmount = parseFloat(\r\n vm.autoReloadForm.reloadAmount,\r\n ).toFixed(2);\r\n vm.autoReloadForm.reloadAmount = parseFloat(\r\n vm.autoReloadForm.reloadAmount,\r\n );\r\n }\r\n vm.autoReloadForm.paymentMethod = paymentOptionSpeedPay;\r\n vm.autoReloadForm.bankAccount = null;\r\n\r\n // for bank account\r\n if (autoReloadDetails.AutoReloadFlag === 'P') {\r\n vm.autoReloadForm.paymentMethod = paymentoptionBank;\r\n const selectedAccount =\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results;\r\n if (selectedAccount && selectedAccount.length > 0) {\r\n let bankAccount = selectedAccount[0];\r\n vm.activeBank = bankAccount;\r\n vm.autoReloadForm.bankAccount = bankAccount.BankAccountId;\r\n vm.selectedAccount = bankAccount;\r\n enrolledWithCreditCard = false;\r\n }\r\n } else {\r\n // for credit card\r\n enrolledWithCreditCard = true;\r\n }\r\n }\r\n\r\n function getBankList(result) {\r\n vm.bankList = result.d.PrepaidToBP.results[0].BPToBankDetail.results;\r\n let isPresentInTheList = false;\r\n\r\n vm.bankList.forEach(bankAccount => {\r\n bankAccount.BankBp = bankAccount.BankBp || result.d.BusinessPartner;\r\n if (\r\n vm.selectedAccount &&\r\n (bankAccount.BankBp || result.d.BusinessPartner) ==\r\n vm.selectedAccount.BankBp &&\r\n bankAccount.BankAccountId == vm.selectedAccount.BankAccountId\r\n ) {\r\n isPresentInTheList = true;\r\n // break;\r\n }\r\n });\r\n if (!isPresentInTheList && vm.selectedAccount.length > 0) {\r\n vm.bankList.push(vm.selectedAccount);\r\n getAccountType();\r\n }\r\n\r\n populateBankList();\r\n\r\n vm.loaded = true;\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function populateBankList() {\r\n for (let i = 0; i < vm.bankList.length; i++) {\r\n const bankAccount = vm.bankList[i];\r\n bankAccount.dropText = '';\r\n if (bankAccount.BankDescription) {\r\n bankAccount.dropText =\r\n `${bankAccount.BankDescription} - ` +\r\n `******${bankAccount.BankAccountNumber.slice(-4)}`;\r\n } else {\r\n bankAccount.dropText = `${' ' +\r\n ' - ' +\r\n '******'}${bankAccount.BankAccountNumber.slice(-4)}`;\r\n }\r\n }\r\n\r\n vm.bankAccounts = genericHelperService.createDropdownListManageAutoReload(\r\n vm.bankList,\r\n vm.dropdownV,\r\n vm.dropdownBP,\r\n vm.dropdownT,\r\n );\r\n\r\n vm.bankAccounts.forEach(item => {\r\n if (\r\n vm.activeBank != null &&\r\n item.value === vm.activeBank.BankAccountId + vm.activeBank.BankBp\r\n ) {\r\n item.selected = true;\r\n vm.autoReloadForm.bankAccountText = item.text;\r\n }\r\n });\r\n }\r\n\r\n function goSpeedpay() {\r\n const speedFrameUrl = `${location.href.split('?')[0]}?action=${\r\n assetService.strings.START\r\n }`;\r\n // Store the request in local storage\r\n sessionStorageService.set(\r\n assetService.storageKeys.speedframeCallBackUrl,\r\n speedFrameUrl,\r\n );\r\n\r\n // store form values\r\n vm.autoReloadForm.reloadAmount = vm.autoReloadForm.reloadAmount.toString();\r\n sessionStorageService.set(\r\n assetService.autoReload.storage,\r\n vm.autoReloadForm,\r\n );\r\n const paymentTypes = document.getElementsByClassName(\r\n 'CC-Prepaid__manage-autoreload-card--title',\r\n )[2].innerText;\r\n const selectedPaymentType = document.getElementsByClassName(\r\n 'CC-Prepaid--blue-link CC-Prepaid--fee-note',\r\n )[0].innerText;\r\n attributePush(\r\n `workFlow:${$('#manageAutoReload').attr('businessFunction')}`,\r\n `headline:${$('#manageAutoReload').attr('headLine')}`,\r\n `buttonText:${paymentTypes}`,\r\n `addedSpec:${selectedPaymentType}`,\r\n );\r\n virtualPagePush(\r\n $('#manageAutoReload').attr('businessFunction'),\r\n $('#manageAutoReload').attr('headLine'),\r\n paymentTypes,\r\n selectedPaymentType,\r\n );\r\n /* code to speedpay */\r\n speedpayService\r\n .getSpeedpayUrl({\r\n action: 'start',\r\n disableACH: 'Y',\r\n login: vm.businessPartnerId,\r\n password: '',\r\n speedframeCallbackUrl: speedFrameUrl,\r\n })\r\n .then(result => {\r\n location.href = result;\r\n });\r\n }\r\n\r\n function success() {\r\n vm.autoReloadForm.bankAccount = true;\r\n }\r\n\r\n function saveInfoAutoreload() {\r\n if (vm.saveInfo) {\r\n $rootScope.$broadcast(\r\n prepaidService.events.ADD_BANK_ACCOUNT_PREPAID,\r\n vm.bankAccounForm,\r\n );\r\n } else {\r\n saveManageAutoreload();\r\n }\r\n }\r\n\r\n function reloadWhenSelected() {\r\n vm.selectedWhen = $('.reloadWhen').text();\r\n }\r\n function reloadWhensumAll() {\r\n vm.newTotalAmount = 0;\r\n let element = vm.autoReloadForm.balanceAmountRW;\r\n if (isNaN(Number(element.charAt(0)))) {\r\n if (element.charAt(0) === '-') {\r\n vm.newTotalAmount += Number(element);\r\n } else {\r\n let sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n vm.newTotalAmount += Number(sub);\r\n }\r\n } else {\r\n vm.newTotalAmount += Number(element);\r\n }\r\n vm.autoReloadForm.balanceAmountRW = vm.newTotalAmount.toFixed(2);\r\n reloadWhenSelected();\r\n }\r\n\r\n function reloadAmountSelected() {\r\n vm.selectedAmount = $('.reloadAmount').text();\r\n }\r\n function reloadAmountsumAll() {\r\n vm.newTotalReloadAmount = 0;\r\n let sub = '';\r\n let element = vm.autoReloadForm.reloadAmount;\r\n if (isNaN(Number(element.charAt(0)))) {\r\n if (element.charAt(0) === '-') {\r\n vm.newTotalReloadAmount += Number(element);\r\n } else {\r\n sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n vm.newTotalReloadAmount += Number(sub);\r\n }\r\n if (Number(sub) < 15 || Number(sub) > 500) {\r\n vm.showError = true;\r\n } else {\r\n vm.showError = false;\r\n }\r\n } else {\r\n vm.newTotalReloadAmount += Number(element);\r\n }\r\n vm.autoReloadForm.reloadAmount = vm.newTotalReloadAmount.toFixed(2);\r\n reloadAmountSelected();\r\n }\r\n\r\n function paymentMethodSelected() {\r\n if (vm.selectedMethod !== 'load') {\r\n vm.selectedMethod = $('.paymentmethod').text();\r\n } else {\r\n vm.selectedMethod = 'not set';\r\n }\r\n }\r\n\r\n function changeReloadWhen() {\r\n if (\r\n vm.autoReloadForm.reloadWhenOption ===\r\n prepaidService.strings.BALANCE_OPTION\r\n ) {\r\n vm.autoReloadForm.daysRemaining = '0';\r\n } else {\r\n vm.autoReloadForm.balanceAmountRW = '0.0';\r\n }\r\n }\r\n\r\n function saveManageAutoreload() {\r\n let saveAutoreloadRequest = {};\r\n\r\n saveAutoreloadRequest = {\r\n contractAccountId: vm.contractAccountId,\r\n daysRemainingThreshold: vm.autoReloadForm.daysRemaining.toString(),\r\n accountBalanceThreshold: vm.autoReloadForm.balanceAmountRW,\r\n reloadAmount: vm.autoReloadForm.reloadAmount.toString(),\r\n bankDescription: '',\r\n accountNumber: '',\r\n routingNumber: '',\r\n requestedBy: vm.emailId.primaryEmail,\r\n bankAccountId: '',\r\n };\r\n\r\n if (vm.autoReloadForm.paymentMethod === paymentoptionBank) {\r\n saveAutoreloadRequest.bankDescription = 'BANK';\r\n saveAutoreloadRequest.bankAccountId = vm.selectedAccount.BankAccountId;\r\n } else {\r\n saveAutoreloadRequest.bankDescription = 'CARD';\r\n }\r\n saveAutoReloadForm(saveAutoreloadRequest);\r\n }\r\n\r\n function saveAutoReloadForm(request) {\r\n manageAutoReloadService.sitecore.manageAutoReload(request).then(\r\n result => {\r\n if (\r\n result.d.AutoReloadManage_NAV.results[0].ReplyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n attributePush(\r\n `workFlow:${$('#manageAutoReload').attr('businessFunction')}`,\r\n `headline:${$('#manageAutoReload').attr('headLine')}`,\r\n `addedSpec:` + vm.selectedAmount,\r\n `buttonText:` + vm.selectedWhen,\r\n `addedEvent:` + vm.selectedMethod,\r\n );\r\n virtualPagePush(\r\n $('#manageAutoReload').attr('businessFunction'),\r\n $('#manageAutoReload').attr('headLine'),\r\n vm.selectedWhen,\r\n vm.selectedAmount,\r\n vm.selectedMethod,\r\n $('#manageAutoReload').attr('subhead'),\r\n );\r\n vm.selectedWhen = 'not set';\r\n vm.selectedAmount = 'not set';\r\n vm.selectedMethod = 'not set';\r\n vm.toastData.option = 'success';\r\n vm.toastData.messageOption = 'Success! Changes saved.';\r\n vm.clickedSave = true;\r\n vm.toastData.show = true;\r\n attributePush(\r\n `workFlow:toast notification`,\r\n `addedSpec:${$('#manageAutoReload').attr('headLine')}`,\r\n `buttonText:impression`,\r\n `headline:${vm.toastData.option}`,\r\n `subheadline:${vm.toastData.messageOption}`,\r\n );\r\n virtualPagePush(\r\n 'toast notification',\r\n $('#manageAutoReload').attr('headLine'),\r\n vm.toastData.messageOption,\r\n 'impression',\r\n vm.toastData.option,\r\n );\r\n $timeout(() => {\r\n vm.toastData.show = false;\r\n window.location.href = 'my-account/dashboard';\r\n }, 6000);\r\n\r\n if (request.bankDescription == 'CARD') {\r\n enrolledWithCreditCard = true;\r\n } else {\r\n enrolledWithCreditCard = false;\r\n }\r\n vm.disableSaveButton = true;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function closeToast() {\r\n vm.toastData.show = '';\r\n if (vm.clickedSave) {\r\n window.location.href = 'my-account/dashboard';\r\n }\r\n }\r\n\r\n function hideBankForm() {\r\n vm.autoReloadForm.bankAccountInfo = true;\r\n if (vm.autoReloadForm.bankAccount) {\r\n vm.addBA = false;\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n // eslint-disable-next-line no-const-assign\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n // eslint-disable-next-line no-const-assign\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n });\r\n\r\n $scope.$on(prepaidService.events.SAVE_MANAGE_AUTORELOAD, (event, data) => {\r\n saveManageAutoreload();\r\n });\r\n\r\n $scope.onSelectItem = function(item) {\r\n vm.selectedAccount = _.find(\r\n vm.bankList,\r\n bankAcc => bankAcc.BankAccountId + bankAcc.BankBp === item.value,\r\n );\r\n getAccountType();\r\n vm.validateForm();\r\n };\r\n\r\n function getAccountType() {\r\n vm.accountTypeValue = '';\r\n vm.accountType.forEach(item => {\r\n if (item.value === vm.selectedAccount.BankAccountType) {\r\n vm.accountTypeValue = item.text;\r\n }\r\n });\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.saveInfoAutoreload = saveInfoAutoreload;\r\n vm.changeReloadWhen = changeReloadWhen;\r\n vm.hideBankForm = hideBankForm;\r\n vm.goSpeedpay = goSpeedpay;\r\n vm.addNewBankAccount = addNewBankAccount;\r\n vm.reloadWhenSelected = reloadWhenSelected;\r\n vm.reloadAmountSelected = reloadAmountSelected;\r\n vm.paymentMethodSelected = paymentMethodSelected;\r\n /* ---------------Initialization-------------------*/\r\n function populateAccountTypes(accountTypeArray) {\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n }\r\n\r\n function init(accountTypeArray) {\r\n populateAccountTypes(accountTypeArray);\r\n\r\n // check for speedpay success\r\n const urlParams = $location.search();\r\n const { externalId, expirationDate } = urlParams;\r\n if (\r\n externalId != null &&\r\n expirationDate != null &&\r\n externalId != '' &&\r\n expirationDate != ''\r\n ) {\r\n speedpayCheck();\r\n vm.disableSaveButton = false;\r\n return;\r\n }\r\n if (externalId != null && externalId != '' && expirationDate == null) {\r\n location.href = `${location.pathname}/failure`;\r\n return;\r\n }\r\n\r\n load();\r\n }\r\n\r\n function speedpayCheck() {\r\n // eslint-disable-next-line no-const-assign\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n // eslint-disable-next-line no-const-assign\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n const urlParams = $location.search();\r\n const { externalId, expirationDate } = urlParams;\r\n const displayAction = assetService.serviceActions.updateCardDetails.DISPLAY;\r\n const addAction = assetService.serviceActions.updateCardDetails.ADD;\r\n vm.autoReload = sessionStorageService.get(assetService.autoReload.storage);\r\n\r\n vm.emailId = sessionStorageService.get(\r\n assetService.storageKeys.globalAccounts.info,\r\n );\r\n\r\n vm.autoReloadForm = sessionStorageService.get(\r\n assetService.autoReload.storage,\r\n );\r\n\r\n const expirationDateArr = expirationDate.split('/');\r\n let monthEndDate = new Date(\r\n expirationDateArr[1],\r\n parseInt(expirationDateArr[0]),\r\n 0,\r\n );\r\n monthEndDate = moment(monthEndDate).format('YYYY-MM-DDTHH:mm:ss');\r\n\r\n // get card details\r\n commonService\r\n .executePromises([getUpdateCardDetails('DISPLAY', null, null)])\r\n .then(\r\n result => {\r\n const manageAutoReloadRequest = {\r\n contractAccountId: globalAccountInfo.accountSelected.accountNum,\r\n daysRemainingThreshold: vm.autoReloadForm.daysRemaining.toString(),\r\n accountBalanceThreshold: vm.autoReloadForm.balanceAmountRW,\r\n reloadAmount: vm.autoReloadForm.reloadAmount,\r\n bankDescription: 'CARD',\r\n accountNumber: '',\r\n routingNumber: '',\r\n requestedBy: vm.emailId.primaryEmail,\r\n bankAccountId: '',\r\n };\r\n\r\n const cardDetails =\r\n vm.creditCardDetails.d.CredCard_Res.results.length > 0 &&\r\n vm.creditCardDetails.d.CredCard_Res.results.filter(\r\n item => item.CreditCardNumber === externalId,\r\n );\r\n\r\n // if card details already exists\r\n if (cardDetails && cardDetails.length > 0) {\r\n manageAutoReloadRequest.bankAccountId = cardDetails[0].CreditCardID;\r\n UpdateAutoReload(manageAutoReloadRequest);\r\n } else {\r\n // if the card details doesn't exists\r\n const updateCreditCardPromise = [\r\n getUpdateCardDetails(addAction, monthEndDate, externalId),\r\n ];\r\n\r\n // update credit card details\r\n commonService.executePromises(updateCreditCardPromise).then(() => {\r\n // get the credit card details\r\n const getDetailCreditCardPromise = [\r\n getUpdateCardDetails(displayAction, null, null),\r\n ];\r\n commonService\r\n .executePromises(getDetailCreditCardPromise)\r\n .then(() => {\r\n const cardDetails =\r\n vm.creditCardDetails.d.CredCard_Res.results.length > 0 &&\r\n vm.creditCardDetails.d.CredCard_Res.results.filter(\r\n item => item.CreditCardNumber === externalId,\r\n );\r\n\r\n if (cardDetails && cardDetails.length > 0) {\r\n manageAutoReloadRequest.bankAccountId =\r\n cardDetails[0].CreditCardID;\r\n UpdateAutoReload(manageAutoReloadRequest);\r\n }\r\n });\r\n });\r\n }\r\n },\r\n error => {\r\n componentStateHandler.failedStateDashboard(vm);\r\n },\r\n );\r\n }\r\n\r\n function UpdateAutoReload(request) {\r\n manageAutoReloadService.sitecore.manageAutoReload(request).then(\r\n result => {\r\n if (\r\n result.d.AutoReloadManage_NAV.results[0].ReplyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n load();\r\n\r\n setTimeout(() => {\r\n vm.toastData.option = 'success';\r\n vm.toastData.messageOption = 'Success! Changes saved.';\r\n vm.toastData.show = true;\r\n $timeout(() => {\r\n vm.toastData.show = false;\r\n }, 6000);\r\n }, 1000);\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getUpdateCardDetails(action, expire, externalId) {\r\n if (action === 'DISPLAY') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\r\n requestedBy: vm.emailId.primaryEmail,\r\n };\r\n }\r\n if (action === 'ADD') {\r\n vm.getCardData = {\r\n action,\r\n businessPartnerId: globalAccountInfo.accountSelected.primaryBp,\r\n requestedBy: vm.emailId.primaryEmail,\r\n creditCardNumber: externalId,\r\n creditCardType: '0006',\r\n expirationDate: expire,\r\n };\r\n }\r\n\r\n return getUpdateCardDetailsService.sitecore\r\n .getUpdateCardDetails(vm.getCardData)\r\n .then(\r\n result => {\r\n if (action === 'DISPLAY') {\r\n vm.creditCardDetails = result;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function validateForm() {\r\n vm.disableSaveButton = false;\r\n\r\n if (vm.showError) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n if (vm.autoReloadForm.reloadWhenOption === reloadBalanceOption) {\r\n if (!parseFloat(vm.autoReloadForm.balanceAmountRW)) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n\r\n if (parseFloat(vm.autoReloadForm.balanceAmountRW) <= 0) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n }\r\n\r\n if (vm.autoReloadForm.reloadWhenOption === reloadDaysOption) {\r\n if (!parseInt(vm.autoReloadForm.daysRemaining)) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n\r\n if (parseFloat(vm.autoReloadForm.daysRemaining) <= 0) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n }\r\n\r\n if (!parseFloat(vm.autoReloadForm.reloadAmount)) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n\r\n if (\r\n parseFloat(vm.autoReloadForm.reloadAmount) < 15 ||\r\n parseFloat(vm.autoReloadForm.reloadAmount) > 500\r\n ) {\r\n vm.disableSaveButton = true;\r\n return;\r\n }\r\n\r\n if (\r\n vm.autoReloadForm.paymentMethod === paymentOptionSpeedPay &&\r\n !enrolledWithCreditCard\r\n ) {\r\n // check for credit card\r\n vm.disableSaveButton = true;\r\n }\r\n\r\n // check with bank account\r\n if (vm.autoReloadForm.paymentMethod === paymentoptionBank) {\r\n if (\r\n vm.selectedAccount == null ||\r\n vm.selectedAccount.BankAccountId == null ||\r\n vm.selectedAccount.BankAccountId === ''\r\n ) {\r\n vm.disableSaveButton = true;\r\n }\r\n }\r\n }\r\n}\r\n","app.controller('ManageAutoReloadSuccessModal', ManageAutoReloadSuccessModal);\r\nManageAutoReloadSuccessModal.$inject = [\r\n '$modalInstance',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ManageAutoReloadSuccessModal(\r\n $modalInstance,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Global Vars-----------------------*/\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function load() {\r\n /* empty functtion*/\r\n }\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n virtualPagePush(\r\n 'prepaid-advantage',\r\n 'manage-auto-reload',\r\n 'you-have-been-unenrolled-from-auto-reload',\r\n 'confirmation'\r\n );\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller('ManageAutoReloadUnenrollModal', ManageAutoReloadUnenrollModal);\r\nManageAutoReloadUnenrollModal.$inject = [\r\n 'assetService',\r\n '$rootScope',\r\n '$modalInstance',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ManageAutoReloadUnenrollModal(\r\n assetService,\r\n $rootScope,\r\n $modalInstance,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n /* --------------Global Vars-----------------------*/\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function enrollContinueModal() {\r\n $modalInstance.close();\r\n $rootScope.$broadcast(assetService.events.autoreloadUnenrollNotification);\r\n // Should call a service to unenroll from autoreload\r\n }\r\n\r\n function load() {\r\n /*empty function*/\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.enrollContinueModal = enrollContinueModal;\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('Prepaid1EducationPg', Prepaid1EducationPg);\r\n\r\nPrepaid1EducationPg.$inject = [\r\n '$log',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n 'apiApigeeConfigService',\r\n 'sessionStorageService',\r\n 'genericHelperService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'prepaidService',\r\n 'speedpayService',\r\n 'checkEligibilityForPrepaidService',\r\n 'getLoggedInUserDetailsService',\r\n];\r\n\r\nfunction Prepaid1EducationPg(\r\n $log,\r\n assetService,\r\n $state,\r\n $scope,\r\n apiApigeeConfigService,\r\n sessionStorageService,\r\n genericHelperService,\r\n getAccountBalanceForRegularAccountService,\r\n prepaidService,\r\n speedpayService,\r\n checkEligibilityForPrepaidService,\r\n getLoggedInUserDetailsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n vm.balanceThreshold = '';\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n dueBalance: false,\r\n totalDueDlls: null,\r\n };\r\n\r\n /* --------------Function Declaration-----------------------*/\r\n vm.goToSpeedpay = goToSpeedpay;\r\n vm.nextStep = nextStep;\r\n vm.goToPage = goToPage;\r\n\r\n /* --------------Function Definition-----------------------*/\r\n function nextStep() {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_TERMS_CONDITIONS);\r\n }\r\n\r\n function redirection() {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\r\n }\r\n\r\n function goToPage(link) {\r\n location.href = link;\r\n }\r\n\r\n function goToSpeedpay() {\r\n const zipcode = vm.user.accountData.zipCode;\r\n speedpayService\r\n .getSpeedpayUrl({\r\n action: assetService.strings.START,\r\n login: vm.user.value,\r\n password: zipcode,\r\n UserID: vm.currentUser.cdpId,\r\n returnUrl: window.location.origin + vm.returnUrl,\r\n })\r\n .then((result) => {\r\n location.href = result;\r\n });\r\n\r\n // genericHelperService.openPopup(speedpayUrl, window, '900', '600', redirection, $scope);\r\n }\r\n\r\n function load() {\r\n const dataToPost = {\r\n accountList: [\r\n {\r\n contractAccountNumber: globalSelectedAccount.accountNum,\r\n },\r\n ],\r\n };\r\n checkEligibilityForPrepaid({\r\n premiseNumber: globalAccountInfo.accountSelected.premiseID,\r\n businessPartner: globalAccountInfo.accountSelected.bpNumber,\r\n }).then(\r\n () => {\r\n if (vm.balanceThreshold > 0) {\r\n getAccountBalanceForRegularAccount(dataToPost);\r\n }\r\n },\r\n (error) => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function checkEligibilityForPrepaid(data) {\r\n return checkEligibilityForPrepaidService.sitecore.checkEligibilityForPrepaid(data).then(\r\n (result) => {\r\n vm.balanceThreshold = result.d.HeaderToResponseNav.results[0].BalanceThreshold;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalanceForRegularAccount(data) {\r\n getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n (result) => {\r\n if (result.getAccountAndBillingInfoResList[0].totalDueDlrs > vm.balanceThreshold) {\r\n vm.data.dueBalance = true;\r\n vm.data.totalDueDlls = result.getAccountAndBillingInfoResList[0].totalDueDlrs;\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n } else {\r\n vm.data.dueBalance = false;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n /* Selected account */\r\n // $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n // });\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n const dtaUsers = sessionStorageService.get(assetService.storageKeys.accountSelector);\r\n vm.user = dtaUsers.accounts.find(data => data.value === globalSelectedAccount.accountNum);\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n (results) => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) {\r\n $log.error(error);\r\n }\r\n },\r\n );\r\n }\r\n vm.loadingSpinner = true;\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('Prepaid2TermsConditions', Prepaid2TermsConditions);\r\n\r\nPrepaid2TermsConditions.$inject = ['assetService', '$state', 'prepaidService'];\r\n\r\nfunction Prepaid2TermsConditions(assetService, $state, prepaidService) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n txtTermsConditions: prepaidService.strings.TERMS_CONDITIONS,\r\n activeAgreeButton: true,\r\n };\r\n /* Function Declarations */\r\n vm.nextStep = nextStep;\r\n vm.previousStep = previousStep;\r\n vm.goToPage = goToPage;\r\n /* Function Definitions */\r\n function changeButton() {\r\n vm.data.activeAgreeButton = false;\r\n angular\r\n .element(document.getElementById(assetService.strings.TERMS_TEXTAREA))\r\n .scope()\r\n .$apply();\r\n }\r\n\r\n function nextStep() {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_LOAD);\r\n }\r\n\r\n function previousStep() {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_EDUCATION_PG);\r\n }\r\n\r\n function goToPage(link) {\r\n location.href = link;\r\n }\r\n\r\n function load() {\r\n setTimeout(() => {\r\n angular\r\n .element(document.getElementById(assetService.strings.TERMS_TEXTAREA))\r\n .bind('scroll', () => {\r\n const textarea = angular.element(\r\n document.getElementById(assetService.strings.TERMS_TEXTAREA),\r\n );\r\n const scrollSize = textarea[0].scrollHeight;\r\n if (textarea[0].clientHeight + textarea[0].scrollTop >= scrollSize) {\r\n changeButton();\r\n }\r\n });\r\n }, 500);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('Prepaid3Load', Prepaid3Load);\r\n\r\nPrepaid3Load.$inject = [\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$rootScope',\r\n 'CareDeleteProductService',\r\n 'createContractAccountInPrepaid',\r\n 'enrollIntoPrepaidService',\r\n 'genericHelperService',\r\n 'getPrepaidDetailsService',\r\n 'getProductRecommendationsCAREService',\r\n 'prepaidService',\r\n 'speedpayService',\r\n 'sessionStorageService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getLoggedInUserDetailsService',\r\n 'careFeedbackService',\r\n];\r\n\r\nfunction Prepaid3Load(\r\n assetService,\r\n $state,\r\n $scope,\r\n $rootScope,\r\n CareDeleteProductService,\r\n createContractAccountInPrepaid,\r\n enrollIntoPrepaidService,\r\n genericHelperService,\r\n getPrepaidDetailsService,\r\n getProductRecommendationsCAREService,\r\n prepaidService,\r\n speedpayService,\r\n sessionStorageService,\r\n getAccountBalanceForRegularAccountService,\r\n getLoggedInUserDetailsService,\r\n careFeedbackService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n const _startedFromScope = false;\r\n const _SUCCESS = assetService.replyCodes.SUCCESS;\r\n const _prepaid = assetService.strings.PREPAID;\r\n /* --------------Gloabl Vars-----------------------*/\r\n const vm = this;\r\n vm.data = {\r\n dueBalance: true,\r\n };\r\n vm.createContractAccount = {\r\n reply: null,\r\n contractAccount: null,\r\n };\r\n vm.enrollIntoPrepaid = {\r\n reply: null,\r\n messageText: null,\r\n };\r\n vm.user = '';\r\n vm.currentUser = '';\r\n vm.prepaidDetails = {\r\n averagePerDay: null,\r\n };\r\n vm.thresholdAmount = '';\r\n vm.returnUrl = '';\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n vm.address = '';\r\n vm.accountNumber = '';\r\n /* Function Declaration */\r\n vm.init = init;\r\n vm.goToSpeedpay = goToSpeedpay;\r\n vm.previousStep = previousStep;\r\n vm.goToPage = goToPage;\r\n $rootScope.isCareComp = false;\r\n\r\n /* Function Definition */\r\n function redirection(option) {\r\n if (option === assetService.strings.SPEEDPAY_SUCCESS_REDIRECT) {\r\n const dataToPost = {\r\n businessPartner: _globalSelectedAccount.bpNumber,\r\n contractAccount: vm.createContractAccount.contractAccount,\r\n premiseNumber: _globalSelectedAccount.premiseID,\r\n division: _globalSelectedAccount.division,\r\n moveInDate: moment().format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n\r\n enrollIntoPrepaid(dataToPost).then(\r\n () => {\r\n if (vm.enrollIntoPrepaid.reply === _SUCCESS) {\r\n const requestCare = {\r\n accountNumber: _globalSelectedAccount.accountNum,\r\n jurisdiction: _globalSelectedAccount.jurisdiction,\r\n progName: _prepaid,\r\n };\r\n // Call to getProductsRecommendations\r\n productRecommendationsCARE(requestCare);\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_SUCCESS);\r\n } else {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n }\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n } else {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_LOAD);\r\n }\r\n }\r\n\r\n function goToSpeedpay() {\r\n const zipcode = vm.user.accountData.zipCode;\r\n speedpayService\r\n .getSpeedpayUrl({\r\n action: assetService.strings.START,\r\n login: vm.createContractAccount.contractAccount,\r\n password: zipcode,\r\n UserID: '',\r\n returnUrl: window.location.origin + vm.returnUrl,\r\n })\r\n .then(result => {\r\n location.href = result;\r\n });\r\n // genericHelperService.openPopup(speedpayUrl, window, '900', '600', redirection, $scope);\r\n }\r\n\r\n function previousStep() {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_TERMS_CONDITIONS);\r\n }\r\n\r\n function goToPage(link) {\r\n location.href = link;\r\n }\r\n\r\n function enrollIntoPrepaid(data) {\r\n return enrollIntoPrepaidService.sitecore.enrollIntoPrepaid(data).then(\r\n result => {\r\n vm.enrollIntoPrepaid.reply =\r\n result.d.EnrollPrepayToMessageNav.results[0].ReplyCode;\r\n vm.enrollIntoPrepaid.messageText =\r\n result.d.EnrollPrepayToMessageNav.results[0].Message;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId && \r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function load() {\r\n const dataCreateContractAccount = {\r\n businessPartner: _globalSelectedAccount.bpNumber,\r\n premiseNumber: _globalSelectedAccount.premiseID,\r\n division: _globalSelectedAccount.division,\r\n };\r\n\r\n const dataPrepaidDetails = {\r\n businessPartnerId: _globalSelectedAccount.bpNumber,\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n };\r\n createContractAccountForPrepaid(dataCreateContractAccount).then(\r\n () => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.contractAccount,\r\n vm.createContractAccount.contractAccount,\r\n );\r\n getAccountBalance({\r\n accountList: [\r\n { contractAccountNumber: vm.createContractAccount.contractAccount },\r\n ],\r\n }).then(\r\n () => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.accountBalance,\r\n vm.accountBalanceDetails,\r\n );\r\n vm.balanceAmount =\r\n parseFloat(vm.thresholdAmount) -\r\n parseFloat(vm.accountBalanceDetails);\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n\r\n getPrepaidDetails(dataPrepaidDetails).then(\r\n () => {},\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n\r\n function createContractAccountForPrepaid(data) {\r\n return createContractAccountInPrepaid.sitecore\r\n .createContractAccountInPrepaid(data)\r\n .then(\r\n result => {\r\n vm.createContractAccount.reply =\r\n result.d.CreateCAToMessageNav.results[0].ReplyCode;\r\n vm.createContractAccount.contractAccount =\r\n result.d.CreateCAToCANav.results[0].ContractAccount;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n function getAccountBalance(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n const infoResList = result.getAccountAndBillingInfoResList.filter(\r\n item =>\r\n item.contractAccountNumber ==\r\n data.accountList[0].contractAccountNumber,\r\n );\r\n vm.accountBalanceDetails = infoResList[0].totalDueDlrs || 0;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function getPrepaidDetails(data) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(\r\n result => {\r\n vm.prepaidDetails.averagePerDay =\r\n result.d.PrepaidToBP.results[0].BPToCA.results[0].AverageCostPerDay;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init(thresholdAmount, returnUrl) {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n vm.address = _globalSelectedAccount.address;\r\n vm.accountNumber = _globalSelectedAccount.accountNum;\r\n vm.thresholdAmount = thresholdAmount;\r\n vm.returnUrl = returnUrl;\r\n sessionStorageService.set(\r\n assetService.storageKeys.thresholdAmount,\r\n vm.thresholdAmount,\r\n );\r\n const dtaUsers = sessionStorageService.get(\r\n assetService.storageKeys.accountSelector,\r\n );\r\n vm.user = dtaUsers.accounts.find(\r\n data => data.value === _globalSelectedAccount.accountNum,\r\n );\r\n load();\r\n }\r\n\r\n // init();\r\n}\r\n","function ccPrepaidEnrollSuccessController(\r\n $log,\r\n prepaidService,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n broadcastService,\r\n getAccountBalanceForRegularAccountService,\r\n getLoggedInUserDetailsService,\r\n enrollIntoPrepaidService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.contractAccount = '';\r\n vm.accountBalanceDetails = '';\r\n vm.balanceBeforePay = '';\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n let _globalAccountInfo = null;\r\n let _globalSelectedAccount = null;\r\n vm.showError = false;\r\n vm.enrollIntoPrepaid = {\r\n reply: '',\r\n messageText: '',\r\n };\r\n const _SUCCESS = assetService.replyCodes.SUCCESS;\r\n /* --------------Gloabl Vars\r\n -----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n let contractAccount = sessionStorageService.get(\r\n assetService.storageKeys.contractAccount,\r\n );\r\n let previousAccountBalance = sessionStorageService.get(\r\n assetService.storageKeys.accountBalance,\r\n );\r\n let thresholdAmount = sessionStorageService.get(\r\n assetService.storageKeys.thresholdAmount,\r\n );\r\n const dataToPost = {\r\n businessPartner: _globalSelectedAccount.bpNumber,\r\n contractAccount: contractAccount,\r\n premiseNumber: _globalSelectedAccount.premiseID,\r\n division: _globalSelectedAccount.division,\r\n moveInDate: moment().format('YYYY-MM-DDTHH:mm:ss'),\r\n };\r\n\r\n getAccountBalance({\r\n accountList: [{ contractAccountNumber: contractAccount }],\r\n }).then(\r\n () => {\r\n if (\r\n Math.abs(vm.accountBalanceDetails) >\r\n Math.abs(previousAccountBalance) &&\r\n Math.abs(vm.accountBalanceDetails) >= Math.abs(thresholdAmount)\r\n ) {\r\n enrollIntoPrepaid(dataToPost).then(\r\n () => {\r\n if (vm.enrollIntoPrepaid.reply === _SUCCESS) {\r\n /* const requestCare = {\r\n accountNumber: _globalSelectedAccount.accountNum,\r\n jurisdiction: _globalSelectedAccount.jurisdiction,\r\n progName: _prepaid,\r\n }; \r\n // Call to getProductsRecommendations\r\n productRecommendationsCARE(requestCare).then(() => {\r\n $state.go(prepaidService.prepaidRouteState.ENROLL_SUCCESS);\r\n }); */\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n vm.showError = false;\r\n } else {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n vm.showError = true;\r\n }\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n vm.showError = true;\r\n },\r\n );\r\n } else {\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n vm.showError = true;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n vm.showError = true;\r\n },\r\n );\r\n\r\n if (!assetService.apiConfig.useLocalHost) {\r\n getLoggedInUserDetailsService.getAuthUserDetails().then(\r\n results => {\r\n vm.currentUser = {\r\n emailId: results.Value,\r\n cdpId: results.Key,\r\n };\r\n vm.emailId = vm.currentUser.emailId;\r\n },\r\n error => {},\r\n );\r\n }\r\n }\r\n function getAccountBalance(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n const infoResList = result.getAccountAndBillingInfoResList.filter(\r\n item =>\r\n item.contractAccountNumber ==\r\n data.accountList[0].contractAccountNumber,\r\n );\r\n vm.accountBalanceDetails = infoResList[0].totalDueDlrs || 0;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n vm.showError = true;\r\n },\r\n );\r\n }\r\n\r\n function enrollIntoPrepaid(data) {\r\n return enrollIntoPrepaidService.sitecore.enrollIntoPrepaid(data).then(\r\n result => {\r\n vm.enrollIntoPrepaid.reply =\r\n result.d.EnrollPrepayToMessageNav.results[0].ReplyCode;\r\n vm.enrollIntoPrepaid.messageText =\r\n result.d.EnrollPrepayToMessageNav.results[0].Message;\r\n },\r\n error => {\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n vm.showError = true;\r\n },\r\n );\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n}\r\nccPrepaidEnrollSuccessController.$inject = [\r\n 'prepaidService',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'broadcastService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'getLoggedInUserDetailsService',\r\n 'enrollIntoPrepaidService',\r\n];\r\n\r\napp.controller(\r\n 'ccPrepaidEnrollSuccessController',\r\n ccPrepaidEnrollSuccessController,\r\n);\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCStatements', CCStatements);\r\nCCStatements.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'balanceActivityService',\r\n 'getInvoiceListService',\r\n 'invoiceImageService',\r\n 'dateHelperService',\r\n 'prepaidService',\r\n 'sessionStorageService',\r\n 'modalService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction CCStatements(\r\n $log,\r\n $scope,\r\n assetService,\r\n balanceActivityService,\r\n getInvoiceListService,\r\n invoiceImageService,\r\n dateHelperService,\r\n prepaidService,\r\n sessionStorageService,\r\n modalService,\r\n commongaTaggingService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n const _currentYear = moment().year();\r\n let _globalAccountInfo = {};\r\n let _globalSelectedAccount = {};\r\n let _newYear = _currentYear;\r\n const noOfDays = '90';\r\n\r\n /* Global Vars */\r\n vm.data = {\r\n statements: [],\r\n };\r\n vm.balanceActivity = {\r\n data: [],\r\n grouped: [],\r\n keys: [],\r\n };\r\n vm.loadingSpinner = true;\r\n\r\n /* Function Declarations */\r\n vm.goToDocument = goToDocument;\r\n vm.previousYear = previousYear;\r\n vm.showPrevYear = true;\r\n vm.yearList = [];\r\n vm.attributePush = attributePush;\r\n vm.noDataFound = false;\r\n vm.isImageAvailable = false;\r\n\r\n /* Function definitions */\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function getInvoiceImage(data) {\r\n invoiceImageService.sitecore.invoceImage(data).then(\r\n result => {\r\n if (\r\n result &&\r\n result.MessageReply &&\r\n result.MessageReply.replyCode &&\r\n result.MessageReply.replyCode != ''\r\n ) {\r\n let hexValue = result.MessageReply.replyCode;\r\n if (hexValue) {\r\n let base64Value = hexToBase64(hexValue);\r\n function hexToBase64(str) {\r\n return btoa(\r\n str\r\n .match(/\\w{2}/g)\r\n .map(function(a) {\r\n return String.fromCharCode(parseInt(a, 16));\r\n })\r\n .join(''),\r\n );\r\n }\r\n const byteCharacters = atob(base64Value);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const file = new Blob([byteArray], { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n\r\n if (isIosDevice()) {\r\n location.href = fileURL;\r\n } else {\r\n window.open(fileURL);\r\n }\r\n }\r\n } else {\r\n showNoPDFModal();\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function isIosDevice() {\r\n return /^(iPhone|iPad|iPod)/.test(navigator.platform);\r\n }\r\n\r\n function showNoPDFModal() {\r\n modalService.pdfNotFound();\r\n }\r\n\r\n function goToDocument(documentId) {\r\n getInvoiceImage({ documentNumber: documentId });\r\n }\r\n\r\n function previousYear() {\r\n filterYear();\r\n }\r\n\r\n function load() {\r\n // Global Switcher Account\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (_globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n _globalSelectedAccount = _globalAccountInfo.accountSelected;\r\n }\r\n\r\n let fromDate = new Date();\r\n fromDate.setFullYear(fromDate.getFullYear() - 1);\r\n\r\n getInvoiceList({\r\n contractAccountId: _globalSelectedAccount.accountNum,\r\n fromDate: '/Date(' + fromDate.getTime() + ')/',\r\n }).then(\r\n () => {\r\n filterYear();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function getInvoiceList(data) {\r\n return getInvoiceListService.sitecore.getInvoiceList(data).then(\r\n result => {\r\n let paymentData = _.map(\r\n result.d.Inp_Req.results[0].Account_Invoice.results,\r\n item => ({\r\n key:\r\n item.InvId +\r\n '|' +\r\n moment(item.InvDateStr).year() +\r\n '|' +\r\n moment(item.InvDateStr).format('MMMM') +\r\n '|' +\r\n moment(item.InvDateStr).format('DD') +\r\n '|' +\r\n item.BillStartDateStr +\r\n '|' +\r\n item.BillEndDateStr +\r\n '|' +\r\n item.BillDays +\r\n '|' +\r\n item.IsImageAvlbl,\r\n }),\r\n );\r\n\r\n let uniqueKeys = _.uniq(paymentData, 'key').map(\r\n activity => activity.key,\r\n );\r\n\r\n //statement data\r\n vm.balanceActivity.data = getUniqueData(uniqueKeys).sort(\r\n (a, b) => b.date - a.date,\r\n );\r\n\r\n //Unique Year\r\n vm.balanceActivity.year = _.uniq(vm.balanceActivity.data, 'year').map(\r\n activity => activity.year,\r\n );\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function filterYear() {\r\n if (vm.balanceActivity.year > 1) {\r\n vm.showPrevYear = true;\r\n }\r\n\r\n if (vm.yearList.length < vm.balanceActivity.year.length) {\r\n vm.yearList.push(vm.balanceActivity.year[vm.yearList.length]);\r\n\r\n vm.data.statements = _.filter(vm.balanceActivity.data, actvity => {\r\n let find = false;\r\n vm.yearList.forEach(element => {\r\n if (!find) find = actvity.year === element;\r\n });\r\n\r\n return find;\r\n });\r\n\r\n if (vm.yearList.length == vm.balanceActivity.year.length) {\r\n vm.showPrevYear = false;\r\n }\r\n } else {\r\n vm.noDataFound = true;\r\n vm.showPrevYear = false;\r\n }\r\n\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function getUniqueData(uniqueKeys) {\r\n let uniqueData = [];\r\n uniqueKeys.forEach(function(element) {\r\n let val = element.split('|');\r\n let billStartDate = moment(val[4]);\r\n let billEndDate = moment(val[5]);\r\n let duration = moment.duration(billEndDate.diff(billStartDate));\r\n let billDays = (val[6]);\r\n let imageAvailable = val[7];\r\n if(imageAvailable === \"True\"){\r\n vm.isImageAvailable = true;\r\n }else{\r\n vm.isImageAvailable = false;\r\n }\r\n uniqueData.push({\r\n documentId: val[0],\r\n year: val[1],\r\n month: val[2],\r\n date: moment(val[5]).toDate(),\r\n day: val[3],\r\n billStartDate: moment(val[4]).format('MMM DD'),\r\n billEndDate: moment(val[5]).format('MMM DD'),\r\n billDays: billDays,\r\n isImageAvailable: vm.isImageAvailable,\r\n billYear:moment(val[5]).format('YYYY'),\r\n });\r\n });\r\n return uniqueData;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('confirmUnPrepaid', confirmUnPrepaid);\r\n\r\nconfirmUnPrepaid.$inject = ['$state', 'prepaidService'];\r\n\r\nfunction confirmUnPrepaid($state, prepaidService) {\r\n /* Scope Vars */\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n\r\n /* Global Vars */\r\n\r\n /* Function declarations */\r\n\r\n vm.nextStep = nextStep;\r\n vm.previous = previous;\r\n\r\n /* Function definitions */\r\n function nextStep() {\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_SECURITY_DEPOSIT);\r\n }\r\n\r\n function previous() {\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_LOOSE_BENEFITS);\r\n }\r\n\r\n function load() {/* empty function*/}\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller(\r\n 'LooseBenefits',\r\n LooseBenefits,\r\n);\r\nLooseBenefits.$inject = [\r\n '$state',\r\n 'prepaidService',\r\n 'genericHelperService'\r\n];\r\n\r\nfunction LooseBenefits(\r\n $state,\r\n prepaidService,\r\n genericHelperService\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n vm.loadingSpinner = true;\r\n\r\n /* Global Vars */\r\n\r\n /* Function declarations */\r\n vm.unenroll = unenroll;\r\n /* Function definitions */\r\n\r\n function unenroll() {\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\r\n }\r\n /* Function declarations */ \r\n\r\n function generateDateNormal () {\r\n let tempDate = new Date()\r\n let date = genericHelperService.convertDateToFormatApi( new Date(tempDate))\r\n return date\r\n }\r\n /* Function definitions */ \r\n \r\n function load() {\r\n console.log(generateDateNormal());\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('securityDepositUnPrepaid', securityDepositUnPrepaid);\r\nsecurityDepositUnPrepaid.$inject = [\r\n '$log',\r\n 'commonService',\r\n '$state',\r\n '$scope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'apiApigeeConfigService',\r\n 'genericHelperService',\r\n 'delinquencyCheckForPremiseService',\r\n 'unenrollIntoPrepaidService',\r\n 'prepaidService',\r\n 'orderDeterminationService',\r\n];\r\n\r\nfunction securityDepositUnPrepaid(\r\n $log,\r\n commonService,\r\n $state,\r\n $scope,\r\n sessionStorageService,\r\n assetService,\r\n apiApigeeConfigService,\r\n genericHelperService,\r\n delinquencyCheckService,\r\n unenrollIntoPrepaidService,\r\n prepaidService,\r\n orderDeterminationService,\r\n) {\r\n /* Scope Vars */\r\n const vm = this;\r\n let _delinquencyCheckData = null;\r\n let _orderDeterminationData = null;\r\n\r\n /* Global Vars */\r\n const _SUCCESS = assetService.replyCodes.SUCCESS;\r\n vm.loadingSpinner = true;\r\n vm.accept = false;\r\n vm.isFailure = false;\r\n vm.name = prepaidService.strings.deposit;\r\n vm.deposit = {\r\n securityDeposit: 0.0,\r\n serviceCharge: 0.0,\r\n totalpay: 0.0,\r\n };\r\n vm.unEnroll = {\r\n matCode: '',\r\n premise: '',\r\n installation: '',\r\n meterNumber: '',\r\n division: '',\r\n contract: '',\r\n miAmount: '',\r\n miSecurityDepositAmt: '',\r\n };\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n\r\n vm.unenrollIntoPrepaid = value => {\r\n unenrollIntoPrepaidService.sitecore\r\n .unenrollIntoPrepaid({\r\n businessPartner: value.bpNumber,\r\n contractAccount: value.accountNum,\r\n //MO\r\n moMatCode: vm.unEnroll.matCode,\r\n moPremise: value.premiseID,\r\n moInstallation: value.installationNumber,\r\n moAppointmentDate: generateDateNormal(),\r\n moMeterNumber: value.equipmentNo,\r\n moDivision: value.division,\r\n moveOutDate: generateDateNormal(),\r\n moContract: value.contract,\r\n //MI\r\n miPremiseId: value.premiseID,\r\n miAmount: String(vm.deposit.totalpay),\r\n miUserName: value.firstName,\r\n miWaiveDate: generateDateNextDay(),\r\n miMatCode: vm.unEnroll.matCode,\r\n miPremise: value.premiseID,\r\n miInstallation: value.installationNumber,\r\n miAppointmentDate: generateDateNextDay(),\r\n miMeterNumber: value.equipmentNo,\r\n moveInDate: generateDateNextDay(),\r\n moveOutDateInMoveIn: null,\r\n //Pay\r\n miSecurityDepositAmt: String(vm.deposit.securityDeposit),\r\n })\r\n .then(result => {\r\n if (\r\n result.d.UnEnrollToMessageNav.results[0].ReplyCode === _SUCCESS &&\r\n result.d.UnEnrollToMessageNav.results[1].ReplyCode === _SUCCESS\r\n ) {\r\n vm.isFailure = false;\r\n } else {\r\n vm.isFailure = true;\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.failureState,\r\n vm.isFailure,\r\n );\r\n\r\n $scope.$emit('unEnrollSuccess', assetService.storageKeys.failureState);\r\n\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_SUCCESS);\r\n });\r\n };\r\n\r\n function getData(accountSelected) {\r\n let todaysDate = new Date();\r\n let datetrans = moment(todaysDate).format('YYYY-MM-DDTHH:mm:ss');\r\n commonService\r\n .executePromises([\r\n delinquencyCheckForPremise({\r\n premiseId: accountSelected.premiseID,\r\n installation: [\r\n {\r\n Installation: accountSelected.installationNumber,\r\n },\r\n ],\r\n businessPartnerId: accountSelected.bpNumber,\r\n PID_DELINQ_FLAG: 'X',\r\n CA_DELINQ_FLAG: '',\r\n PREM_DELINQ_FLAG: '',\r\n }),\r\n orderDetermination({\r\n anlage: accountSelected.installationNumber,\r\n sparte: '01',\r\n date: datetrans,\r\n partner: accountSelected.bpNumber,\r\n }),\r\n ])\r\n .then(\r\n result => {\r\n setModels();\r\n vm.loadingSpinner = false;\r\n vm.showComponent = true;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function delinquencyCheckForPremise(data) {\r\n return delinquencyCheckService.sitecore\r\n .delinquencyCheckForPremise(data)\r\n .then(\r\n result => {\r\n _delinquencyCheckData = result.d;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function orderDetermination(data) {\r\n return orderDeterminationService.sitecore.orderDetermination(data).then(\r\n result => {\r\n _orderDeterminationData = result.d;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.showFailedState = true;\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n if (_delinquencyCheckData.H_ReqToFrontEndNav.results.length > 0) {\r\n vm.deposit.securityDeposit =\r\n _delinquencyCheckData.H_ReqToFrontEndNav.results[0].Amount;\r\n }\r\n\r\n if (\r\n _orderDeterminationData.ActToMatcode.results.length > 0 &&\r\n _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results\r\n .length > 0\r\n ) {\r\n vm.deposit.serviceCharge =\r\n _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results[0].SERVICE_FEE;\r\n }\r\n\r\n vm.deposit.totalpay =\r\n Number(vm.deposit.serviceCharge) + Number(vm.deposit.securityDeposit);\r\n\r\n if (\r\n _orderDeterminationData.ActToMatcode.results.length > 0 &&\r\n _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results\r\n .length > 0\r\n ) {\r\n vm.unEnroll.matCode =\r\n _orderDeterminationData.ActToMatcode.results[0].MatcodeToAppt.results[0].MatCode;\r\n }\r\n }\r\n\r\n /* Function declarations */\r\n vm.previous = previous;\r\n\r\n vm.nextStep = nextStep;\r\n /* Function definitions */\r\n\r\n function generateDateNormal() {\r\n let tempDate = new Date();\r\n let date = genericHelperService.convertDateToFormatApi(new Date(tempDate));\r\n return date;\r\n }\r\n\r\n function generateDateNextDay() {\r\n tempDate = new Date();\r\n let tempNextDay = tempDate.setDate(tempDate.getDate() + 3);\r\n date = genericHelperService.convertDateToFormatApi(new Date(tempNextDay));\r\n return date;\r\n }\r\n\r\n function nextStep() {\r\n vm.unenrollIntoPrepaid(vm.account);\r\n //location.href = window.location.origin + vm.successUrl\r\n }\r\n\r\n function previous() {\r\n $state.go(prepaidService.prepaidRouteState.UNENROLL_CONFIRM);\r\n }\r\n\r\n function load() {\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n vm.account = globalAccountInfo.accountSelected;\r\n }\r\n\r\n getData(vm.account);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","function ccPrepaidUnenrollSuccessController(\r\n $rootScope,\r\n prepaidService,\r\n $state,\r\n assetService,\r\n sessionStorageService,\r\n $scope,\r\n broadcastService,\r\n getAccountBalanceForPrepaid,\r\n getLoggedInUserDetailsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n vm.contractAccount = '';\r\n vm.accountBalanceDetails = '';\r\n vm.balanceBeforePay = '';\r\n vm.loadingSpinner = true;\r\n vm.showComponent = false;\r\n vm.showFailedState = false;\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n vm.isFailure = sessionStorageService.get(\r\n assetService.storageKeys.failureState,\r\n vm.isFailure,\r\n );\r\n vm.emailId = $rootScope.currentUserEmailId;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n vm.loadingSpinner = true;\r\n load();\r\n });\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\nccPrepaidUnenrollSuccessController.$inject = [\r\n '$rootScope',\r\n 'prepaidService',\r\n '$state',\r\n 'assetService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'broadcastService',\r\n 'getAccountBalanceForPrepaid',\r\n 'getLoggedInUserDetailsService',\r\n];\r\n\r\napp.controller(\r\n 'ccPrepaidUnenrollSuccessController',\r\n ccPrepaidUnenrollSuccessController,\r\n);\r\n","app.controller('EmailSubscriptions', EmailSubscriptions);\r\n\r\nfunction EmailSubscriptions(){\r\n /*--------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /*--------------Gloabl Vars-----------------------*/\r\n\r\n /*--------------Function Declarations-----------------------*/\r\n vm.emailSubscriptions = emailSubscriptions;\r\n\r\n /*--------------Function Definitions-----------------------*/\r\n function emailSubscriptions(value) {\r\n return value;\r\n }\r\n\r\n /*---------------Initialization-------------------*/\r\n const init = function() {\r\n /*empty function*/\r\n }\r\n\r\n //init();\r\n}","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('manageEmail', manageEmail);\r\nmanageEmail.$inject = [\r\n '$log',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'commonService',\r\n 'maintainUserProfileService',\r\n 'modalService',\r\n '$scope',\r\n '$rootScope',\r\n 'ccGetUserAccountsService',\r\n 'commongaTaggingService',\r\n 'cookieService',\r\n 'profileTypesAssetService',\r\n];\r\n\r\nfunction manageEmail(\r\n $log,\r\n sessionStorageService,\r\n assetService,\r\n commonService,\r\n maintainUserProfileService,\r\n modalService,\r\n $scope,\r\n $rootScope,\r\n ccGetUserAccountsService,\r\n commongaTaggingService,\r\n cookieService,\r\n profileTypesAssetService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let _sessionData = null;\r\n const _succes = assetService.replyCodes.S;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.addingEmail = false;\r\n vm.addNewEmail = false;\r\n vm.deleteIcon = false;\r\n vm.showPreferenceContent = false;\r\n vm.emailToDelete = null;\r\n vm.data = {\r\n emailAccounts: [],\r\n temporaryEmails: [],\r\n };\r\n\r\n // Toast Message\r\n let globalAccountInfo = {};\r\n vm.fromDeletePhonemodal = false;\r\n vm.closeToast = closeToast;\r\n vm.showToast = false;\r\n vm.isShowMoreEmailVisible = false;\r\n vm.remainingEmailCount = 0;\r\n vm.toastMessages = [];\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n const _fadeinfinite = assetService.strings.FADEINFINITE;\r\n const _successToast = assetService.strings.success;\r\n const _errorToast = assetService.strings.ERROR;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.addEmail = addEmail;\r\n vm.saveEmail = saveEmail;\r\n vm.cancelEmail = cancelEmail;\r\n vm.deleteEmail = deleteEmail;\r\n vm.viewMoreEmail = viewMoreEmail;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.init = init;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function addEmail() {\r\n // const newEmailObj = {\r\n // email: null,\r\n // addrNumber: null,\r\n // consNumber: null,\r\n // primary: null,\r\n // doNotUse: null,\r\n // isNew: true,\r\n // };\r\n // vm.data.temporaryEmails.push(newEmailObj);\r\n // vm.data.temporaryEmails = _.sortBy(vm.data.temporaryEmails, emailAccount => emailAccount.primary);\r\n // vm.addingEmail = true;\r\n modalService.manageAddEmail();\r\n }\r\n\r\n function closeToast() {\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }\r\n\r\n function saveEmail() {\r\n const newEmailAddresses = _.filter(\r\n vm.data.temporaryEmails,\r\n emailAccount => emailAccount.isNew,\r\n );\r\n const addEmailAddresses = _.map(newEmailAddresses, item => ({\r\n AddressNumber: vm.data.emailAccounts[0].addrNumber,\r\n EmailNew: item.email,\r\n CUDFlag: 'C',\r\n }));\r\n\r\n const data = {\r\n businessPartnerId: vm.data.businessPartnerId,\r\n emailAccounts: addEmailAddresses,\r\n };\r\n\r\n const promises = [mantainUserProfile(data)];\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.mantainUserProfile.replyCode === _succes) {\r\n const mydata = {\r\n businessPartnerId: _sessionData.globalSelectedAccount.primaryBp,\r\n emailId: _sessionData.currentUser.emailId,\r\n cdpId: _sessionData.currentUser.cdpId,\r\n contractAccountId: _sessionData.globalSelectedAccount.accountNum,\r\n };\r\n ccGetUserAccountsService.accountSearch(mydata).then(results => {\r\n vm.addingEmail = false;\r\n if (results.emails.length > 0) {\r\n _sessionData.emailSubscriptions = results.emails;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n _sessionData,\r\n );\r\n vm.addingEmail = false;\r\n vm.init();\r\n }\r\n });\r\n // vm.addingEmail = false;\r\n // $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n }\r\n });\r\n }\r\n\r\n function cancelEmail() {\r\n vm.addingEmail = false;\r\n vm.data.temporaryEmails = _.remove(\r\n vm.data.temporaryEmails,\r\n emailAccount => !emailAccount.isNew,\r\n );\r\n }\r\n\r\n function deleteEmail(email) {\r\n const emailToDelete = {\r\n email,\r\n };\r\n _sessionData.emailToDelete = emailToDelete;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n _sessionData,\r\n );\r\n modalService.manageEmail();\r\n }\r\n\r\n function setModels() {\r\n let emailArray = _.clone(_sessionData.emailSubscriptions);\r\n emailArray.length = emailArray.length > 10 ? 10 : emailArray.length;\r\n if (_sessionData.emailSubscriptions.length > 10) {\r\n vm.remainingEmailCount = _sessionData.emailSubscriptions.length - 10;\r\n vm.isShowMoreEmailVisible = false;\r\n } else {\r\n vm.isShowMoreEmailVisible = true;\r\n }\r\n vm.data = {\r\n emailAccounts: emailArray,\r\n temporaryEmails: _sessionData.emailSubscriptions,\r\n businessPartnerId: _sessionData.restToBp.bpNumber,\r\n interimMessage: _sessionData.interimMessage,\r\n };\r\n\r\n if (vm.fromDeletePhonemodal) {\r\n vm.showToast = true;\r\n vm.data.option = sessionStorageService.get(\r\n assetService.storageKeys.manageEmails.toastNotification,\r\n );\r\n let toastMessageTxt = sessionStorageService.get(\r\n assetService.storageKeys.manageEmails.toastNotificationMessage,\r\n );\r\n if (!toastMessageTxt.length)\r\n toastMessageTxt = vm.toastMessages[toastMessageTxt];\r\n vm.data.messageOption = toastMessageTxt;\r\n vm.data.show = sessionStorageService.get(\r\n assetService.storageKeys.manageEmails.toastNotificationtime,\r\n );\r\n }\r\n }\r\n\r\n function mantainUserProfile(dataToPost) {\r\n return maintainUserProfileService.sitecore\r\n .maintainUserProfile(dataToPost)\r\n .then(\r\n result => {\r\n vm.mantainUserProfile = {\r\n replyCode: result.d.MaintainProfileReqCA.results[0].ReplyCode,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n _sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n showHidePreferenceLink();\r\n setModels();\r\n }\r\n\r\n function showHidePreferenceLink() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo &&\r\n Object.prototype.hasOwnProperty.call(\r\n globalAccountInfo,\r\n 'accountSelected',\r\n ) &&\r\n globalAccountInfo.accountSelected.experience ==\r\n assetService.strings.SC_RESIDENTIAL\r\n ) {\r\n vm.showPreferenceContent = true;\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.refreshManageEmail, () => {\r\n vm.fromDeletePhonemodal = true;\r\n vm.init();\r\n if (vm.data.option == _successToast || vm.data.option == _errorToast) {\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'profile-settings',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'profile-settings',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n }\r\n if (vm.data.option == _successToast) {\r\n setTimeout(function() {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }, 12000);\r\n }\r\n });\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n if (arguments && arguments.length === 2) {\r\n vm.toastMessages[0] = arguments[0];\r\n vm.toastMessages[1] = arguments[1];\r\n }\r\n load();\r\n }\r\n\r\n function viewMoreEmail() {\r\n vm.isShowMoreEmailVisible = true;\r\n vm.data = {\r\n emailAccounts: _sessionData.emailSubscriptions,\r\n temporaryEmails: _sessionData.emailSubscriptions,\r\n businessPartnerId: _sessionData.restToBp.bpNumber,\r\n interimMessage: _sessionData.interimMessage,\r\n };\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageAddEmail', ModalManageAddEmail);\r\nModalManageAddEmail.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'assetService',\r\n 'commonService',\r\n 'maintainUserProfileService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n 'ccGetUserAccountsService',\r\n 'accountSearchService',\r\n 'commongaTaggingService',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction ModalManageAddEmail(\r\n $log,\r\n $modalInstance,\r\n assetService,\r\n commonService,\r\n maintainUserProfileService,\r\n sessionStorageService,\r\n $rootScope,\r\n ccGetUserAccountsService,\r\n accountSearchService,\r\n commongaTaggingService,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const succes = assetService.replyCodes.S;\r\n const _successToast=assetService.strings.success;\r\n const _errorToast = assetService.strings.ERROR;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n \r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.sessionData = {};\r\n vm.data = {};\r\n \r\n vm.emailValue = '';\r\n vm.duplicateMail = false;\r\n vm.maintainUserProfile = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.addEmail = addEmail;\r\n vm.closeModal = closeModal;\r\n vm.onEmailBlur = onEmailBlur;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function mantainUserProfile(dataToPost) {\r\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(\r\n (result) => {\r\n vm.mantainUserProfile = {\r\n replyCode: result.d.MaintainProfileReqCA.results[0].Type,\r\n errorcode: result.ReturnCodes[1].ReturnCode2.MessageNum,\r\n \r\n };\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"E\" }], null).then(\r\n (response) => {\r\n const errorsWithMapping = response.filter(error => !error.data.noMapping);\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach((error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\t deleteGlobalGAT();\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function addEmail(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\t\r\n }\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n const newEmailObj = {\r\n email: vm.emailValue,\r\n addrNumber: null,\r\n consNumber: null,\r\n primary: null,\r\n doNotUse: null,\r\n isNew: true,\r\n };\r\n vm.data.temporaryEmails.push(newEmailObj);\r\n\r\n const newEmailAddresses = _.filter(vm.data.temporaryEmails, emailAccount => emailAccount.isNew)\r\n const addEmailAddresses = _.map(newEmailAddresses, item => ({\r\n AddressNumber: vm.data.emailAccounts[0].addrNumber,\r\n EmailNew: vm.emailValue,\r\n CUDFlag: 'C',\r\n }));\r\n\r\n const data = {\r\n businessPartnerId: vm.data.bussinesPartner,\r\n emailAccounts: addEmailAddresses //vm.currentNotifModal.communicationModel,\r\n };\r\n\r\n const promises = [mantainUserProfile(data)];\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.mantainUserProfile.replyCode === \"E\") {\r\n if(vm.mantainUserProfile.errorcode===\"703\")\r\n {\r\n vm.duplicateMail=true;\r\n } else {\r\n vm.duplicateMail=false;\r\n }\r\n }\r\n if (vm.mantainUserProfile.replyCode === succes) {\r\n\r\n const accountSearchRequest = {\r\n businessPartnerId:vm.sessionData.primaryBp, \r\n dataSource:assetService.strings.ISU,\r\n };\r\n return accountSearchService.sitecore\r\n .accountSearch(accountSearchRequest)\r\n .then(\r\n \r\n (results) => {\r\n if (results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm.results\r\n .length > 0) {\r\n \r\n vm.emails = _.map(\r\n results.d.ReqToHResNav.results[0].HResToBp.results[0].BpToEm\r\n .results,\r\n item => ({\r\n email: item.EmailAddress,\r\n addrNumber: item.AddressNumber,\r\n consNumber: item.ConsNumber,\r\n primary: item.Primary,\r\n doNotUse: Object.prototype.hasOwnProperty.call(\r\n item,\r\n assetService.accountSelectorStrings.DoNotUse,\r\n )\r\n ? item.DoNotUse\r\n : false,\r\n isNew: null,\r\n }),\r\n );\r\n vm.addingEmail = false; \r\n vm.sessionData.emailSubscriptions = _.uniq(vm.emails, 'email') ;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings, vm.sessionData,\r\n );\r\n\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _successToast);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, 'Your email has been successfully added.');\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\r\n \r\n \r\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n });\r\n \r\n }else{\r\n let toastMessage;\r\n if(vm.mantainUserProfile.replyCode === assetService.replyCodes.E && vm.mantainUserProfile.number === '944')\r\n toastMessage = 0;\r\n else\r\n toastMessage = 1;\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _errorToast);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, toastMessage);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\r\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n });\r\n }\r\n\r\n function closeModal() {\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n\r\n function setModels() {\r\n vm.data = {\r\n bussinesPartner: vm.sessionData.restToBp.bpNumber, \r\n temporaryEmails: vm.sessionData.emailSubscriptions,\r\n emailAccounts: vm.sessionData.emailSubscriptions,\r\n };\r\n \r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n setModels();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\nfunction onEmailBlur(value) {\r\n let vm = this;\r\n vm.duplicateMail = false;\r\n if(value !== undefined && value !== '') {\r\n duplicate(vm);\r\n }\r\n}\r\n\r\nfunction duplicate(vm) {\r\n let defaultItem = vm.sessionData.emailSubscriptions.filter(function (itm) {\r\n return itm.email === vm.emailValue;\r\n });\r\n\r\n if(defaultItem.length>0)\r\n {\r\n vm.duplicateMail=true;\r\n }\r\n else{\r\n vm.duplicateMail=false;\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageEmail', ModalManageEmail);\r\nModalManageEmail.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'assetService',\r\n 'commonService',\r\n 'maintainUserProfileService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n '$scope',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction ModalManageEmail(\r\n $log,\r\n $modalInstance,\r\n assetService,\r\n commonService,\r\n maintainUserProfileService,\r\n sessionStorageService,\r\n $rootScope,\r\n commongaTaggingService,\r\n $scope,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const succes = assetService.replyCodes.S;\r\n const _fadeInOut = assetService.strings.FADEINOUT; \r\n const _successToast=assetService.strings.success;\r\n const _errorToast = assetService.strings.ERROR;\r\n let emailToCheck = {};\r\n\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.sessionData = {};\r\n vm.data = {};\r\n vm.maintainUserProfile = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.deleteEmail = deleteEmail;\r\n vm.closeModal = closeModal;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function mantainUserProfile(dataToPost) {\r\n return maintainUserProfileService.sitecore.maintainUserProfile(dataToPost).then(\r\n (result) => {\r\n vm.mantainUserProfile = {\r\n replyCode: result.d.MaintainProfileReqCA.results[0].Type,\r\n number: result.d.MaintainProfileReqCA.results[0].Number,\r\n };\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"E\" }], null).then(\r\n (response) => {\r\n const errorsWithMapping = response.filter(error => !error.data.noMapping);\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach((error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function deleteEmail(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\r\n }\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n const deleteEmailAddresses = [\r\n {\r\n Consnumber: emailToCheck.consNumber,\r\n AddressNumber: emailToCheck.addrNumber,\r\n EmailCurrent: emailToCheck.email,\r\n CUDFlag: 'D',\r\n },\r\n ];\r\n const dataToDelete = {\r\n businessPartnerId: vm.data.bussinesPartner,\r\n emailAccounts: deleteEmailAddresses,\r\n };\r\n\r\n const promises = [mantainUserProfile(dataToDelete)];\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.mantainUserProfile.replyCode === succes) {\r\n _.remove(vm.data.emailAccounts, (emailAccount, index) => {\r\n return emailAccount.email.toLowerCase() === vm.data.email.toLowerCase();\r\n });\r\n\r\n vm.sessionData.emailSubscriptions = vm.data.emailAccounts;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings, vm.sessionData,\r\n );\r\n\r\n \r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _successToast);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, 'Your email has been successfully deleted.');\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\r\n \r\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n else{\r\n let toastMessage;\r\n if(vm.mantainUserProfile.replyCode === assetService.replyCodes.E && vm.mantainUserProfile.number === '944')\r\n toastMessage = 0;\r\n else\r\n toastMessage = 1;\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotification, _errorToast);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationMessage, toastMessage);\r\n sessionStorageService.set(assetService.storageKeys.manageEmails.toastNotificationtime, _fadeInOut);\r\n $rootScope.$broadcast(assetService.events.refreshManageEmail);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n });\r\n }\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n\r\n function closeModal() {\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n\r\n function setModels() {\r\n vm.data = {\r\n bussinesPartner: vm.sessionData.restToBp.bpNumber,\r\n email: vm.sessionData.emailToDelete.email,\r\n emailAccounts: vm.sessionData.emailSubscriptions,\r\n };\r\n emailToCheck = vm.data.emailAccounts.find(x => x.email.toLowerCase() === vm.data.email.toLowerCase());\r\n vm.emailToDelete = emailToCheck.email;\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n \r\n function load() {\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n setModels();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-undef */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ManagePhoneNumbers', ManagePhoneNumbers);\r\n\r\nManagePhoneNumbers.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'updatePhoneNumberService',\r\n 'modalService',\r\n '$rootScope',\r\n '$scope',\r\n 'readAndDerivePreferencesService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n 'cookieService',\r\n 'profileTypesAssetService',\r\n];\r\n\r\nfunction ManagePhoneNumbers(\r\n $log,\r\n assetService,\r\n genericHelperService,\r\n sessionStorageService,\r\n updatePhoneNumberService,\r\n modalService,\r\n $rootScope,\r\n $scope,\r\n readAndDerivePreferencesService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n cookieService,\r\n profileTypesAssetService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n _success = assetService.replyCodes.SUCCESS;\r\n _kwValue = assetService.strings.VALUE;\r\n _kwText = assetService.strings.TEXT;\r\n _updPhn = assetService.serviceActions.updatePhoneNumber.UPD_PHN;\r\n _remPhn = assetService.serviceActions.updatePhoneNumber.REM_PHN;\r\n _addPhn = assetService.serviceActions.updatePhoneNumber.ADD_PHN;\r\n _dndRem = assetService.serviceActions.updateDndPrefence.DND_REM;\r\n _defaultTime = assetService.managerPhone.DEFAULT_TIME;\r\n _home = assetService.phonesTypes.HOME;\r\n _mobile = assetService.phonesTypes.MOBILE;\r\n _other = assetService.phonesTypes.OTHER;\r\n _textDnd = null;\r\n _startTime = null;\r\n _endTime = null;\r\n\r\n vm.closeToast = closeToast;\r\n vm.showToast = false;\r\n vm.remainingPhoneCount = 0;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n const _fadeinfinite = assetService.strings.FADEINFINITE;\r\n const _successToast = assetService.strings.success;\r\n const _errorToast = assetService.strings.ERROR;\r\n vm.fromDeletePhonemodal = false;\r\n vm.edidPreference = false;\r\n let globalAccountInfo = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.show = {\r\n // Variables for ng-class, ng-if or ng-show\r\n allBullets: false,\r\n mobileType: [],\r\n notDisturbTime: [],\r\n phoneOptions: [],\r\n rowToAdd: false,\r\n rowToEdit: [],\r\n savePhoneControls: false,\r\n tooltipPreferred: false,\r\n tooltipDisturb: false,\r\n };\r\n vm.checkUpPhone = false;\r\n vm.data = {\r\n selectStartNotDisturbHours: [],\r\n selectEndNotDisturbHours: [],\r\n phoneTypeItems: [],\r\n phoneNumbers: [],\r\n };\r\n vm.dropDowns = {\r\n phoneTypes: genericHelperService.createDropdownList(\r\n assetService.phoneTypes,\r\n _kwValue,\r\n _kwText,\r\n ),\r\n };\r\n\r\n vm.temporalPhoneRow = {\r\n // Deletable variables to make the API CRUD\r\n activeNotDisturbTime: false,\r\n endTime: null,\r\n key: null,\r\n phone: null,\r\n preferredPos: null,\r\n startTime: null,\r\n type: null,\r\n };\r\n\r\n vm.preferencePhoneRow = {\r\n // Deletable variables to make the API CRUD\r\n activeNotDisturbTime: false,\r\n endTime: null,\r\n key: null,\r\n phone: null,\r\n preferredPos: null,\r\n startTime: null,\r\n type: null,\r\n };\r\n\r\n vm.originalData = {\r\n typeSelection: [],\r\n activeNotDisturbTime: [],\r\n notDisturbTimes: [],\r\n preferredPos: null,\r\n preferredFlag: [],\r\n };\r\n vm.dataToPost = {\r\n action: null,\r\n businessPartnerId: null,\r\n typeOfContact: null,\r\n newPhone: null,\r\n preferredFlag: null,\r\n sequenceNumber: null,\r\n addressNumber: null,\r\n dndStartTime: null,\r\n dndStopTime: null,\r\n };\r\n vm.sessionData = {};\r\n vm.checkboxFlag = [];\r\n vm.isShowMoreVisible = false;\r\n vm.showPreferenceContent = false;\r\n vm.updatePhoneNumber = {\r\n replyCode: null,\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.beautifyPhone = beautifyPhone;\r\n vm.hideEditPhone = hideEditPhone;\r\n vm.hideAllEditRow = hideAllEditRow;\r\n vm.hidePhoneOptions = hidePhoneOptions;\r\n vm.hideTooltip = hideTooltip;\r\n vm.showAddPhone = showAddPhone;\r\n vm.showEditPhone = showEditPhone;\r\n vm.showPhoneOptions = showPhoneOptions;\r\n vm.showRemovePhone = showRemovePhone;\r\n vm.showTooltip = showTooltip;\r\n vm.resetAddPhoneRow = resetAddPhoneRow;\r\n vm.hideAllEditPhoneOptions = hideAllEditPhoneOptions;\r\n vm.editPhoneNumber = editPhoneNumber;\r\n vm.viewMore = viewMore;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function addEditPhoneNumberData(index) {\r\n if (vm.show.rowToAdd) {\r\n addPhoneNumberData(index);\r\n } else if (vm.show.rowToEdit[index] || vm.edidPreference) {\r\n deletePhoneNumberData(index);\r\n }\r\n }\r\n\r\n function closeToast() {\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }\r\n\r\n function addPhoneNumberData(index) {\r\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\r\n } else if (\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE ||\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER\r\n ) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\r\n }\r\n\r\n if (vm.temporalPhoneRow.phone) {\r\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\r\n } else {\r\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\r\n }\r\n vm.dataToPost.preferredFlag =\r\n vm.temporalPhoneRow.preferredPos === index.toString() ? true : false;\r\n\r\n if (vm.checkboxFlag[index]) {\r\n vm.dataToPost.dndStartTime = convertToISOTime(\r\n vm.temporalPhoneRow.startTime,\r\n );\r\n vm.dataToPost.dndStopTime = convertToISOTime(vm.temporalPhoneRow.endTime);\r\n } else {\r\n vm.dataToPost.dndStartTime = _defaultTime;\r\n vm.dataToPost.dndStopTime = _defaultTime;\r\n }\r\n\r\n vm.dataToPost.action = _addPhn;\r\n vm.dataToPost.addressNumber = '';\r\n vm.dataToPost.sequenceNumber = '';\r\n\r\n updatePhoneNumber(vm.dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n readAndDerivePreferences();\r\n } else {\r\n vm.showToast = true;\r\n vm.data.option = _errorToast;\r\n vm.data.messageOption =\r\n 'We were unable to update/delete phone number, please try again later.';\r\n vm.data.show = _fadeinfinite;\r\n }\r\n });\r\n }\r\n\r\n function deletePhoneNumberData(index) {\r\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\r\n } else if (\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE ||\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER\r\n ) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\r\n }\r\n const dataToPost = {\r\n action: _updPhn,\r\n businessPartnerId: vm.dataToPost.businessPartnerId,\r\n typeOfContact: vm.dataToPost.typeOfContact,\r\n newPhone: vm.data.phoneNumbers[index].phone,\r\n preferredFlag: vm.originalData.preferredFlag[index] ? true : false,\r\n sequenceNumber: vm.data.phoneNumbers[index].consumeNumber,\r\n addressNumber: vm.data.phoneNumbers[index].addressNumber,\r\n dndStartTime: convertToISOTime(vm.data.phoneNumbers[index].endTime),\r\n dndStopTime: convertToISOTime(vm.data.phoneNumbers[index].startTime),\r\n };\r\n if (vm.edidPreference) {\r\n dataToPost.preferredFlag = true;\r\n dataToPost.typeOfContact = vm.data.phoneNumbers[index].type.text;\r\n }\r\n updatePhoneNumber(dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n let readDerivePreferencesRequest = {\r\n businessPartnerId: vm.primaryBp,\r\n emailId: vm.sessionData.currentUser.emailId,\r\n cdpId: vm.sessionData.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n readAndDerivePreferences(readDerivePreferencesRequest);\r\n } else {\r\n vm.showToast = true;\r\n vm.data.option = _errorToast;\r\n vm.data.messageOption =\r\n 'We were unable to update/delete phone number, please try again later.';\r\n vm.data.show = _fadeinfinite;\r\n }\r\n });\r\n }\r\n\r\n function editPhoneNumber(phoneNumber) {\r\n // vm.show.savePhoneControls=true;\r\n // vm.preferencePhoneRow = phoneNumber;// vm.dataToPost.preferredFlag = true;\r\n // vm.edidPreference=true;\r\n\r\n //#region INLINE\r\n $rootScope.subheadForGAT = 'Manage Phone Numbers';\r\n $rootScope.buttonTextForGAT = 'Update Phone Number';\r\n vm.dataToPost.action = _updPhn;\r\n vm.dataToPost.typeOfContact = phoneNumber.type.text;\r\n vm.dataToPost.newPhone = phoneNumber.phone;\r\n vm.dataToPost.preferredFlag = true;\r\n vm.dataToPost.sequenceNumber = phoneNumber.consumeNumber;\r\n vm.dataToPost.addressNumber = phoneNumber.addressNumber;\r\n vm.dataToPost.dndStartTime = convertToISOTime(phoneNumber.startTime);\r\n vm.dataToPost.dndStopTime = convertToISOTime(phoneNumber.endTime);\r\n\r\n updatePhoneNumber(vm.dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n deleteGlobalGAT();\r\n $rootScope.$broadcast(assetService.events.refreshPreferredPhone);\r\n vm.updatePhoneNumber.replyCode = null;\r\n responseNotificationsService.successResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: 'Your Phone Number has been Updated.',\r\n pageTitle: assetService.storageKeys.profileSettings,\r\n });\r\n resetAddPhoneRow();\r\n } else {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message:\r\n 'Sorry! We were unable to update your preferred phone number',\r\n pageTitle: assetService.storageKeys.profileSettings,\r\n });\r\n vm.temporalPhoneRow.key = null;\r\n vm.temporalPhoneRow.phone = null;\r\n vm.temporalPhoneRow.type = null;\r\n vm.temporalPhoneRow.activeNotDisturbTime = false;\r\n vm.temporalPhoneRow.startTime = null;\r\n vm.temporalPhoneRow.endTime = null;\r\n // $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\r\n load();\r\n }\r\n });\r\n //#endregion\r\n }\r\n\r\n function preferenceupdate() {\r\n let phoneNumber = vm.preferencePhoneRow;\r\n\r\n vm.dataToPost.action = _updPhn;\r\n vm.dataToPost.typeOfContact = phoneNumber.type.text;\r\n vm.dataToPost.newPhone = phoneNumber.phone;\r\n vm.dataToPost.preferredFlag = true;\r\n vm.dataToPost.sequenceNumber = phoneNumber.consumeNumber;\r\n vm.dataToPost.addressNumber = phoneNumber.addressNumber;\r\n vm.dataToPost.dndStartTime = convertToISOTime(phoneNumber.startTime);\r\n vm.dataToPost.dndStopTime = convertToISOTime(phoneNumber.endTime);\r\n\r\n updatePhoneNumber(vm.dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n const accUniq = _.uniq(vm.Accounts, 'acc');\r\n let readDerivePreferencesRequest = {\r\n businessPartnerId: vm.primaryBp,\r\n emailId: vm.sessionData.currentUser.emailId,\r\n cdpId: vm.sessionData.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n readAndDerivePreferences(readDerivePreferencesRequest);\r\n\r\n // vm.showToast = true;\r\n // vm.data.option = _successToast;\r\n // vm.data.messageOption = \"Your phone number has been .\";\r\n // vm.data.show = _fadeInOut;\r\n\r\n // if (vm.data.option == _successToast) {\r\n // setTimeout(function () {\r\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\r\n // vm.data.show = _fadeOut;\r\n // vm.showToast = false;\r\n // }, 12000)\r\n // }\r\n\r\n // $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n // vm.updatePhoneNumber.replyCode = null;\r\n // resetAddPhoneRow();\r\n }\r\n });\r\n }\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n function convertToISOTime(time) {\r\n const newTime = moment(time, 'HHmmss').format('PTHHmmss');\r\n return `${newTime.slice(0, 4)}H${newTime.slice(4, 6)}M${newTime.slice(\r\n 6,\r\n 8,\r\n )}S`;\r\n }\r\n\r\n function updatePhoneNumber(dataToPost) {\r\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(\r\n result => {\r\n vm.updatePhoneNumber.replyCode =\r\n result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function readAndDerivePreferences(readDerivePreferencesRequest) {\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(readDerivePreferencesRequest)\r\n .then(\r\n result => {\r\n let phones = [];\r\n let phoneArray = [];\r\n phones = _.map(result.d.results[0].Partner_Contact.results, item => ({\r\n consumeNumber: item.ConsNumber,\r\n phone: item.PhoneNumber,\r\n type: item.Type,\r\n notDisturbStart: item.DND_Start_TIime,\r\n notDisturbEnd: item.DND_Stop_Time,\r\n preferredPhone: item.Primary,\r\n addressNumber: item.AddrNumber,\r\n // remark: item.Remark\r\n }));\r\n phones.forEach(element => {\r\n // if(element.remark === '') {\r\n phoneArray.push(element);\r\n // }\r\n });\r\n\r\n vm.data.phoneNumbers = _.uniq(phoneArray, 'phone');\r\n\r\n vm.sessionData.phoneNumbers = vm.data.phoneNumbers;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.sessionData,\r\n );\r\n\r\n vm.showToast = true;\r\n vm.data.option = _successToast;\r\n vm.data.messageOption =\r\n 'Your phone number has been successfully updated.';\r\n vm.data.show = _fadeInOut;\r\n\r\n if (vm.data.option == _successToast) {\r\n setTimeout(function() {\r\n document.getElementById('toastdisable').style.visibility =\r\n 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }, 12000);\r\n }\r\n\r\n vm.updatePhoneNumber.replyCode = null;\r\n vm.edidPreference = false;\r\n resetAddPhoneRow();\r\n init();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function hideAllEditRow() {\r\n for (let j = 0; j < vm.show.rowToEdit.length; j++) {\r\n vm.show.rowToEdit[j] = false;\r\n }\r\n }\r\n\r\n function showTooltip(value) {\r\n if (value === 1) {\r\n vm.show.tooltipPreferred = true;\r\n } else if (value === 2) {\r\n vm.show.tooltipDisturb = true;\r\n }\r\n }\r\n\r\n function hideTooltip(value) {\r\n if (value === 1) {\r\n vm.show.tooltipPreferred = false;\r\n } else if (value === 2) {\r\n vm.show.tooltipDisturb = false;\r\n }\r\n }\r\n\r\n function showPhoneOptions(index) {\r\n if (vm.show.phoneOptions[index] === true) {\r\n vm.show.phoneOptions[index] = false;\r\n } else {\r\n vm.hideAllEditPhoneOptions();\r\n vm.show.phoneOptions[index] = true;\r\n }\r\n }\r\n\r\n function hideAllEditPhoneOptions() {\r\n for (let i = 0; i < vm.show.phoneOptions.length; i++) {\r\n vm.show.phoneOptions[i] = false;\r\n }\r\n }\r\n\r\n function hidePhoneOptions(index) {\r\n vm.show.phoneOptions[index] = false;\r\n }\r\n\r\n function beautifyPhone(number) {\r\n return genericHelperService.telFormat(number);\r\n }\r\n\r\n function showAddPhone() {\r\n //#region Inline Edit\r\n // vm.show.savePhoneControls = true;\r\n // vm.show.rowToAdd = true;\r\n // vm.show.allBullets = true;\r\n // hideAllEditRow();\r\n //#endregion\r\n\r\n vm.sessionData.edit = false;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.sessionData,\r\n );\r\n modalService.manageAddPhone();\r\n }\r\n\r\n function resetAddPhoneRow() {\r\n vm.temporalPhoneRow.key = null;\r\n vm.temporalPhoneRow.phone = null;\r\n vm.temporalPhoneRow.type = null;\r\n vm.temporalPhoneRow.activeNotDisturbTime = false;\r\n vm.temporalPhoneRow.startTime = null;\r\n vm.temporalPhoneRow.endTime = null;\r\n }\r\n\r\n function showEditPhone(index) {\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n //#region Inline Edit\r\n // vm.temporalPhoneRow.key = index;\r\n // vm.show.allBullets = true;\r\n // vm.show.savePhoneControls = true;\r\n // vm.show.phoneOptions[index] = false;\r\n // vm.show.rowToEdit[index] = true;\r\n\r\n // vm.temporalPhoneRow.phone = vm.data.phoneNumbers[index].phone;\r\n // vm.temporalPhoneRow.type = vm.data.phoneNumbers[index].type.text;\r\n // vm.data.phoneTypeItems[index] = genericHelperService.setSelectedProp(\r\n // vm.data.phoneTypeItems[index],\r\n // _kwValue, vm.temporalPhoneRow.type,\r\n // );\r\n // if (vm.data.phoneNumbers[index].doNotDisturbEnabled) {\r\n // vm.temporalPhoneRow.startTime = vm.data.phoneNumbers[index].startTime;\r\n // vm.temporalPhoneRow.endTime = vm.data.phoneNumbers[index].endTime;\r\n // vm.data.selectStartNotDisturbHours[index] = genericHelperService.setSelectedProp(\r\n // vm.data.selectStartNotDisturbHours[index],\r\n // _kwValue, vm.temporalPhoneRow.startTime,\r\n // );\r\n // vm.data.selectEndNotDisturbHours[index] = genericHelperService.setSelectedProp(\r\n // vm.data.selectEndNotDisturbHours[index],\r\n // _kwValue, vm.temporalPhoneRow.endTime,\r\n // );\r\n // }\r\n //#endregion\r\n\r\n vm.sessionData.index = index;\r\n vm.sessionData.edit = true;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.sessionData,\r\n );\r\n modalService.manageAddPhone();\r\n }\r\n\r\n function hideEditPhone(save) {\r\n if (save === 0) {\r\n if (\r\n vm.checkboxFlag[vm.temporalPhoneRow.key] !==\r\n vm.originalData.activeNotDisturbTime[vm.temporalPhoneRow.key]\r\n ) {\r\n vm.checkboxFlag[vm.temporalPhoneRow.key] = !vm.checkboxFlag[\r\n vm.temporalPhoneRow.key\r\n ];\r\n }\r\n if (vm.show.rowToAdd) {\r\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos;\r\n }\r\n init();\r\n } else if (save === 1) {\r\n preferenceupdate();\r\n\r\n // if (vm.show.rowToAdd) {\r\n // vm.temporalPhoneRow.key = 9;\r\n // }\r\n // addEditPhoneNumberData(vm.temporalPhoneRow.key);\r\n }\r\n\r\n vm.show.savePhoneControls = false;\r\n vm.show.allBullets = false;\r\n vm.show.rowToAdd = false;\r\n vm.checkUpPhone = false;\r\n\r\n hideAllEditRow();\r\n }\r\n\r\n function showRemovePhone(index) {\r\n vm.phoneToDelete = {\r\n index,\r\n };\r\n vm.sessionData.managePhoneModal = vm.phoneToDelete;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.sessionData,\r\n );\r\n modalService.managePhoneNumbers();\r\n }\r\n\r\n function setDropdowns() {\r\n _.forEach(vm.originalData.typeSelection, (value, i) => {\r\n vm.data.phoneTypeItems[i] = genericHelperService.createDropdownList(\r\n vm.dropDowns.phoneTypes,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectStartNotDisturbHours[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursOptions,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectEndNotDisturbHours[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursOptions,\r\n _kwValue,\r\n _kwText,\r\n );\r\n });\r\n }\r\n\r\n function setModels(type) {\r\n let ph = _.clone(vm.sessionData.phoneNumbers, true);\r\n vm.isShowMoreVisible =\r\n vm.sessionData.phoneNumbers.length > 10 && !type ? false : true;\r\n vm.remainingPhoneCount =\r\n vm.sessionData.phoneNumbers.length > 10\r\n ? vm.sessionData.phoneNumbers.length - 10\r\n : 0;\r\n vm.Accounts = vm.sessionData.Accounts;\r\n vm.primaryBp = vm.sessionData.primaryBp;\r\n vm.data.interimMessage = vm.sessionData.interimMessage;\r\n if (!type && vm.sessionData.phoneNumbers.length > 10) {\r\n ph.length = 10;\r\n } else if ((!type && vm.sessionData.phoneNumbers.length <= 10) || type) {\r\n ph.length = ph.length;\r\n }\r\n vm.data.phoneNumbers = _.map(ph, (item, index) => {\r\n vm.originalData.preferredFlag[index] = item.preferredPhone;\r\n vm.originalData.notDisturbTimes[index] = {\r\n start: item.notDisturbStart,\r\n end: item.notDisturbEnd,\r\n };\r\n if (item.preferredPhone !== '') {\r\n vm.originalData.preferredPos = index;\r\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos.toString();\r\n }\r\n if (item.type === '1' || item.type === '') {\r\n _textDnd = _home;\r\n vm.originalData.typeSelection[index] = {\r\n value: item.type,\r\n text: _home,\r\n };\r\n vm.show.mobileType[index] = false;\r\n } else if (item.type === '2' || item.type === '3') {\r\n _textDnd = _mobile;\r\n vm.originalData.typeSelection[index] = {\r\n value: item.type,\r\n text: _mobile,\r\n };\r\n vm.show.mobileType[index] = true;\r\n }\r\n // else if (item.type === '') {\r\n // _textDnd = _other;\r\n // vm.originalData.typeSelection[index] = { value: item.type, text: _other };\r\n // vm.show.mobileType[index] = false;\r\n // }\r\n\r\n return {\r\n addressNumber: item.addressNumber,\r\n consumeNumber: item.consumeNumber,\r\n phone: item.phone,\r\n type: { value: item.type, text: _textDnd },\r\n startTime: moment(item.notDisturbStart, 'HHmmss').format('HH:mm'),\r\n endTime: moment(item.notDisturbEnd, 'HHmmss').format('HH:mm'),\r\n startTimeFormat: moment(item.notDisturbStart, 'HHmmss').format(\r\n 'h:mm a',\r\n ),\r\n endTimeFormat: moment(item.notDisturbEnd, 'HHmmss').format('h:mm a'),\r\n doNotDisturbEnabled:\r\n item.notDisturbStart === 'PT00H00M00S' &&\r\n item.notDisturbStart === 'PT00H00M00S'\r\n ? false\r\n : true,\r\n };\r\n });\r\n vm.dataToPost.businessPartnerId = vm.sessionData.restToBp.bpNumber;\r\n _.forEach(vm.data.phoneNumbers, (item, index) => {\r\n if (item.doNotDisturbEnabled) {\r\n vm.checkboxFlag[index] = true;\r\n vm.originalData.activeNotDisturbTime[index] = true;\r\n } else {\r\n vm.checkboxFlag[index] = false;\r\n vm.originalData.activeNotDisturbTime[index] = false;\r\n }\r\n });\r\n setDropdowns();\r\n }\r\n\r\n function showHidePreferenceLink() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo &&\r\n Object.prototype.hasOwnProperty.call(\r\n globalAccountInfo,\r\n 'accountSelected',\r\n ) &&\r\n globalAccountInfo.accountSelected.experience ==\r\n assetService.strings.SC_RESIDENTIAL\r\n ) {\r\n vm.showPreferenceContent = true;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n showHidePreferenceLink();\r\n setModels(false);\r\n }\r\n\r\n $scope.$on(assetService.events.refreshManagePhoneNumbers, () => {\r\n vm.fromDeletePhonemodal = true;\r\n init();\r\n if (vm.data.option == _successToast) {\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'profile-settings',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'profile-settings',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n setTimeout(function() {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }, 12000);\r\n } else if (vm.data.option == _errorToast) {\r\n vm.showToast = true;\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'profile-settings',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'profile-settings',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n }\r\n });\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n if (vm.fromDeletePhonemodal) {\r\n vm.showToast = true;\r\n vm.data.option = sessionStorageService.get(\r\n assetService.storageKeys.managePhoneNumber.toastNotification,\r\n );\r\n vm.data.messageOption = sessionStorageService.get(\r\n assetService.storageKeys.managePhoneNumber.toastNotificationMessage,\r\n );\r\n vm.data.show = sessionStorageService.get(\r\n assetService.storageKeys.managePhoneNumber.toastNotificationtime,\r\n );\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n\r\n function viewMore() {\r\n vm.isShowMoreVisible = true;\r\n setModels(true);\r\n }\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('ModalManageAddPhone', ModalManageAddPhone);\r\nModalManageAddPhone.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'commonService',\r\n 'maintainUserProfileService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n 'ccGetUserAccountsService',\r\n 'accountSearchService',\r\n 'updatePhoneNumberService',\r\n 'readAndDerivePreferencesService',\r\n 'commongaTaggingService',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction ModalManageAddPhone(\r\n $log,\r\n $modalInstance,\r\n assetService,\r\n genericHelperService,\r\n commonService,\r\n maintainUserProfileService,\r\n sessionStorageService,\r\n $rootScope,\r\n ccGetUserAccountsService,\r\n accountSearchService,\r\n updatePhoneNumberService,\r\n readAndDerivePreferencesService,\r\n commongaTaggingService,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _success = assetService.replyCodes.SUCCESS;\r\n const _successToast = assetService.strings.success;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n _defaultTime = assetService.managerPhone.DEFAULT_TIME;\r\n const _errorToast = assetService.strings.ERROR;\r\n const _fadeinfinite = assetService.strings.FADEINFINITE;\r\n let startdt;\r\n let enddt;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.sessionData = {};\r\n vm.index = 0;\r\n vm.maintainUserProfile = {};\r\n vm.readDerivePreferencesRequest = {};\r\n vm.duplicatePhoneFlag = false;\r\n vm.isDropDownChanged = false;\r\n vm.checkboxFlag = [];\r\n vm.checkboxFlagAddNew = false;\r\n vm.updatePhoneNumber = {\r\n replyCode: null,\r\n };\r\n\r\n vm.data = {\r\n selectStartNotDisturbHours: [],\r\n selectEndNotDisturbHours: [],\r\n selectStartNotDisturbHoursPeriod: [],\r\n selectEndNotDisturbHoursPeriod: [],\r\n phoneTypeItems: [],\r\n phoneNumbers: [],\r\n };\r\n vm.originalModalState = {\r\n phoneNumber: null,\r\n phoneType: null,\r\n startTime: null,\r\n startTimePeriod: null,\r\n endTime: null,\r\n endTimePeriod: null,\r\n dndChecked: false,\r\n };\r\n vm.dropDowns = {\r\n phoneTypes: genericHelperService.createDropdownList(\r\n assetService.phoneTypes,\r\n _kwValue,\r\n _kwText,\r\n ),\r\n };\r\n\r\n vm.show = {\r\n // Variables for ng-class, ng-if or ng-show\r\n allBullets: false,\r\n mobileType: [],\r\n notDisturbTime: [],\r\n phoneOptions: [],\r\n rowToAdd: false,\r\n rowToEdit: [],\r\n savePhoneControls: false,\r\n tooltipPreferred: false,\r\n tooltipDisturb: false,\r\n };\r\n vm.checkUpPhone = false;\r\n\r\n vm.temporalPhoneRow = {\r\n // Deletable variables to make the API CRUD\r\n activeNotDisturbTime: false,\r\n endTime: null,\r\n key: null,\r\n phone: null,\r\n preferredPos: null,\r\n startTime: null,\r\n type: null,\r\n startTimePeriod: null,\r\n endTimePeriod: null,\r\n };\r\n vm.originalData = {\r\n typeSelection: [],\r\n activeNotDisturbTime: [],\r\n notDisturbTimes: [],\r\n preferredPos: null,\r\n preferredFlag: [],\r\n };\r\n vm.dataToPost = {\r\n action: null,\r\n businessPartnerId: null,\r\n typeOfContact: null,\r\n newPhone: null,\r\n preferredFlag: null,\r\n sequenceNumber: null,\r\n addressNumber: null,\r\n dndStartTime: null,\r\n dndStopTime: null,\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.addEmail = addEmail;\r\n vm.closeModal = closeModal;\r\n vm.duplicatePhone = duplicatePhone;\r\n vm.onChangeDropDown = onChangeDropDown;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.changeCheckBoxState = changeCheckBoxState;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function mantainUserProfile(dataToPost) {\r\n return maintainUserProfileService.sitecore\r\n .maintainUserProfile(dataToPost)\r\n .then(\r\n result => {\r\n vm.mantainUserProfile = {\r\n replyCode: result.d.MaintainProfileReqCA.results[0].ReplyCode,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function changeCheckBoxState() {\r\n if (!vm.checkboxFlag[vm.index]) {\r\n vm.temporalPhoneRow.startTime = null;\r\n vm.temporalPhoneRow.startTimePeriod = null;\r\n vm.temporalPhoneRow.endTime = null;\r\n vm.temporalPhoneRow.endTimePeriod = null;\r\n }\r\n }\r\n function addPhoneNumberData(index) {\r\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\r\n } else if (\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE ||\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER\r\n ) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\r\n }\r\n\r\n if (vm.temporalPhoneRow.phone) {\r\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\r\n } else {\r\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\r\n }\r\n vm.dataToPost.preferredFlag =\r\n vm.temporalPhoneRow.preferredPos === index.toString() ? true : false;\r\n\r\n if (vm.checkboxFlagAddNew) {\r\n const start =\r\n vm.temporalPhoneRow.startTime + vm.temporalPhoneRow.startTimePeriod;\r\n startdt = moment(start, ['hh:mmA']).format('HH:mm');\r\n const end =\r\n vm.temporalPhoneRow.endTime + vm.temporalPhoneRow.endTimePeriod;\r\n enddt = moment(end, ['hh:mmA']).format('HH:mm');\r\n vm.dataToPost.dndStartTime = convertToISOTime(startdt);\r\n vm.dataToPost.dndStopTime = convertToISOTime(enddt);\r\n } else {\r\n vm.dataToPost.dndStartTime = _defaultTime;\r\n vm.dataToPost.dndStopTime = _defaultTime;\r\n }\r\n\r\n vm.dataToPost.action = _addPhn;\r\n vm.dataToPost.addressNumber = '';\r\n vm.dataToPost.sequenceNumber = '';\r\n\r\n updatePhoneNumber(vm.dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n let readDerivePreferencesRequest = {\r\n businessPartnerId: vm.primaryBp,\r\n emailId: vm.sessionData.currentUser.emailId,\r\n cdpId: vm.sessionData.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n readAndDerivePreferences(readDerivePreferencesRequest);\r\n }\r\n // else{\r\n // vm.showToast = true;\r\n // vm.data.option = _errorToast;\r\n // vm.data.messageOption = \"We were unable to update/delete phone number, please try again later.\";\r\n // vm.data.show = _fadeinfinite;\r\n // }\r\n });\r\n }\r\n\r\n function readAndDerivePreferences(readDerivePreferencesRequest) {\r\n return readAndDerivePreferencesService.sitecore\r\n .readAndDerivePreferences(readDerivePreferencesRequest)\r\n .then(\r\n result => {\r\n let phones = [];\r\n let _allPhones = [];\r\n phones = _.map(result.d.results[0].Partner_Contact.results, item => ({\r\n consumeNumber: item.ConsNumber,\r\n phone: item.PhoneNumber,\r\n type: item.Type,\r\n notDisturbStart: item.DND_Start_TIime,\r\n notDisturbEnd: item.DND_Stop_Time,\r\n preferredPhone: item.Primary,\r\n addressNumber: item.AddrNumber,\r\n // remark: item.Remark\r\n }));\r\n phones.forEach(element => {\r\n // if(element.remark === '') {\r\n _allPhones.push(element);\r\n // }\r\n });\r\n\r\n vm.data.phoneNumbers = _.uniq(_allPhones, 'phone');\r\n\r\n vm.sessionData.phoneNumbers = vm.data.phoneNumbers;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings,\r\n vm.sessionData,\r\n );\r\n\r\n if (!vm.sessionData.edit) {\r\n vm.data.messageOption =\r\n 'Your phone number has been successfully added.';\r\n } else {\r\n vm.data.messageOption =\r\n 'Your phone number has been successfully updated.';\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.managePhoneNumber.toastNotification,\r\n _successToast,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.managePhoneNumber.toastNotificationMessage,\r\n vm.data.messageOption,\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.managePhoneNumber.toastNotificationtime,\r\n _fadeInOut,\r\n );\r\n $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n\r\n // vm.showToast = true;\r\n // vm.data.option = _successToast;\r\n // vm.data.show = _fadeInOut;\r\n\r\n // if (vm.data.option == _successToast) {\r\n // setTimeout(function () {\r\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\r\n // vm.data.show = _fadeOut;\r\n // vm.showToast = false;\r\n // }, 12000)\r\n // }\r\n\r\n vm.updatePhoneNumber.replyCode = null;\r\n resetAddPhoneRow();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: 'E' }], null).then(\r\n response => {\r\n const errorsWithMapping = response.filter(\r\n error => !error.data.noMapping,\r\n );\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach(error => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function resetAddPhoneRow() {\r\n vm.temporalPhoneRow.key = null;\r\n vm.temporalPhoneRow.type = null;\r\n vm.temporalPhoneRow.activeNotDisturbTime = false;\r\n vm.temporalPhoneRow.startTime = null;\r\n vm.temporalPhoneRow.endTime = null;\r\n }\r\n\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n\r\n function addEditPhoneNumberData(index) {\r\n if (!vm.sessionData.edit) {\r\n addPhoneNumberData(index);\r\n } else {\r\n deletePhoneNumberData(index);\r\n }\r\n }\r\n\r\n function convertToISOTime(time) {\r\n const newTime = moment(time, 'HHmmss').format('PTHHmmss');\r\n return `${newTime.slice(0, 4)}H${newTime.slice(4, 6)}M${newTime.slice(\r\n 6,\r\n 8,\r\n )}S`;\r\n }\r\n\r\n function updatePhoneNumber(dataToPost) {\r\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(\r\n result => {\r\n vm.updatePhoneNumber.replyCode =\r\n result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: 'E' }], null).then(\r\n response => {\r\n const errorsWithMapping = response.filter(\r\n error => !error.data.noMapping,\r\n );\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach(error => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function deletePhoneNumberData(index) {\r\n if (vm.temporalPhoneRow.type === assetService.phonesTypes.HOME) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.HOME;\r\n } else if (\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.MOBILE ||\r\n vm.temporalPhoneRow.type === assetService.phonesTypes.OTHER\r\n ) {\r\n vm.dataToPost.typeOfContact = assetService.phonesTypes.MOBILE;\r\n }\r\n\r\n if (vm.temporalPhoneRow.phone) {\r\n vm.dataToPost.newPhone = vm.temporalPhoneRow.phone;\r\n } else {\r\n vm.dataToPost.newPhone = vm.data.phoneNumbers[index].phone;\r\n }\r\n\r\n if (vm.checkboxFlag[index]) {\r\n const start =\r\n vm.temporalPhoneRow.startTime + vm.temporalPhoneRow.startTimePeriod;\r\n startdt = moment(start, ['hh:mmA']).format('HH:mm');\r\n const end =\r\n vm.temporalPhoneRow.endTime + vm.temporalPhoneRow.endTimePeriod;\r\n enddt = moment(end, ['hh:mmA']).format('HH:mm');\r\n vm.dataToPost.dndStartTime = convertToISOTime(startdt);\r\n vm.dataToPost.dndStopTime = convertToISOTime(enddt);\r\n } else {\r\n vm.dataToPost.dndStartTime = _defaultTime;\r\n vm.dataToPost.dndStopTime = _defaultTime;\r\n }\r\n\r\n const dataToPost = {\r\n action: _updPhn,\r\n businessPartnerId: vm.dataToPost.businessPartnerId,\r\n typeOfContact: vm.dataToPost.typeOfContact,\r\n newPhone: vm.dataToPost.newPhone,\r\n preferredFlag: vm.originalData.preferredFlag[index] ? true : false,\r\n sequenceNumber: vm.data.phoneNumbers[index].consumeNumber,\r\n addressNumber: vm.data.phoneNumbers[index].addressNumber,\r\n dndStartTime: convertToISOTime(vm.dataToPost.dndStartTime),\r\n dndStopTime: convertToISOTime(vm.dataToPost.dndStopTime),\r\n };\r\n\r\n //item.notDisturbStart === 'PT00H00M00S' && item.notDisturbStart === 'PT00H00M00S' ? false : true\r\n\r\n updatePhoneNumber(dataToPost).then(() => {\r\n if (vm.updatePhoneNumber.replyCode === _success) {\r\n const accUniq = _.uniq(vm.Accounts, 'acc');\r\n let readDerivePreferencesRequest = {\r\n businessPartnerId: vm.primaryBp,\r\n emailId: vm.sessionData.currentUser.emailId,\r\n cdpId: vm.sessionData.currentUser.cdpId,\r\n contractAccountId: '',\r\n };\r\n readAndDerivePreferences(readDerivePreferencesRequest);\r\n }\r\n // else{\r\n // vm.showToast = true;\r\n // vm.data.option = _errorToast;\r\n // vm.data.messageOption = \"We were unable to update/delete phone number, please try again later.\";\r\n // vm.data.show = _fadeinfinite;\r\n // }\r\n });\r\n }\r\n\r\n function addEmail(event) {\r\n if (event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\r\n }\r\n\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n if (!vm.sessionData.edit) {\r\n vm.temporalPhoneRow.key = 9;\r\n }\r\n addEditPhoneNumberData(vm.temporalPhoneRow.key);\r\n }\r\n\r\n function closeModal() {\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n\r\n function duplicatePhone(val) {\r\n let defaultItem = vm.sessionData.phoneNumbers.filter(function(itm) {\r\n return itm.phone === val;\r\n });\r\n if (defaultItem.length > 0) {\r\n vm.duplicatePhoneFlag = true;\r\n } else if (\r\n vm.originalModalState.phoneNumber !== vm.temporalPhoneRow.phone ||\r\n vm.originalModalState.phoneType !== vm.temporalPhoneRow.type ||\r\n vm.originalModalState.startTime !== vm.temporalPhoneRow.startTime ||\r\n vm.originalModalState.startTimePeriod !==\r\n vm.temporalPhoneRow.startTimePeriod ||\r\n vm.originalModalState.endTime !== vm.temporalPhoneRow.endTime ||\r\n vm.originalModalState.endTimePeriod !==\r\n vm.temporalPhoneRow.endTimePeriod ||\r\n vm.originalModalState.dndChecked !== vm.checkboxFlag[vm.index]\r\n ) {\r\n vm.duplicatePhoneFlag = false;\r\n } else {\r\n vm.duplicatePhoneFlag = true;\r\n }\r\n }\r\n\r\n function setModels() {\r\n vm.Accounts = vm.sessionData.Accounts;\r\n vm.primaryBp = vm.sessionData.primaryBp;\r\n vm.data.phoneNumbers = _.map(vm.sessionData.phoneNumbers, (item, index) => {\r\n vm.originalData.preferredFlag[index] = item.preferredPhone;\r\n vm.originalData.notDisturbTimes[index] = {\r\n start: item.notDisturbStart,\r\n end: item.notDisturbEnd,\r\n };\r\n vm.originalData.preferredPos = index;\r\n vm.temporalPhoneRow.preferredPos = vm.originalData.preferredPos.toString();\r\n if (item.type === '1' || item.type === '') {\r\n _textDnd = _home;\r\n vm.originalData.typeSelection[index] = {\r\n value: item.type,\r\n text: _home,\r\n };\r\n vm.show.mobileType[index] = false;\r\n } else if (item.type === '2' || item.type === '3') {\r\n _textDnd = _mobile;\r\n vm.originalData.typeSelection[index] = {\r\n value: item.type,\r\n text: _mobile,\r\n };\r\n vm.show.mobileType[index] = true;\r\n }\r\n\r\n return {\r\n addressNumber: item.addressNumber,\r\n consumeNumber: item.consumeNumber,\r\n phone: item.phone,\r\n type: { value: item.type, text: _textDnd },\r\n startTime: moment(item.notDisturbStart, 'HHmmss').format('HH:mm'),\r\n endTime: moment(item.notDisturbEnd, 'HHmmss').format('HH:mm'),\r\n startTimeFormat: moment(item.notDisturbStart, 'HHmmss').format(\r\n 'h:mm a',\r\n ),\r\n endTimeFormat: moment(item.notDisturbEnd, 'HHmmss').format('h:mm a'),\r\n doNotDisturbEnabled:\r\n item.notDisturbStart === 'PT00H00M00S' &&\r\n item.notDisturbStart === 'PT00H00M00S'\r\n ? false\r\n : true,\r\n };\r\n });\r\n vm.dataToPost.businessPartnerId = vm.sessionData.restToBp.bpNumber;\r\n _.forEach(vm.data.phoneNumbers, (item, index) => {\r\n if (item.doNotDisturbEnabled) {\r\n vm.checkboxFlag[index] = true;\r\n vm.originalData.activeNotDisturbTime[index] = true;\r\n } else {\r\n vm.checkboxFlag[index] = false;\r\n vm.originalData.activeNotDisturbTime[index] = false;\r\n }\r\n });\r\n setDropdowns();\r\n }\r\n\r\n function onChangeDropDown(model) {\r\n vm.isDropDownChanged = model.text !== '' && model.selected ? true : false;\r\n if (\r\n vm.originalModalState.phoneNumber !== vm.temporalPhoneRow.phone ||\r\n vm.originalModalState.phoneType !== vm.temporalPhoneRow.type ||\r\n vm.originalModalState.startTime !== vm.temporalPhoneRow.startTime ||\r\n vm.originalModalState.startTimePeriod !==\r\n vm.temporalPhoneRow.startTimePeriod ||\r\n vm.originalModalState.endTime !== vm.temporalPhoneRow.endTime ||\r\n vm.originalModalState.endTimePeriod !==\r\n vm.temporalPhoneRow.endTimePeriod ||\r\n vm.originalModalState.dndChecked !== vm.checkboxFlag[vm.index]\r\n ) {\r\n vm.duplicatePhoneFlag = false;\r\n } else vm.duplicatePhoneFlag = true;\r\n }\r\n\r\n function setDropdowns() {\r\n if (vm.originalData.typeSelection.length !== 0) {\r\n _.forEach(vm.originalData.typeSelection, (value, i) => {\r\n vm.data.phoneTypeItems[i] = genericHelperService.createDropdownList(\r\n vm.dropDowns.phoneTypes,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectStartNotDisturbHours[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectStartNotDisturbHoursPeriod[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursTimePeriodOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectEndNotDisturbHours[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectEndNotDisturbHoursPeriod[\r\n i\r\n ] = genericHelperService.createDropdownList(\r\n assetService.hoursTimePeriodOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n });\r\n } else {\r\n vm.data.phoneTypeItems[0] = genericHelperService.createDropdownList(\r\n vm.dropDowns.phoneTypes,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectStartNotDisturbHours[0] = genericHelperService.createDropdownList(\r\n assetService.hoursOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectStartNotDisturbHoursPeriod[0] = genericHelperService.createDropdownList(\r\n assetService.hoursTimePeriodOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectEndNotDisturbHours[0] = genericHelperService.createDropdownList(\r\n assetService.hoursOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n vm.data.selectEndNotDisturbHoursPeriod[0] = genericHelperService.createDropdownList(\r\n assetService.hoursTimePeriodOptionsForProfile,\r\n _kwValue,\r\n _kwText,\r\n );\r\n }\r\n if (vm.sessionData.edit) {\r\n vm.index = vm.sessionData.index;\r\n\r\n vm.temporalPhoneRow.key = vm.index;\r\n vm.show.allBullets = true;\r\n vm.show.savePhoneControls = true;\r\n vm.show.phoneOptions[vm.index] = false;\r\n vm.show.rowToEdit[vm.index] = true;\r\n\r\n vm.temporalPhoneRow.key = vm.index;\r\n vm.temporalPhoneRow.phone = vm.data.phoneNumbers[vm.index].phone;\r\n vm.temporalPhoneRow.type = vm.data.phoneNumbers[vm.index].type.text;\r\n vm.data.phoneTypeItems[vm.index] = genericHelperService.setSelectedProp(\r\n vm.data.phoneTypeItems[vm.index],\r\n _kwValue,\r\n vm.temporalPhoneRow.type,\r\n );\r\n\r\n if (vm.data.phoneNumbers[vm.index].doNotDisturbEnabled) {\r\n vm.checkboxFlag[vm.index] = true;\r\n vm.originalData.activeNotDisturbTime[vm.index] = true;\r\n\r\n const startPeriod = vm.data.phoneNumbers[\r\n vm.index\r\n ].startTimeFormat.split(' ');\r\n const endPeriod = vm.data.phoneNumbers[vm.index].endTimeFormat.split(\r\n ' ',\r\n );\r\n vm.temporalPhoneRow.startTime = moment(startPeriod[0], [\r\n 'hh:mm',\r\n ]).format('HH:mm');\r\n vm.temporalPhoneRow.endTime = moment(endPeriod[0], ['hh:mm']).format(\r\n 'HH:mm',\r\n );\r\n vm.temporalPhoneRow.startTimePeriod = startPeriod[1]\r\n .toUpperCase()\r\n .trim();\r\n vm.temporalPhoneRow.endTimePeriod = endPeriod[1].toUpperCase().trim();\r\n vm.data.selectStartNotDisturbHours[\r\n vm.index\r\n ] = genericHelperService.setSelectedProp(\r\n vm.data.selectStartNotDisturbHours[vm.index],\r\n _kwValue,\r\n vm.temporalPhoneRow.startTime,\r\n );\r\n vm.data.selectEndNotDisturbHours[\r\n vm.index\r\n ] = genericHelperService.setSelectedProp(\r\n vm.data.selectEndNotDisturbHours[vm.index],\r\n _kwValue,\r\n vm.temporalPhoneRow.endTime,\r\n );\r\n vm.data.selectStartNotDisturbHoursPeriod[\r\n vm.index\r\n ] = genericHelperService.setSelectedProp(\r\n vm.data.selectStartNotDisturbHoursPeriod[vm.index],\r\n _kwValue,\r\n vm.temporalPhoneRow.startTimePeriod,\r\n );\r\n vm.data.selectEndNotDisturbHoursPeriod[\r\n vm.index\r\n ] = genericHelperService.setSelectedProp(\r\n vm.data.selectEndNotDisturbHoursPeriod[vm.index],\r\n _kwValue,\r\n vm.temporalPhoneRow.endTimePeriod,\r\n );\r\n }\r\n }\r\n vm.originalModalState.phoneNumber = vm.temporalPhoneRow.phone;\r\n vm.originalModalState.phoneType = vm.temporalPhoneRow.type;\r\n vm.originalModalState.startTime = vm.temporalPhoneRow.startTime;\r\n vm.originalModalState.startTimePeriod = vm.temporalPhoneRow.startTimePeriod;\r\n vm.originalModalState.endTime = vm.temporalPhoneRow.endTime;\r\n vm.originalModalState.endTimePeriod = vm.temporalPhoneRow.endTimePeriod;\r\n vm.originalModalState.dndChecked = vm.checkboxFlag[vm.index];\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n vm.temporalPhoneRow.phone = null;\r\n vm.sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n setModels();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ModalManagePhoneNumbers', ModalManagePhoneNumbers);\r\nModalManagePhoneNumbers.$inject = [\r\n '$log',\r\n '$modalInstance',\r\n '$rootScope',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'updatePhoneNumberService',\r\n 'readAndDerivePreferencesService',\r\n 'commongaTaggingService',\r\n 'returnCodeMapping',\r\n 'responseNotificationsService',\r\n];\r\n\r\nfunction ModalManagePhoneNumbers(\r\n $log,\r\n $modalInstance,\r\n $rootScope,\r\n sessionStorageService,\r\n assetService,\r\n genericHelperService,\r\n updatePhoneNumberService,\r\n readAndDerivePreferencesService,\r\n commongaTaggingService,\r\n returnCodeMapping,\r\n responseNotificationsService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _remPhn = assetService.serviceActions.updatePhoneNumber.REM_PHN;\r\n const success = assetService.replyCodes.SUCCESS;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n const _fadeinfinite = assetService.strings.FADEINFINITE;\r\n const _successToast=assetService.strings.success;\r\n const _errorToast=assetService.strings.ERROR;\r\n\r\n let _sessionData = {};\r\n let _businessPartnerId = null;\r\n let _index = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.phone = null;\r\n vm.data = {\r\n phoneNumbers: [],\r\n phoneNumber: {},\r\n phone: null,\r\n };\r\n vm.updatePhoneNumbers = {\r\n replyCode: null,\r\n };\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.deletePhoneNumber = deletePhoneNumber;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n }\r\n\r\n function telFormat(phone) {\r\n return genericHelperService.telFormat(phone);\r\n }\r\n function deleteGlobalGAT() {\r\n delete $rootScope.subheadForGAT;\r\n delete $rootScope.buttonTextForGAT;\r\n }\r\n function deletePhoneNumber(item, event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n $rootScope.buttonTextForGAT = event.currentTarget.innerText;\r\n }\r\n const subheadScraped = document.getElementsByClassName('subheadline')[0];\r\n $rootScope.subheadForGAT = subheadScraped ? subheadScraped.innerText : '';\r\n let _contactType;\r\n if (item.type === '1' ||item.type === '') {\r\n _contactType = assetService.phonesTypes.HOME;\r\n } else if (item.type === '2' || item.type === '3') {\r\n _contactType = assetService.phonesTypes.MOBILE;\r\n }\r\n\r\n const dataToPostPhoneNumber = {\r\n action: _remPhn,\r\n businessPartnerId: _businessPartnerId,\r\n typeOfContact: _contactType,\r\n newPhone: item.phone,\r\n preferredFlag: item.preferredPhone ? true : false,\r\n sequenceNumber: item.consumeNumber,\r\n addressNumber: item.addressNumber,\r\n dndStartTime: item.notDisturbStart,\r\n dndStopTime: item.notDisturbEnd,\r\n };\r\n updatePhoneNumber(dataToPostPhoneNumber).then(() => {\r\n if (vm.updatePhoneNumbers.replyCode === success) {\r\n // _.remove(vm.data.phoneNumbers, (phoneNumber, index) => {\r\n // return index === _index;\r\n // });\r\n\r\n // _sessionData.phoneNumbers = vm.data.phoneNumbers;\r\n // sessionStorageService.set(\r\n // assetService.storageKeys.profileSettings, _sessionData,\r\n // );\r\n\r\n const accUniq = _.uniq(vm.Accounts, 'acc');\r\n const readDerivePreferencesRequest = {\r\n businessPartnerId:_sessionData.primaryBp,\r\n emailId: _sessionData.currentUser.emailId,\r\n cdpId: _sessionData.currentUser.cdpId,\r\n contractAccountId: '',\r\n }; \r\n readAndDerivePreferences(readDerivePreferencesRequest); \r\n \r\n }\r\n });\r\n }\r\n\r\n \r\n\r\n function readAndDerivePreferences(readDerivePreferencesRequest) { \r\n \r\n return readAndDerivePreferencesService.sitecore.readAndDerivePreferences(readDerivePreferencesRequest).then(\r\n (result) => {\r\n let phones = [];\r\n let phoneArray = [];\r\n phones = _.map(result.d.results[0].Partner_Contact.results, item => ({\r\n consumeNumber: item.ConsNumber,\r\n phone: item.PhoneNumber,\r\n type: item.Type,\r\n notDisturbStart: item.DND_Start_TIime,\r\n notDisturbEnd: item.DND_Stop_Time,\r\n preferredPhone: item.Primary,\r\n addressNumber: item.AddrNumber,\r\n // remark: item.Remark\r\n })); \r\n phones.forEach((element) => {\r\n // if(element.remark === '') {\r\n phoneArray.push(element);\r\n // }\r\n });\r\n \r\n vm.data.phoneNumbers = _.uniq(phoneArray, 'phone');\r\n\r\n _sessionData.phoneNumbers=vm.data.phoneNumbers;\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettings, _sessionData,\r\n ); \r\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotification, _successToast);\r\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationMessage, 'Your phone number has been successfully deleted.');\r\n sessionStorageService.set(assetService.storageKeys.managePhoneNumber.toastNotificationtime, _fadeInOut);\r\n \r\n $rootScope.$broadcast(assetService.events.refreshManagePhoneNumbers);\r\n deleteGlobalGAT();\r\n $modalInstance.close();\r\n\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"E\" }], null).then(\r\n (response) => {\r\n const errorsWithMapping = response.filter(error => !error.data.noMapping);\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach((error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\t deleteGlobalGAT();\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n\r\n function updatePhoneNumber(dataToPost) {\r\n return updatePhoneNumberService.sitecore.updatePhoneNumber(dataToPost).then(\r\n (result) => {\r\n vm.updatePhoneNumbers.replyCode = result.d.PhoneSrcToAction_NAV.results[0].PhoneActionToRes_NAV.results[0].Message.ReplyCode;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n returnCodeMapping.returnCodeHandler([{ MessageNum: \"E\" }], null).then(\r\n (response) => {\r\n const errorsWithMapping = response.filter(error => !error.data.noMapping);\r\n if (errorsWithMapping.length > 0) {\r\n errorsWithMapping.forEach((error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: error.data.message,\r\n pageTitle: error.config.data.category,\r\n });\r\n });\r\n }\r\n }, (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\t deleteGlobalGAT();\r\n $modalInstance.close();\r\n },\r\n );\r\n }\r\n \r\n function setModel() {\r\n vm.Accounts=_sessionData.Accounts;\r\n _index = _sessionData.managePhoneModal.index;\r\n vm.data.phoneNumbers = _sessionData.phoneNumbers;\r\n vm.data.phoneNumber = vm.data.phoneNumbers[_index];\r\n vm.data.phone = telFormat(vm.data.phoneNumber.phone);\r\n _businessPartnerId = _sessionData.restToBp.bpNumber;\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n _sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n setModel();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('SignInAndSecurity', SignInAndSecurity);\r\n\r\nSignInAndSecurity.$inject = [\r\n '$log',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'changeEmailService',\r\n 'changePasswordService',\r\n 'modalService',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'isRegisterEmail',\r\n 'getRelatedBpforRegistration',\r\n];\r\n\r\nfunction SignInAndSecurity(\r\n $log,\r\n sessionStorageService,\r\n assetService,\r\n changeEmailService,\r\n changePasswordService,\r\n modalService,\r\n $rootScope,\r\n commongaTaggingService,\r\n isRegisterEmail,\r\n getRelatedBpforRegistration,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const noneColor = 'noneColor';\r\n const greenColor = 'greenColor';\r\n const _success = assetService.replyCodes.Success;\r\n const _successPasswordChanged = 'Password Changed';\r\n let _sessionData = null;\r\n let _cdpId = null;\r\n let _accountSelector = {};\r\n let _account = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.changeEmail = false;\r\n vm.changePassword = false;\r\n vm.contractAccount = null;\r\n vm.checkUp = false;\r\n vm.confirmPassword = null;\r\n vm.newPassword = null;\r\n vm.oldPassword = null;\r\n vm.passwordReq = {\r\n passwordCharacter: noneColor,\r\n passwordLowercase: noneColor,\r\n passwordNumber: noneColor,\r\n passwordUppercase: noneColor,\r\n passwordSpecial: noneColor,\r\n threeRequirements: noneColor,\r\n };\r\n vm.newEmail = null;\r\n vm.confirmEmail = null;\r\n vm.mailPassword = null;\r\n vm.overChangeEmail = true;\r\n vm.overChangePassword = true;\r\n vm.data = {};\r\n vm.account = {\r\n emails: [],\r\n infoAccount: [],\r\n emailTemporary: null,\r\n };\r\n\r\n vm.closeToast = closeToast;\r\n vm.closeModal = closeModal;\r\n vm.showToast = false;\r\n vm.onChangePassword = onChangePassword;\r\n const _fadeInOut = assetService.strings.FADEINOUT;\r\n const _fadeOut = assetService.strings.FADEOUT;\r\n const _fadeinfinite = assetService.strings.FADEINFINITE;\r\n const _successToast = assetService.strings.success;\r\n const _errorToast = assetService.strings.ERROR;\r\n vm.checkUpTitle = 'Please verify your answers.';\r\n vm.ErrorCurrentPassword = false;\r\n vm.ErrorNewPassword = false;\r\n vm.isEmailAssociated = false;\r\n vm.isEmailRegistered = false;\r\n vm.isEmailChanged = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.showEditEmail = showEditEmail;\r\n vm.hideEditEmail = hideEditEmail;\r\n vm.showEditPassword = showEditPassword;\r\n vm.hideEditPassword = hideEditPassword;\r\n vm.passwordRequirements = passwordRequirements;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n vm.onEmailFieldsBlurred = onEmailFieldsBlurred;\r\n vm.onEmailFieldsChanged = onEmailFieldsChanged;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function showEditEmail(newEmailForm) {\r\n vm.changeEmail = true;\r\n vm.overChangePassword = true;\r\n vm.newEmail = null;\r\n vm.confirmEmail = null;\r\n vm.mailPassword = null;\r\n vm.ErrorCurrentPassword = false;\r\n vm.isEmailAssociated = false;\r\n vm.isEmailRegistered = false;\r\n vm.isEmailChanged = false;\r\n vm.checkUp = false;\r\n newEmailForm.$setUntouched();\r\n angular.forEach(angular.element('.btn-toggle-visibility'), button => {\r\n if (!button.classList.contains('hidden')) {\r\n button.classList.add('hidden');\r\n }\r\n button.textContent = 'SHOW';\r\n });\r\n angular.element('#email-modal #password').attr('type', 'password');\r\n angular.element('#email-modal').modal('show');\r\n }\r\n\r\n function closeToast() {\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }\r\n function hideEditEmail(save, editEmailForm, event) {\r\n if (event) {\r\n $('.emailtitle').addClass('subheadline');\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n }\r\n if (save === 0) {\r\n vm.changeEmail = false;\r\n vm.ErrorCurrentPassword = false;\r\n vm.checkUp = false;\r\n vm.overChangePassword = true;\r\n editEmailForm.$setUntouched();\r\n angular.element('#email-modal').modal('hide');\r\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n } else if (save === 1) {\r\n changeEmail();\r\n }\r\n }\r\n\r\n function onChangePassword(type) {\r\n if (type === 'new') {\r\n vm.ErrorNewPassword = false;\r\n } else if (type === 'current') {\r\n vm.ErrorCurrentPassword = false;\r\n }\r\n }\r\n\r\n function showEditPassword(changePasswordForm) {\r\n vm.changePassword = true;\r\n vm.overChangeEmail = true;\r\n vm.confirmPassword = null;\r\n vm.newPassword = null;\r\n vm.oldPassword = null;\r\n vm.ErrorCurrentPassword = false;\r\n vm.ErrorNewPassword = false;\r\n changePasswordForm.$setUntouched();\r\n vm.checkUp = false;\r\n angular.forEach(angular.element('.btn-toggle-visibility'), button => {\r\n if (!button.classList.contains('hidden')) {\r\n button.classList.add('hidden');\r\n }\r\n button.textContent = 'SHOW';\r\n });\r\n angular.element('#psw-modal #password').attr('type', 'password');\r\n angular.element('#psw-modal #newPassword').attr('type', 'password');\r\n angular.element('#psw-modal #confirmNewPassword').attr('type', 'password');\r\n angular.element('#psw-modal').modal('show');\r\n }\r\n\r\n function hideEditPassword(save, event) {\r\n if (event) {\r\n $('.title').addClass('subheadline');\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n }\r\n if (save === 0) {\r\n vm.changePassword = false;\r\n vm.checkUp = false;\r\n vm.overChangeEmail = true;\r\n angular.element('#psw-modal').modal('hide');\r\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n } else if (save === 1) {\r\n changePassword();\r\n }\r\n }\r\n\r\n function changeEmail() {\r\n const dataToPost = {\r\n emailAddress: vm.data.email,\r\n internalIdentifier: _cdpId,\r\n action: assetService.serviceActions.changeEmail.CHANGE_EMAIL_ADDRESS,\r\n password: vm.mailPassword,\r\n newEmailAddress: vm.newEmail,\r\n };\r\n return changeEmailService.sitecore.changeEmail(dataToPost).then(\r\n result => {\r\n if (result.MessageText === _success && result.ReturnCode === 0) {\r\n // vm.showToast = true;\r\n // vm.data.option = _successToast;\r\n // vm.data.messageOption = \"Your sign in email has been successfully updated.\";\r\n // vm.data.show = _fadeInOut;\r\n\r\n // if (vm.data.option == _successToast) {\r\n // setTimeout(function () {\r\n // document.getElementById(\"toastdisable\").style.visibility = \"hidden\";\r\n // vm.data.show = _fadeOut;\r\n // vm.showToast = false;\r\n // }, 12000)\r\n // }\r\n sessionStorageService.set(\r\n assetService.storageKeys.profileSettingNewEmail,\r\n vm.newEmail,\r\n );\r\n modalService.signoutEmail();\r\n virtualPagePush('profile settings', 'youre almost done', 'page load');\r\n\r\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n vm.changeEmail = false;\r\n // vm.newEmail = null;\r\n // vm.confirmEmail = null;\r\n //vm.mailPassword = null;\r\n vm.ErrorCurrentPassword = false;\r\n vm.checkUp = false;\r\n vm.overChangePassword = true;\r\n angular.element('#email-modal').modal('hide');\r\n } else {\r\n vm.showToast = true;\r\n vm.data.option = _errorToast;\r\n vm.data.messageOption =\r\n 'We were unable to update email, please try again later.';\r\n vm.data.show = _fadeinfinite;\r\n vm.checkUp = true;\r\n vm.checkUpTitle = result.MessageText;\r\n if (result.ReturnCode === 370012015) {\r\n vm.ErrorCurrentPassword = true;\r\n }\r\n if (vm.data.option == _errorToast) {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n vm.showToast = true;\r\n }\r\n }\r\n $('.emailtitle').removeClass('subheadline');\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n $('.emailtitle').removeClass('subheadline');\r\n },\r\n );\r\n }\r\n\r\n function changePassword() {\r\n const dataToPost = {\r\n emailAddress: vm.data.email,\r\n internalIdentifier: _cdpId,\r\n password: vm.oldPassword,\r\n newPassword: vm.newPassword,\r\n };\r\n\r\n return changePasswordService.sitecore.changePassword(dataToPost).then(\r\n result => {\r\n if (\r\n result.MessageText === _successPasswordChanged &&\r\n result.ReturnCode === 0\r\n ) {\r\n vm.showToast = true;\r\n vm.data.option = _successToast;\r\n vm.data.messageOption =\r\n 'Your sign in password has been successfully updated.';\r\n vm.data.show = _fadeInOut;\r\n attributePush(\r\n 'workFlow:' + 'toast-notification',\r\n 'headline:' + vm.data.option,\r\n 'subheadline:' + vm.data.messageOption,\r\n 'buttonText:' + 'impression',\r\n 'addedSpec:' + 'profile-settings',\r\n );\r\n virtualPagePush(\r\n 'toast-notification',\r\n 'profile-settings',\r\n vm.data.messageOption,\r\n 'impression',\r\n vm.data.option,\r\n );\r\n\r\n if (vm.data.option == _successToast) {\r\n setTimeout(function() {\r\n document.getElementById('toastdisable').style.visibility =\r\n 'hidden';\r\n vm.data.show = _fadeOut;\r\n vm.showToast = false;\r\n }, 12000);\r\n }\r\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n vm.changePassword = false;\r\n //vm.oldPassword = null;\r\n //vm.newPassword = null;\r\n //vm.confirmPassword = null;\r\n vm.checkUp = false;\r\n vm.ErrorCurrentPassword = false;\r\n vm.ErrorNewPassword = false;\r\n vm.overChangeEmail = true;\r\n angular.element('#psw-modal').modal('hide');\r\n } else {\r\n vm.showToast = true;\r\n vm.data.option = _errorToast;\r\n vm.data.messageOption =\r\n 'We were unable to update password, please try again later.';\r\n vm.data.show = _fadeinfinite;\r\n vm.checkUp = true;\r\n vm.ErrorCurrentPassword = false;\r\n vm.ErrorNewPassword = false;\r\n vm.checkUpTitle = result.MessageText;\r\n if (result.ReturnCode === 370012015) {\r\n vm.ErrorCurrentPassword = true;\r\n }\r\n if (result.ReturnCode === 370012020) {\r\n vm.ErrorNewPassword = true;\r\n }\r\n if (vm.data.option == _errorToast) {\r\n document.getElementById('toastdisable').style.visibility = 'hidden';\r\n\r\n vm.showToast = false;\r\n }\r\n }\r\n $('.title').removeClass('subheadline');\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n $('.title').removeClass('subheadline');\r\n },\r\n );\r\n }\r\n\r\n function passwordRequirements() {\r\n const lowerCase = /^(?=.*[a-z]).+$/;\r\n const upperCase = /^(?=.*[A-Z]).+$/;\r\n const number = /^(?=.*[0-9]).+$/;\r\n const special = /^(?=.*[!@#$%^&*]).+$/;\r\n let required = 0;\r\n\r\n if (vm.newPassword.length >= 8) {\r\n vm.passwordCharacter = greenColor;\r\n } else {\r\n vm.passwordCharacter = noneColor;\r\n }\r\n\r\n if (lowerCase.test(vm.newPassword) === true) {\r\n vm.passwordLowercase = greenColor;\r\n required += 1;\r\n } else {\r\n required -= 1;\r\n vm.passwordLowercase = noneColor;\r\n }\r\n\r\n if (upperCase.test(vm.newPassword) === true) {\r\n vm.passwordUppercase = greenColor;\r\n required += 1;\r\n } else {\r\n required -= 1;\r\n vm.passwordUppercase = noneColor;\r\n }\r\n\r\n if (number.test(vm.newPassword) === true) {\r\n required += 1;\r\n vm.passwordNumber = greenColor;\r\n } else {\r\n required -= 1;\r\n vm.passwordNumber = noneColor;\r\n }\r\n\r\n if (special.test(vm.newPassword) === true) {\r\n required += 1;\r\n vm.passwordSpecial = greenColor;\r\n } else {\r\n required -= 1;\r\n vm.passwordSpecial = noneColor;\r\n }\r\n\r\n if (required >= 2) {\r\n vm.threeRequirements = greenColor;\r\n } else {\r\n vm.threeRequirements = noneColor;\r\n }\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n $rootScope.$broadcast(assetService.events.refreshPSLandingPage);\r\n }\r\n\r\n function setModel() {\r\n if (_sessionData.isLegacyAccount) {\r\n vm.data = {\r\n email: _sessionData.email,\r\n };\r\n\r\n _cdpId = _sessionData.currentUser.cdpId;\r\n } else {\r\n vm.account.infoAccount = _sessionData.emailAccounts;\r\n _.forEach(_sessionData.emailSubscriptions, item => {\r\n if (item.primary) {\r\n vm.account.email = item;\r\n }\r\n });\r\n vm.data = {\r\n email: vm.account.email.email,\r\n };\r\n\r\n _cdpId = _sessionData.currentUser.cdpId;\r\n }\r\n }\r\n function onEmailFieldsBlurred(editEmailForm, type) {\r\n vm.editEmailForm = editEmailForm;\r\n if (type === 'currentPassword' && !vm.mailPassword) {\r\n vm.ErrorCurrentPassword = false;\r\n }\r\n if (type === 'newEmail' && editEmailForm.email.$valid) {\r\n checkProfileExists();\r\n }\r\n }\r\n\r\n function onEmailFieldsChanged(editEmailForm, type) {\r\n if (type === 'newEmail') {\r\n vm.isEmailAssociated = false;\r\n vm.isEmailRegistered = false;\r\n if (editEmailForm.email.$valid) {\r\n vm.isEmailChanged = true;\r\n }\r\n } else {\r\n vm.isEmailChanged = false;\r\n }\r\n if (type === 'passwordForEmail') {\r\n vm.ErrorCurrentPassword = false;\r\n }\r\n }\r\n\r\n function checkProfileExists() {\r\n if (vm.isEmailChanged) {\r\n const datarequest = {\r\n emailAddress: vm.newEmail,\r\n };\r\n const payload = {\r\n emailId: vm.newEmail,\r\n };\r\n isRegisterEmail.sitecore.IsEmailRegistered(datarequest).then(\r\n result => {\r\n if (result && result.RegistrationStatus === 'Registered') {\r\n vm.isEmailRegistered = true;\r\n } else {\r\n getRelatedBpforRegistration.sitecore.GetRelatedBp(payload).then(\r\n result => {\r\n if (\r\n result.d.RequestToMessagesNav.results[0].Type.toUpperCase() ===\r\n 'S'\r\n ) {\r\n if (result.d.RequestToResponseNav.results.length >= 1) {\r\n vm.isEmailAssociated = true;\r\n }\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function virtualPagePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function load() {\r\n _sessionData = sessionStorageService.get(\r\n assetService.storageKeys.profileSettings,\r\n );\r\n setModel();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ContributionSuccess', ContributionSuccess);\r\n\r\nContributionSuccess.$inject = [\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n];\r\n\r\nfunction ContributionSuccess(\r\n assetService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n broadcastService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.customerAssistanceStorage = null;\r\n vm.data = {\r\n contribution: null,\r\n name: null,\r\n dollarAmount: false,\r\n roundUp: false,\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n vm.data.contribution = vm.customerAssistanceStorage.contribution;\r\n vm.data.name = vm.customerAssistanceStorage.name;\r\n if (vm.data.contribution.type === '0') {\r\n vm.data.dollarAmount = true;\r\n } else {\r\n vm.data.roundUp = true;\r\n }\r\n }\r\n\r\n function load() {\r\n broadcastService.hideHeader(true);\r\n vm.customerAssistanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.customerAssistance,\r\n );\r\n setModels();\r\n broadcastService.scrollTop();\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n }\r\n\r\n function virtualPagePush(){\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ContributionUnenrollSuccess', ContributionUnenrollSuccess);\r\n\r\nContributionUnenrollSuccess.$inject = [\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ContributionUnenrollSuccess(\r\n assetService,\r\n sessionStorageService,\r\n broadcastService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const defaultProgramName = 'Program Name';\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.customerAssistanceStorage = {};\r\n vm.programName = defaultProgramName;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function setModels() {\r\n vm.programName = vm.customerAssistanceStorage.name || defaultProgramName;\r\n }\r\n\r\n function load() {\r\n broadcastService.hideHeader(true);\r\n vm.customerAssistanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.customerAssistance,\r\n ) || {};\r\n setModels();\r\n broadcastService.scrollTop();\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n }\r\n\r\n function virtualPagePush(){\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n \r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('ContributionType', ContributionType);\r\n\r\nContributionType.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n '$state',\r\n 'makeOneTimeMonthlyContributionService',\r\n '$scope',\r\n 'broadcastService',\r\n 'responseNotificationsService',\r\n 'commongaTaggingService',\r\n '$timeout',\r\n];\r\n\r\nfunction ContributionType(\r\n $log,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n $state,\r\n makeOneTimeMonthlyContributionService,\r\n $scope,\r\n broadcastService,\r\n responseNotificationsService,\r\n commongaTaggingService,\r\n $timeout,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const defaultDonation = '0';\r\n const donation =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Donation;\r\n const monthlyDonationAmount =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.MONTHLY;\r\n const numberMonths = '12';\r\n const roundUpMyBill =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.ROUND_UP_MY_BILL;\r\n const unenroll =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.UNENROLL;\r\n const update =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.Update;\r\n let amount = '';\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.customerAssistanceStorage = {};\r\n vm.data = {\r\n customerAssistance: null,\r\n contribution: null,\r\n };\r\n vm.dataCustomerAssistance = {};\r\n vm.dataToPost = {};\r\n vm.form = {\r\n amount: 0,\r\n };\r\n vm.formStartingValues = {\r\n type: null,\r\n amount: 0,\r\n valuesChanged: false,\r\n };\r\n vm.makeContributionPaymentResponse = {};\r\n vm.unenrolledData = null;\r\n vm.showError = false;\r\n vm.showLimitedError = false;\r\n vm.enableButton = false;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.onCancel = onCancel;\r\n vm.saveStep = saveStep;\r\n vm.goToUnenrollProgram = goToUnenrollProgram;\r\n vm.defaultValuesChanged = defaultValuesChanged;\r\n vm.enrollSaveGAT = enrollSaveGAT;\r\n vm.unenrollGAT = unenrollGAT;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function changeContributionPayment(action, donationAmount, monthly) {\r\n return {\r\n monthly,\r\n numberMonths,\r\n programName: vm.data.customerAssistance.id,\r\n donationAmount,\r\n contractAccountId: vm.data.customerAssistance.contractAccount,\r\n action,\r\n };\r\n }\r\n\r\n function onCancel(event) {\r\n const url =\r\n $scope.urls && $scope.urls.billingAndPaymentPrograms\r\n ? $scope.urls.billingAndPaymentPrograms\r\n : '';\r\n broadcastService.redirectTo(event, url);\r\n }\r\n\r\n function saveStep() {\r\n if (vm.data.contribution) {\r\n //\r\n if (vm.form.type !== vm.data.contribution.type) {\r\n vm.dataToPost = changeContributionPayment(\r\n unenroll,\r\n defaultDonation,\r\n monthlyDonationAmount,\r\n );\r\n const promises = [makeContributionPayment(vm.dataToPost)];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n if (\r\n vm.makeContributionPaymentResponse.replyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n if (vm.form.type === '1') {\r\n vm.dataToPost = changeContributionPayment(\r\n donation,\r\n defaultDonation,\r\n roundUpMyBill,\r\n );\r\n nextStep(vm.dataToPost);\r\n } else if (vm.form.type === '0') {\r\n vm.dataToPost = changeContributionPayment(\r\n donation,\r\n `${vm.form.amount}`,\r\n monthlyDonationAmount,\r\n );\r\n nextStep(vm.dataToPost);\r\n }\r\n }\r\n });\r\n } else if (vm.form.type === '0') {\r\n vm.dataToPost = changeContributionPayment(\r\n update,\r\n `${vm.form.amount}`,\r\n monthlyDonationAmount,\r\n );\r\n nextStep(vm.dataToPost);\r\n }\r\n } else if (vm.form.type === '0') {\r\n vm.dataToPost = changeContributionPayment(\r\n donation,\r\n `${vm.form.amount}`,\r\n monthlyDonationAmount,\r\n );\r\n nextStep(vm.dataToPost);\r\n } else {\r\n vm.dataToPost = changeContributionPayment(\r\n donation,\r\n defaultDonation,\r\n roundUpMyBill,\r\n );\r\n nextStep(vm.dataToPost);\r\n }\r\n\r\n if (vm.form.type === '0') {\r\n vm.dataCustomerAssistance = {\r\n type: vm.form.type,\r\n amount: vm.form.amount,\r\n toUnenroll: false,\r\n };\r\n } else {\r\n vm.dataCustomerAssistance = {\r\n type: vm.form.type,\r\n toUnenroll: false,\r\n };\r\n }\r\n vm.customerAssistanceStorage.contribution = vm.dataCustomerAssistance;\r\n sessionStorageService.set(\r\n assetService.storageKeys.customerAssistance,\r\n vm.customerAssistanceStorage,\r\n );\r\n }\r\n\r\n function nextStep(dataToPost) {\r\n const onError = function() {\r\n responseNotificationsService.errorResponse({\r\n vehicle: 'toast',\r\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_ERROR,\r\n pageTitle: 'Contribute Types',\r\n });\r\n };\r\n\r\n makeContributionPayment(dataToPost)\r\n .then(\r\n () => {\r\n if (\r\n vm.makeContributionPaymentResponse.replyCode ===\r\n assetService.replyCodes.SUCCESS\r\n ) {\r\n if (!vm.data.customerAssistance.status) {\r\n // On contribution enrollment\r\n $state.go(\r\n assetService.recurringContributionsRouteState\r\n .CONTRIBUTION_SUCCESS,\r\n );\r\n } else {\r\n // On contribution manage\r\n onContributionUpdated();\r\n }\r\n } else {\r\n onError();\r\n }\r\n },\r\n () => onError(),\r\n )\r\n .catch(onError);\r\n }\r\n\r\n function onContributionUpdated() {\r\n vm.customerAssistanceStorage.dollarAmount =\r\n vm.form.type === '0' ? `${vm.form.amount}` : '0';\r\n sessionStorageService.set(\r\n assetService.storageKeys.customerAssistance,\r\n vm.customerAssistanceStorage,\r\n );\r\n setModels();\r\n responseNotificationsService.successResponse({\r\n vehicle: 'toast',\r\n message: assetService.strings.RECURRING_CONTRIBUTIONS.SAVE_SUCCESS,\r\n pageTitle: 'Contribute Types',\r\n });\r\n const url =\r\n $scope.urls && $scope.urls.billingAndPaymentPrograms\r\n ? $scope.urls.billingAndPaymentPrograms\r\n : '';\r\n $timeout(() => {\r\n broadcastService.redirectTo('', url);\r\n }, 1000);\r\n }\r\n\r\n function goToUnenrollProgram() {\r\n $state.go(\r\n assetService.recurringContributionsRouteState.CONTRIBUTION_UNENROLL,\r\n );\r\n }\r\n\r\n function makeContributionPayment(data) {\r\n return makeOneTimeMonthlyContributionService.sitecore\r\n .makeOneTimeMonthlyContribution(data)\r\n .then(\r\n result => {\r\n vm.makeContributionPaymentResponse = {\r\n replyCode: result.d.Message.ZreplyCode,\r\n };\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setModels() {\r\n vm.data.customerAssistance = {\r\n status:\r\n vm.customerAssistanceStorage.status ===\r\n assetService.recurringContributionsButtons.NOT_ENROLLED\r\n ? false\r\n : true,\r\n contractAccount: vm.customerAssistanceStorage.contractAccount,\r\n name: vm.customerAssistanceStorage.name,\r\n id: vm.customerAssistanceStorage.id,\r\n dollarAmount: vm.customerAssistanceStorage.dollarAmount,\r\n };\r\n\r\n if (vm.data.customerAssistance.status) {\r\n broadcastService.hideHeader(false);\r\n broadcastService.headerSwitch(assetService.strings.HEADER.FULL);\r\n amount = parseFloat(vm.data.customerAssistance.dollarAmount);\r\n if (amount > 0) {\r\n vm.data.contribution = {\r\n amount,\r\n type: '0',\r\n };\r\n } else {\r\n vm.data.contribution = {\r\n type: '1',\r\n };\r\n }\r\n vm.form.type = vm.data.contribution.type;\r\n if (vm.form.type === '0') {\r\n vm.form.amount = vm.data.contribution.amount;\r\n }\r\n vm.formStartingValues = {\r\n type: vm.form.type || null,\r\n amount: vm.form.amount || 0,\r\n };\r\n } else {\r\n broadcastService.hideHeader(true);\r\n vm.formStartingValues = {\r\n type: null,\r\n amount: 0,\r\n };\r\n }\r\n }\r\n\r\n function enrollSaveGAT() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n const optionSelected =\r\n vm.form.type === '0' ? 'dollar amount' : 'round up my bill';\r\n arrayElements.push('addedSpec:' + optionSelected);\r\n attributePush(arrayElements);\r\n }\r\n\r\n function unenrollGAT() {\r\n const arrayElements = Array.prototype.slice.call(arguments);\r\n attributePush(arrayElements);\r\n }\r\n\r\n function attributePush(elements) {\r\n commongaTaggingService.attributePush(elements);\r\n }\r\n\r\n /**\r\n * Method used to disabled SAVE button when the user doesn't change\r\n * the values used when it enrolled the program.\r\n *\r\n * The button will be enabled if the next bullets are fulfilled:\r\n * - If the program was enrolled with Dolar Amount, the CTA button will be enable if\r\n * the user changed the value or select Round up my bill.\r\n * - If the program was enrolled in Round up my bill, the CTA button will be enable if\r\n * the used select Dolar Amount and inserts a valid value.\r\n *\r\n * NOTE: this functionality only affects on Manage Recurring Contributions\r\n */\r\n function defaultValuesChanged() {\r\n const defaultType = vm.formStartingValues.type;\r\n const defaultAmount = vm.formStartingValues.amount;\r\n const currentType = vm.form.type;\r\n const currentAmount = vm.form.amount\r\n ? parseFloat(vm.form.amount.toString().replace(/[^0-9._-]/g, '')) || 0\r\n : 0;\r\n\r\n vm.form.amount = parseFloat(\r\n vm.form.amount.toString().replace(/[^0-9._-]/g, ''),\r\n );\r\n\r\n switch (currentType) {\r\n case '0': // If Dolar Amount radio button selected\r\n vm.formStartingValues.valuesChanged =\r\n (currentAmount && currentAmount !== defaultAmount && currentAmount > 0 && currentAmount <= 500);\r\n break;\r\n case '1': // If Round up my bill radio button selected\r\n vm.formStartingValues.valuesChanged =\r\n defaultType === null || defaultType === '0';\r\n break;\r\n default:\r\n // If no radio button has been selected\r\n vm.formStartingValues.valuesChanged = false;\r\n break;\r\n }\r\n\r\n if (currentAmount <= 0) {\r\n vm.showError = true;\r\n } else {\r\n vm.showError = false;\r\n }\r\n\r\n if (currentAmount > 500) {\r\n vm.showLimitedError = true;\r\n vm.formStartingValues.valuesChanged = false;\r\n } else {\r\n vm.showLimitedError = false;\r\n }\r\n\r\n if (currentType == '0' && currentAmount > 0 && currentAmount <= 500) {\r\n vm.enableButton = true;\r\n } else if (currentType == '1') {\r\n vm.enableButton = true;\r\n } else {\r\n vm.enableButton = false;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.customerAssistanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.customerAssistance,\r\n );\r\n setModels();\r\n broadcastService.scrollTop();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-use-before-define */\r\napp.controller('ContributionUnenroll', ContributionUnenroll);\r\n\r\nContributionUnenroll.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'makeOneTimeMonthlyContributionService',\r\n 'sessionStorageService',\r\n '$state',\r\n 'broadcastService',\r\n 'commongaTaggingService',\r\n];\r\nfunction ContributionUnenroll(\r\n $log,\r\n assetService,\r\n makeOneTimeMonthlyContributionService,\r\n sessionStorageService,\r\n $state,\r\n broadcastService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const action =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.UNENROLL;\r\n const defaultDonation = '0';\r\n const monthly =\r\n assetService.serviceActions.makeOneTimeMonthlyContribution.MONTHLY;\r\n const numberMonths = '12';\r\n let sessionData = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {};\r\n vm.isPageLevelError = false;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.unenrollProgram = unenrollProgram;\r\n vm.previousStep = previousStep;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function makeContributionPayment(data) {\r\n vm.isPageLevelError = false;\r\n return makeOneTimeMonthlyContributionService.sitecore\r\n .makeOneTimeMonthlyContribution(data)\r\n .then(\r\n (result) => {\r\n return { replyCode: result.d.Message.ZreplyCode };\r\n },\r\n (error) => {\r\n vm.isPageLevelError = true;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function unenrollProgram(event) {\r\n $('.active-button').removeClass('active-button');\r\n $(event.currentTarget).addClass('active-button');\r\n const dataToPost = {\r\n monthly,\r\n numberMonths,\r\n programName: vm.data.id,\r\n donationAmount: defaultDonation,\r\n contractAccountId: vm.data.contractAccountId,\r\n action,\r\n };\r\n makeContributionPayment(dataToPost).then((response) => {\r\n if (response && response.replyCode === assetService.replyCodes.SUCCESS) {\r\n $state.go(\r\n assetService.recurringContributionsRouteState\r\n .CONTRIBUTION_UNENROLL_SUCCESS,\r\n );\r\n }\r\n });\r\n }\r\n\r\n function previousStep() {\r\n $state.go(assetService.recurringContributionsRouteState.CONTRIBUTION_TYPE);\r\n }\r\n\r\n function attributePush(){\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function virtualPagePush(){\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function setModels() {\r\n vm.data.name = sessionData.name;\r\n vm.data.id = sessionData.id;\r\n vm.data.contractAccountId = sessionData.contractAccount;\r\n }\r\n\r\n function load() {\r\n sessionData = sessionStorageService.get(\r\n assetService.storageKeys.customerAssistance,\r\n );\r\n setModels();\r\n broadcastService.hideHeader(true);\r\n broadcastService.headerSwitch(assetService.strings.HEADER.SIMPLE);\r\n broadcastService.scrollTop();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('CCServiceOrder', CCServiceOrder);\r\n\r\nCCServiceOrder.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'dateHelperService',\r\n 'getServiceOrderService',\r\n 'sessionStorageService',\r\n 'TableHelperService',\r\n 'commonService',\r\n '$window',\r\n '$state',\r\n '$scope',\r\n];\r\n\r\nfunction CCServiceOrder(\r\n $log,\r\n assetService,\r\n dateHelperService,\r\n getServiceOrderService,\r\n sessionStorageService,\r\n tableHelperService,\r\n commonService,\r\n $window,\r\n $state,\r\n $scope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalAccountInfo = null;\r\n let globalSelectedAccount = null;\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n serviceOrders: [],\r\n };\r\n vm.loaded = false;\r\n vm.orderType = assetService.orderType;\r\n vm.toSessionStorage = {};\r\n vm.sortArrow = '';\r\n vm.show = {\r\n tooltipPreferred: [],\r\n };\r\n\r\n /* Function Declarations */\r\n vm.hideTooltip = hideTooltip;\r\n vm.nextStep = nextStep;\r\n vm.showTooltip = showTooltip;\r\n vm.sortTable = sortTable;\r\n vm.convert=convert;\r\n\r\n /* Function Definitions */\r\n function getDateFromFullDate(date) {\r\n const newDate = moment(date).format('YYYY-MM-DDTHH:mm:ss');\r\n return dateHelperService.getDateFromFullDate(newDate);\r\n }\r\n\r\n function nextStep(serviceOrder) {\r\n vm.toSessionStorage = {\r\n orderNumber: serviceOrder.order_number,\r\n };\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.serviceOrder, vm.toSessionStorage,\r\n );\r\n\r\n $state.go(assetService.serviceOrderRouteState.VIEW_SERVICE_ORDER);\r\n }\r\n\r\n function sortTable() {\r\n vm.sortArrow = tableHelperService.sortingTableData(vm.data.serviceOrders, 'date', vm.sortArrow);\r\n }\r\n\r\n function getDescription(type) {\r\n return _.get(vm.orderType, type);\r\n }\r\n\r\n function showTooltip(index) {\r\n vm.show.tooltipPreferred[index] = true;\r\n }\r\n\r\n function hideTooltip(index) {\r\n vm.show.tooltipPreferred[index] = false;\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n const data = {\r\n businessPartner: globalSelectedAccount.PrimaryBp,\r\n noOfServiceOrders: '6',\r\n };\r\n\r\n const promises = [getServiceOrder(data)];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.loaded = true;\r\n });\r\n\r\n function getServiceOrder(dataToPost) {\r\n return getServiceOrderService.sitecore.getServiceOrderService(dataToPost).then(\r\n (result) => {\r\n vm.data.serviceOrders = _.map(result.d.SOHeaderToItem_NAV.results[0].SOItemToSO_NAV.results, item => ({\r\n date: getDateFromFullDate(parseInt(item.ScheduleDate.slice(6,19))),\r\n order_number: item.OrderNumber,\r\n orderType: item.OrderType,\r\n premise: item.Premise,\r\n status: item.Status,\r\n description: getDescription(item.OrderType),\r\n }));\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function convert(data){\r\n data=data.toLowerCase();\r\n let dataReplaced=data.replace(/ /g,\"-\");\r\n return dataReplaced;\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n load();\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n // Will initialize with globalAccSel\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('RecurringContributionsController', RecurringContributionsController);\r\n\r\nRecurringContributionsController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'sessionStorageService',\r\n 'returnApplicableProgramsService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction RecurringContributionsController(\r\n $log,\r\n $scope,\r\n assetService,\r\n sessionStorageService,\r\n returnApplicableProgramsService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let _temporalProgram = [];\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n const globalSelectedAccountEmail = '';\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.customerAssistanceData = null;\r\n vm.data = {\r\n customerAssistance: null,\r\n button: null,\r\n };\r\n vm.contributionProgram = null;\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n vm.contributionName = '';\r\n /* --------------Function Definitions-----------------------*/\r\n vm.nextStep = nextStep;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function nextStep() {\r\n /* Need to go to contribution manage view */\r\n }\r\n function setModels() {\r\n if (vm.contributionProgram.status === assetService.recurringContributionsButtons.ENROLLED) {\r\n vm.data.button = true;\r\n } else {\r\n vm.data.button = false;\r\n }\r\n }\r\n\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case (assetService.roles.owner):\r\n vm.ownerRole = true;\r\n break;\r\n case (assetService.roles.admin):\r\n vm.adminRole = true;\r\n break;\r\n case (assetService.roles.viewer):\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n\r\n\r\n function load() {\r\n const params = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n };\r\n\r\n getRole();\r\n\r\n returnApplicablePrograms(params).then(\r\n () => {\r\n setModels();\r\n sessionStorageService.set(\r\n assetService.storageKeys.customerAssistance, vm.contributionProgram,\r\n );\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function returnApplicablePrograms(data) {\r\n return returnApplicableProgramsService.sitecore.returnApplicablePrograms(data).then(\r\n (result) => {\r\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(':');\r\n vm.contributionProgram = {\r\n id: _temporalProgram[0].trim(),\r\n name: _temporalProgram[1],\r\n contractAccount: result.d.Programtores_nav.results[0].ContractAccount,\r\n startDate: result.d.Programtores_nav.results[0].ProgramStartDate,\r\n endDate: result.d.Programtores_nav.results[0].ProgramEndDate,\r\n status: result.d.Programtores_nav.results[0].Status, // Awaiting 'Status' field to be added to response\r\n dollarAmount: result.d.Programtores_nav.results[0].DollarAmount,\r\n };\r\n vm.contributionName = vm.contributionProgram.name.toLowerCase().split(' ').map(s => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n\r\n load();\r\n });\r\n\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n /*empty function*/\r\n\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('ViewServiceOrderManager', ViewServiceOrderManager);\r\n\r\nViewServiceOrderManager.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'dateHelperService',\r\n 'commonService',\r\n 'genericHelperService',\r\n 'getServiceOrderDetailsService',\r\n 'sessionStorageService',\r\n 'updateServiceOrderService',\r\n '$window',\r\n '$rootScope',\r\n];\r\n\r\nfunction ViewServiceOrderManager(\r\n $log,\r\n assetService,\r\n dateHelperService,\r\n commonService,\r\n genericHelperService,\r\n getServiceOrderDetailsService,\r\n sessionStorageService,\r\n updateServiceOrderService,\r\n $window,\r\n $rootScope,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _completed = assetService.viewServiceOrderStatus.COMPLETED;\r\n const _incompleted = assetService.viewServiceOrderStatus.INCOMPLETED;\r\n const _cancel = assetService.viewServiceOrderStatus.CANCEL;\r\n const _originUrl = window.location.origin;\r\n let _splitedRemarks = [];\r\n const _success = assetService.replyCodes.Success;\r\n const _errorOccurred = assetService.messages.ERROR_OCCURRED;\r\n let globalSelectedAccount = {};\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.data = {\r\n status: null,\r\n order_number: null,\r\n additional_comments: null,\r\n phoneNumber: null,\r\n email: null,\r\n reported_time: null,\r\n scheduled_date: null,\r\n };\r\n vm.form = {\r\n phoneNumber: null,\r\n comments: null,\r\n show: false,\r\n btn: true,\r\n };\r\n vm.loaded = false;\r\n vm.getServiceOrderDetails = {};\r\n vm.sessionStorage = {};\r\n vm.updateServiceOrder = {\r\n reply: null,\r\n };\r\n vm.viewerRole = false;\r\n vm.adminRole = false;\r\n vm.ownerRole = false;\r\n\r\n /* Function Definitions */\r\n vm.telFormat = telFormat;\r\n vm.saveData = saveData;\r\n vm.cancel = cancel;\r\n vm.convert=convert;\r\n vm.verifyReadOnlyAndDoVirtualPagePush=verifyReadOnlyAndDoVirtualPagePush;\r\n\r\n /* Function Declarations */\r\n function getRole() {\r\n switch (globalSelectedAccount.role) {\r\n case (assetService.roles.owner):\r\n vm.ownerRole = true;\r\n break;\r\n case (assetService.roles.admin):\r\n vm.adminRole = true;\r\n break;\r\n case (assetService.roles.viewer):\r\n vm.viewerRole = true;\r\n break;\r\n default:\r\n vm.viewerRole = true;\r\n }\r\n }\r\n\r\n function getDateFromFullDate(date) {\r\n const newDate = moment(date).format('YYYY-MM-DDTHH:mm:ss');\r\n return dateHelperService.getDateFromFullDate(newDate);\r\n }\r\n\r\n function telFormat(phone) {\r\n return genericHelperService.telFormat(phone);\r\n }\r\n\r\n function cancel() {\r\n reload();\r\n }\r\n\r\n function convertTime(time) {\r\n return moment(time, 'HHmmss').format('HH:mm A');\r\n }\r\n\r\n function saveData() {\r\n const dataToPost = {\r\n action: assetService.serviceActions.updateServiceOrder.UPDATE_SO,\r\n orderNumber: vm.data.order_number,\r\n requestedPhone: vm.form.phoneNumber,\r\n remarks: vm.form.comments,\r\n };\r\n\r\n updateServiceOrder(dataToPost).then(() => {\r\n if (vm.updateServiceOrder.reply === _success) {\r\n vm.loaded = false;\r\n reload();\r\n } else {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n });\r\n $state.go(assetService.serviceOrderRouteState.SERVICE_ORDER);\r\n }\r\n\r\n function updateServiceOrder(data) {\r\n vm.updateServiceOrder.reply = null;\r\n return updateServiceOrderService.sitecore.updateServiceOrder(data).then(\r\n (result) => {\r\n vm.updateServiceOrder.reply = result.d.ReplyCode;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function reload() {\r\n $window.location.reload();\r\n }\r\n\r\n function setModels() {\r\n _splitedRemarks = vm.getServiceOrderDetails.SoRemarks.split('*', 3);\r\n vm.data.order_number = vm.getServiceOrderDetails.OrderNumber;\r\n vm.data.phoneNumber = vm.getServiceOrderDetails.PrimaryContact;\r\n vm.data.status = vm.getServiceOrderDetails.Status;\r\n vm.data.scheduled_date = getDateFromFullDate(parseInt(vm.getServiceOrderDetails.ScheduleDate.slice(6,19)));\r\n [,, vm.data.additional_comments] = _splitedRemarks;\r\n vm.data.reported_time = convertTime(vm.getServiceOrderDetails.ReportedTime);\r\n\r\n if (vm.data.status === _completed || vm.data.status === _incompleted || vm.data.status === _cancel) {\r\n vm.form.show = true;\r\n } else {\r\n vm.form.show = false;\r\n }\r\n\r\n if (vm.data.status === _completed || vm.data.status === _cancel) {\r\n vm.form.btn = false;\r\n } else {\r\n vm.form.btn = true;\r\n }\r\n\r\n if (!vm.form.show) {\r\n vm.form.phoneNumber = vm.data.phoneNumber;\r\n vm.form.comments = vm.data.additional_comments;\r\n }\r\n\r\n vm.loaded = true;\r\n }\r\n\r\n function load() {\r\n $window.scrollTo(0, 0);\r\n vm.sessionStorage = sessionStorageService.get(\r\n assetService.storageKeys.serviceOrder,\r\n );\r\n\r\n const dataPost = {\r\n orderNumber: vm.sessionStorage.orderNumber ? vm.sessionStorage.orderNumber : '',\r\n };\r\n\r\n const promises = [getServiceOrderDetails(dataPost), getRole()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n setModels();\r\n });\r\n\r\n function getServiceOrderDetails(data) {\r\n return getServiceOrderDetailsService.sitecore.getServiceOrderDetailsService(data).then(\r\n (result) => {\r\n vm.getServiceOrderDetails = result.d.results[0].serviceorderdetailtores_nav;\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function convert(data){\r\n data=data.toLowerCase();\r\n let dataReplaced=data.replace(/ /g,\"-\");\r\n return dataReplaced;\r\n }\r\n\r\n function verifyReadOnlyAndDoVirtualPagePush(){\r\n if (vm.data.status === 'Completed' || vm.data.status === 'Cancelled'){\r\n $rootScope.virtualPagePush('fire-vpv','/vpv/authenticated/manage-service-requests/manage-service-requests/connect-meter/' + vm.data.status + '/read-only');\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n let globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('PickYourDueDate', PickYourDueDate);\r\n\r\nPickYourDueDate.$inject = [\r\n '$location',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n 'assetService',\r\n 'enrollInBillingAndPaymentProgramsService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'sessionStorageService',\r\n 'broadcastService',\r\n 'getProductRecommendationsCAREService',\r\n 'CareDeleteProductService',\r\n 'cookieService',\r\n 'componentStateHandler',\r\n 'careFeedbackService',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction PickYourDueDate(\r\n $location,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n assetService,\r\n enrollInBillingAndPaymentProgramsService,\r\n getAccountBalanceForRegularAccountService,\r\n sessionStorageService,\r\n broadcastService,\r\n getProductRecommendationsCAREService,\r\n CareDeleteProductService,\r\n cookieService,\r\n componentStateHandler,\r\n careFeedbackService,\r\n commongaTaggingService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n vm.data = undefined;\r\n vm.selectedDueDate = undefined;\r\n vm.selectedDueDateWithSuffix = '-';\r\n vm.currentDueDate = undefined;\r\n vm.currentDueDateWithSuffix = '';\r\n vm.currentDueDateDateFormat = undefined;\r\n vm.firstPage = assetService.pickYourDueDate.firstStatePage;\r\n vm.nextPage = assetService.pickYourDueDate.secondStatePage;\r\n vm.title = assetService.pickYourDueDate.title;\r\n vm.description = assetService.pickYourDueDate.description;\r\n vm.lastButton = assetService.pickYourDueDate.lastButton;\r\n vm.returnTo = assetService.pickYourDueDate.returnTo;\r\n vm.buttonDisabled = true;\r\n $rootScope.isCareComp = false;\r\n vm.PYDDPageError = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.nextStep = nextStep;\r\n vm.selectCalendarDate = selectCalendarDate;\r\n vm.backToPage = backToPage;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.attributePush = attributePush;\r\n /* --------------Function Definitions-----------------------*/\r\n function virtualPagePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush() {\r\n let arrayElements = Array.prototype.slice.call(arguments);\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function selectCalendarDate(selectedDueDate) {\r\n vm.data.selectedDueDate = selectedDueDate;\r\n vm.calendarDate = vm.currentDueDateDateFormat.setDate(selectedDueDate);\r\n vm.selectedDueDateWithSuffix = ordinal_suffix_of(selectedDueDate);\r\n vm.buttonDisabled = false;\r\n }\r\n\r\n function nextStep(event) {\r\n if(event){\r\n $(\".active-button\").removeClass(\"active-button\");\r\n $(event.currentTarget).addClass(\"active-button\");\r\n }\r\n if (vm.currentDueDateDateFormat) {\r\n const data = {\r\n contractAccountId: vm.contractAccountId,\r\n dueDate: moment(vm.calendarDate).format('YYYY-MM-DDTHH:mm:ss'),\r\n progName: assetService.billingAndPaymentProgramsCodes.PYODDA,\r\n };\r\n vm.loadingSpinner = true;\r\n enrollInBillingAndPaymentPrograms(data).then(\r\n result => {\r\n if (\r\n result.d.ReqToResNav.results[0].ProgramToMessage.results[0].Type ===\r\n 'S'\r\n ) {\r\n const requestCare = {\r\n accountNumber: data.contractAccountId,\r\n jurisdiction: globalSelectedAccount.jurisdiction,\r\n progName: data.progName,\r\n };\r\n productRecommendationsCARE(requestCare);\r\n }\r\n componentStateHandler.showComponent(vm);\r\n $state.go(vm.nextPage);\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n vm.PYDDPageError = $rootScope.BnPpageError;\r\n //componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function enrollInBillingAndPaymentPrograms(data) {\r\n return enrollInBillingAndPaymentProgramsService.sitecore.enrollInBillingAndPaymentPrograms(\r\n data,\r\n );\r\n }\r\n\r\n function ordinal_suffix_of(i) {\r\n let j = i % 10,\r\n k = i % 100;\r\n if (j === 1 && k !== 11) {\r\n return i + 'st';\r\n }\r\n if (j === 2 && k !== 12) {\r\n return i + 'nd';\r\n }\r\n if (j === 3 && k !== 13) {\r\n return i + 'rd';\r\n }\r\n return i + 'th';\r\n }\r\n\r\n function productRecommendationsCARE(dataCare) {\r\n $rootScope.isCareComp = true;\r\n // Call to getProductsRecommendations\r\n return getProductRecommendationsCAREService.sitecore\r\n .getProductRecommendationsCARE({\r\n accountNumber: dataCare.accountNumber,\r\n jurisdiction: dataCare.jurisdiction,\r\n })\r\n .then(careResult => {\r\n const productExists = _.find(\r\n careResult.Care_Response[0].results,\r\n psFromList => psFromList.COMMERCE_PRODUCT_ID === dataCare.progName,\r\n );\r\n if (productExists) {\r\n // TO call HANA service to remove the product\r\n const dataObj = {\r\n productId: productExists.PRODUCT_ID,\r\n contractAccountId: dataCare.accountNumber,\r\n regulated: assetService.numeric_Numbers.onee,\r\n acceptanceFlag: assetService.numeric_Numbers.onee,\r\n };\r\n careFeedbackService.sitecore.sendFeedback(dataObj);\r\n carefiltering(careResult, dataCare.progName, dataCare.accountNumber);\r\n }\r\n $rootScope.isCareComp = false;\r\n });\r\n }\r\n\r\n function carefiltering(result, removeProductId, globalAccountNumber) {\r\n const ownerType = result\r\n ? result.Care_Response[0].OWNER_RENTER_HEADER_LEVEL\r\n : '';\r\n const temp = _.filter(\r\n _.map(result.Care_Response[0].results, item => ({\r\n regulated: item.REGULATED,\r\n productId: item.PRODUCT_ID,\r\n commerceProductId: item.COMMERCE_PRODUCT_ID,\r\n productName: item.PRODUCT_NAME,\r\n productPriceOffering: item.PRODUCT_PRICE_OFFERING,\r\n productHintsAndReminders: item.PRODUCT_HINTS_AND_REMINDERS,\r\n ownerRenterProductLevel: item.OWNER_RENTER_PRODUCT_LEVEL,\r\n score: item.SCORE,\r\n acceptReferralFlag: item.ACCEPT_REFERRAL_FLAG,\r\n lineOfBusiness: item.LINE_OF_BUSINESS,\r\n installationFee: item.INSTALLATION_FEE,\r\n eligibleFlag: item.ELIGIBLE_FLAG,\r\n rank: item.RANK,\r\n upgradeDowngradeFlag: item.Upgrade_Downgrade_Flag,\r\n ucVersionRequired: item.UC_Version_Required,\r\n productFamilyName: item.Product_Family_Name,\r\n })),\r\n item =>\r\n (item.eligibleFlag === 'O' || item.eligibleFlag === 'A') &&\r\n item.commerceProductId !== removeProductId && \r\n item.commerceProductId !== 'NA',\r\n );\r\n\r\n const filterProduct = _.filter(\r\n temp,\r\n recommendation =>\r\n recommendation.ownerRenterProductLevel === ownerType ||\r\n recommendation.ownerRenterProductLevel === 'B',\r\n );\r\n sessionStorageService.set(\r\n assetService.storageKeys.careRecFiilteredList + globalAccountNumber,\r\n filterProduct,\r\n );\r\n }\r\n\r\n function backToPage() {\r\n $state.go(vm.returnTo);\r\n }\r\n\r\n function load() {\r\n if (assetService.apiConfig.useLocalHost) {\r\n vm.data = {\r\n accountList: [\r\n {\r\n contractAccountNumber: $location.search().contractAccountId,\r\n requestedBy: $location.search().emailId,\r\n },\r\n ],\r\n };\r\n } else {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n }\r\n vm.contractAccountId = globalSelectedAccount.accountNum;\r\n\r\n vm.businessPartnerId = globalSelectedAccount.bpNumber;\r\n vm.data = {\r\n accountList: [\r\n {\r\n contractAccountNumber: vm.contractAccountId,\r\n requestedBy: vm.businessPartnerId,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n getAccountBalanceForRegularAccount(vm.data).then(\r\n result => {\r\n if (result.getAccountAndBillingInfoResList.length > 0) {\r\n let accountSelected = result.getAccountAndBillingInfoResList.filter(\r\n account => account.contractAccountNumber == vm.contractAccountId,\r\n );\r\n vm.data.currentDueDate = accountSelected[0].currentDueDate\r\n ? moment(\r\n convertDateNumberToString(\r\n accountSelected[0].currentDueDate.toString(),\r\n ),\r\n ).format('MM/DD/YYYY')\r\n : '';\r\n vm.currentDueDateDateFormat = new Date(vm.data.currentDueDate);\r\n vm.currentDueDate = vm.currentDueDateDateFormat.getDate();\r\n vm.currentDueDateWithSuffix = ordinal_suffix_of(\r\n vm.currentDueDateDateFormat.getDate(),\r\n );\r\n }\r\n componentStateHandler.showComponent(vm);\r\n $state.go(vm.firstPage);\r\n },\r\n error => {\r\n componentStateHandler.failedState(vm);\r\n },\r\n );\r\n }\r\n\r\n function getAccountBalanceForRegularAccount(data) {\r\n return getAccountBalanceForRegularAccountService.sitecore.getAccountBalanceForRegularAccount(\r\n data,\r\n );\r\n }\r\n\r\n function convertDateNumberToString(currentDate) {\r\n let year = currentDate.substring(0, 4),\r\n month = currentDate.substring(4, 6),\r\n day = currentDate.substring(6, 8);\r\n return year + '/' + month + '/' + day;\r\n }\r\n\r\n // initialice CARE\r\n $scope.$on(assetService.events.careLoad, (event, data) => {\r\n initCare();\r\n });\r\n\r\n function initCare() {\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n broadcastService.care(globalAccountInfo.accountSelected.accountNum);\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n let init = function() {\r\n const isValidation = cookieService.getCookie(\r\n assetService.storageKeys.validation.billingAndPaymentPrograms.pyodd\r\n .enrollment,\r\n );\r\n if (isValidation || assetService.apiConfig.useLocalHost) {\r\n load();\r\n } else {\r\n window.location.href = '/my-account/billing-and-payment-programs/';\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable no-magic-numbers */\r\napp.controller('CustomerSearchController', CustomerSearchController);\r\n\r\nCustomerSearchController.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'thirdPartySearchCustomer',\r\n '$rootScope',\r\n 'TPSCSVService',\r\n 'dataModelsDTOProductsAndServices',\r\n 'commongaTaggingService',\r\n 'genericHelperService',\r\n 'apiConfigService',\r\n 'componentStateHandler',\r\n '$timeout',\r\n];\r\n\r\nfunction CustomerSearchController(\r\n $log,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n $scope,\r\n thirdPartySearchCustomer,\r\n $rootScope,\r\n csvExportService,\r\n dataModelsDTOProductsAndServices,\r\n commongaTaggingService,\r\n genericHelperService,\r\n apiConfigService,\r\n componentStateHandler,\r\n $timeout,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const fileName = 'CustomerSearchResults';\r\n const pageCase = 'customer';\r\n const noDataFoundErrorMessage =\r\n 'Sorry! We are unable to find any results. Please try again.';\r\n const serviceDownErrorMessage =\r\n 'we are currently experiencing a service outage for our third party search tool';\r\n const customerTabId = 1;\r\n const streetTabId = 2;\r\n const phoneNumberTabId = 3;\r\n const accountNumberTabId = 4;\r\n const businessTabId = 5;\r\n const premiseTabId = 6;\r\n const _kwValue = assetService.strings.VALUE;\r\n const MAX_RECORDS = 999;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.message = null;\r\n vm.orderBy = 'Name';\r\n vm.orderPos = -1; // sorting not required\r\n vm.sortAsc = true;\r\n vm.tab = 4;\r\n vm.noDataFound = false;\r\n vm.serviceDown = false;\r\n vm.showResults = false;\r\n vm.submitBtnDisabled = true;\r\n vm.showAdvancedFormInputs = false;\r\n vm.disableAdvancedSearch = true;\r\n vm.enableBackToPrevButton = false;\r\n vm.isNotBusinessTab = true;\r\n vm.selectStatesList = [];\r\n vm.isMaxResults = false;\r\n vm.searchPageItems = [\r\n { value: 10, text: 10 },\r\n { value: 25, text: 25 },\r\n { value: 50, text: 50 },\r\n { value: 100, text: 100 },\r\n { value: 1000, text: 1000 },\r\n ];\r\n\r\n vm.form = {\r\n firstName: null,\r\n lastName: null,\r\n orgName: null,\r\n accountNumber: null,\r\n telephoneNo: null,\r\n street: null,\r\n houseNo: null,\r\n unit: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n customerZipCode: null,\r\n customerState: null,\r\n customerCity: null,\r\n premiseID: null,\r\n advPhoneNumber: {\r\n firstName: null,\r\n lastName: null,\r\n floor: null,\r\n street: null,\r\n houseNo: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n accountNumber: null,\r\n },\r\n advStreet: {\r\n firstName: null,\r\n lastName: null,\r\n phoneNo: null,\r\n accountNo: null,\r\n },\r\n advCustomer: {\r\n streetAddress: null,\r\n houseNo: null,\r\n floor: null,\r\n accountNumber: null,\r\n phoneNo: null,\r\n },\r\n businessName: null,\r\n businessCity: null,\r\n businessState: null,\r\n businessZip: null,\r\n advBusiness: {\r\n streetAddress: null,\r\n houseNo: null,\r\n floor: null,\r\n accountNo: null,\r\n phoneNo: null,\r\n },\r\n };\r\n vm.minusTableHeaders = [\r\n {\r\n column: 'name',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'streetAddress',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'city',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'state',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'zipCode',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'telephoneNo',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'accountNumber',\r\n sortAsc: true,\r\n },\r\n ];\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function getTabNameFromTabId(tabId) {\r\n let tabName = '';\r\n switch (tabId) {\r\n case 1:\r\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\r\n break;\r\n case 2:\r\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\r\n break;\r\n case 3:\r\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\r\n break;\r\n case 4:\r\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\r\n break;\r\n case 5:\r\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\r\n break;\r\n case 6:\r\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\r\n break;\r\n default:\r\n tabName = 'home';\r\n break;\r\n }\r\n return tabName;\r\n }\r\n\r\n function activateDetails(item) {\r\n const tabName = getTabNameFromTabId(vm.tab);\r\n attributePush(\r\n `workFlow:${$('#tpst-customer-gat').attr('businessFunction')}`,\r\n `buttonText:${$('#tpst-customersearchresults-gat').attr(\r\n 'detailsButtonLabel',\r\n )}`,\r\n `headline:${$('#tpst-customer-gat').attr('headLine')}`,\r\n `subheadline: ${tabName}`,\r\n );\r\n $rootScope.searchType = 1;\r\n $scope.$emit(\r\n 'nextStep',\r\n `viewDetails?AccountNumber=${item.redirectAccountNumber}`,\r\n );\r\n }\r\n\r\n function onClickAdvancedSearch() {\r\n vm.showAdvancedFormInputs = !vm.showAdvancedFormInputs;\r\n }\r\n\r\n function clearSessions() {\r\n sessionStorageService.delete(assetService.storageKeys.tpstSearchCriteria);\r\n sessionStorageService.delete(assetService.storageKeys.selectedTab);\r\n }\r\n\r\n function clearForm() {\r\n if (vm.addressSearchForm) {\r\n vm.addressSearchForm.$setPristine();\r\n vm.addressSearchForm.$setUntouched();\r\n }\r\n\r\n if (vm.accountNoSearchForm) {\r\n vm.accountNoSearchForm.$setPristine();\r\n vm.accountNoSearchForm.$setUntouched();\r\n }\r\n\r\n if (vm.premiseNoSearchForm) {\r\n vm.premiseNoSearchForm.$setPristine();\r\n vm.premiseNoSearchForm.$setUntouched();\r\n }\r\n\r\n if (vm.customerNameSearchForm) {\r\n vm.customerNameSearchForm.$setPristine();\r\n vm.customerNameSearchForm.$setUntouched();\r\n }\r\n\r\n if (vm.telephoneNoSearchForm) {\r\n vm.telephoneNoSearchForm.$setPristine();\r\n vm.telephoneNoSearchForm.$setUntouched();\r\n }\r\n\r\n if (vm.businessNameSearchForm) {\r\n vm.businessNameSearchForm.$setPristine();\r\n vm.businessNameSearchForm.$setUntouched();\r\n }\r\n\r\n vm.searchResults = [];\r\n vm.showResults = false;\r\n\r\n vm.form = {\r\n firstName: null,\r\n lastName: null,\r\n orgName: null,\r\n accountNumber: null,\r\n telephoneNo: null,\r\n street: null,\r\n houseNo: null,\r\n unit: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n customerZipCode: null,\r\n customerState: null,\r\n customerCity: null,\r\n premiseID: null,\r\n advPhoneNumber: {\r\n firstName: null,\r\n lastName: null,\r\n floor: null,\r\n street: null,\r\n houseNo: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n accountNumber: null,\r\n },\r\n advStreet: {\r\n firstName: null,\r\n lastName: null,\r\n phoneNo: null,\r\n accountNo: null,\r\n },\r\n advCustomer: {\r\n streetAddress: null,\r\n houseNo: null,\r\n floor: null,\r\n accountNumber: null,\r\n phoneNo: null,\r\n },\r\n businessName: null,\r\n businessCity: null,\r\n businessState: null,\r\n businessZip: null,\r\n advBusiness: {\r\n streetAddress: null,\r\n houseNo: null,\r\n floor: null,\r\n accountNo: null,\r\n phoneNo: null,\r\n },\r\n };\r\n\r\n vm.noDataFound = false;\r\n vm.serviceDown = false;\r\n vm.showResults = false;\r\n vm.submitBtnDisabled = true;\r\n vm.showAdvancedFormInputs = false;\r\n clearSessions();\r\n }\r\n\r\n function cancel() {\r\n clearForm();\r\n $scope.$emit('nextStep', 'home');\r\n }\r\n\r\n function capitalizeName(name) {\r\n return dataModelsDTOProductsAndServices.transformName(name);\r\n }\r\n\r\n function exportCSV() {\r\n csvExportService.exportToCSV(pageCase, vm.searchResults, fileName);\r\n }\r\n\r\n function setFormSessions(formData, tabName, showAdvanced) {\r\n sessionStorageService.set(\r\n assetService.storageKeys.tpstSearchCriteria,\r\n formData,\r\n );\r\n sessionStorageService.set(assetService.storageKeys.selectedTab, tabName);\r\n sessionStorageService.set(\r\n assetService.storageKeys.showAdvancedFields,\r\n showAdvanced,\r\n );\r\n }\r\n\r\n function getThirdPartySearchCustomer(data, tabName) {\r\n vm.searchResults = [];\r\n return thirdPartySearchCustomer.sitecore.customerSearch(data).then(\r\n result => {\r\n if (!result) {\r\n componentStateHandler.failedState(vm);\r\n } else if (\r\n result.error_response &&\r\n result.error_response.error_code === '500' &&\r\n result.error_response.error_message.includes('Restricted')\r\n ) {\r\n vm.serviceDown = true;\r\n vm.noDataFound = false;\r\n attributePush(\r\n `workFlow:error ${$('#tpst-customer-gat').attr(\r\n 'businessFunction',\r\n )}`,\r\n 'returnCode:not set',\r\n `endpoint:${apiConfigService.post.thirdPartySearchCustomer()}`,\r\n `msgHeader:${serviceDownErrorMessage}`,\r\n `headline:${$('#tpst-customer-gat').attr('headLine')}`,\r\n `subheadline:${tabName}`,\r\n );\r\n } else if (\r\n result.MessageList &&\r\n result.MessageList.ReplyCode === 'ERROR'\r\n ) {\r\n vm.noDataFound = true;\r\n vm.serviceDown = false;\r\n vm.message = noDataFoundErrorMessage;\r\n $scope.$emit('loadingSpinner', false);\r\n attributePush(\r\n `workFlow:error ${$('#tpst-customer-gat').attr(\r\n 'businessFunction',\r\n )}`,\r\n 'returnCode:not set',\r\n `endpoint:${apiConfigService.post.thirdPartySearchCustomer()}`,\r\n `msgHeader:${noDataFoundErrorMessage}`,\r\n `headline:${$('#tpst-customer-gat').attr('headLine')}`,\r\n `subheadline:${tabName}`,\r\n );\r\n } else {\r\n vm.noDataFound = false;\r\n vm.serviceDown = false;\r\n $scope.rowLimit = 10;\r\n vm.startingRecord = 1;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.currentPage = 0;\r\n vm.isMaxResults =\r\n result.MessageList.IsMoreData &&\r\n result.Records.length === MAX_RECORDS;\r\n setFormSessions(vm.form, vm.tab, vm.showAdvancedFormInputs);\r\n vm.searchResults = _.map(result.Records, record => {\r\n const isNonReg = record.SrcSysCode === 'NR';\r\n const isMidWest =\r\n record.PremiseState === 'IN' ||\r\n record.PremiseState === 'OH' ||\r\n record.PremiseState === 'KY';\r\n return {\r\n name: record.CustomerName,\r\n streetAddress: record.PremiseUnit\r\n ? `${record.PremiseHouseNum} ${record.PremiseUnit} ${record.PremiseStreet}`\r\n : `${record.PremiseHouseNum} ${record.PremiseStreet}`,\r\n city: record.PremiseCity,\r\n state: record.PremiseState,\r\n zipCode: record.PremiseZipCode,\r\n telephoneNo: record.CustomerTelephone,\r\n accountNumber: isNonReg && isMidWest ? '' : record.AccountNumber,\r\n accountStatus: record.Status,\r\n redirectAccountNumber: record.AccountNumber,\r\n };\r\n });\r\n }\r\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function fnChangeRowLimit(rowLimit) {\r\n $scope.rowLimit = rowLimit.value;\r\n vm.currentPage = 0;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.startingRecord = 1;\r\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\r\n }\r\n vm.fnChangeRowLimit = fnChangeRowLimit;\r\n\r\n function fnPreviousRecordsShow() {\r\n vm.currentPage -= 1;\r\n vm.startingRecord -= $scope.rowLimit;\r\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\r\n }\r\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\r\n\r\n function fnNextRecordsShow() {\r\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\r\n vm.currentPage += 1;\r\n vm.endingRecord =\r\n vm.currentPage + 1 === vm.totalPages\r\n ? vm.searchResults.length\r\n : vm.startingRecord + $scope.rowLimit - 1;\r\n }\r\n vm.NextRecordsShow = fnNextRecordsShow;\r\n\r\n function validateSearchCriteria() {\r\n if (\r\n (vm.form.firstName &&\r\n vm.form.lastName &&\r\n vm.form.customerCity &&\r\n vm.form.customerState) ||\r\n (vm.form.firstName && vm.form.lastName && vm.form.customerZipCode) ||\r\n (vm.form.street && vm.form.city && vm.form.state) ||\r\n (vm.form.street && vm.form.zipCode) ||\r\n vm.form.telephoneNo ||\r\n (vm.form.businessName && vm.form.businessCity && vm.form.businessState) ||\r\n (vm.form.businessName && vm.form.businessZip) ||\r\n vm.form.premiseID ||\r\n (vm.form.accountNumber !== null &&\r\n vm.form.accountNumber.length > 1 &&\r\n vm.form.accountNumber.trim().length == 12)\r\n ) {\r\n vm.submitBtnDisabled = false;\r\n } else {\r\n vm.submitBtnDisabled = true;\r\n }\r\n }\r\n\r\n function sortByColumn(value) {\r\n vm.orderBy = vm.minusTableHeaders[value].column;\r\n vm.orderPos = value;\r\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\r\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\r\n }\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n // functions to prepare the payload for the customer search API\r\n function updateCustomerFormData() {\r\n let data = {};\r\n if (vm.showAdvancedFormInputs) {\r\n data = {\r\n accountNumber: vm.form.advCustomer.accountNumber,\r\n firstName: vm.form.firstName,\r\n lastName: vm.form.lastName,\r\n city: vm.form.customerCity || null,\r\n state: vm.form.customerState || null,\r\n zipCode: vm.form.customerZipCode || null,\r\n orgName: vm.form.orgName || null,\r\n houseNo: vm.form.advCustomer.houseNo || null,\r\n street: vm.form.advCustomer.streetAddress || null,\r\n unit: vm.form.advCustomer.floor\r\n ? vm.form.advCustomer.floor.toUpperCase()\r\n : null,\r\n telephone: vm.form.advCustomer.phoneNo || null,\r\n };\r\n } else {\r\n data = {\r\n accountNumber: null,\r\n firstName: vm.form.firstName,\r\n lastName: vm.form.lastName,\r\n city: vm.form.customerCity || null,\r\n state: vm.form.customerState || null,\r\n zipCode: vm.form.customerZipCode || null,\r\n orgName: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n telephone: null,\r\n };\r\n }\r\n return data;\r\n }\r\n\r\n function updateStreetFormData() {\r\n let data = {};\r\n if (vm.showAdvancedFormInputs) {\r\n data = {\r\n accountNumber: vm.form.advStreet.accountNo,\r\n firstName: vm.form.advStreet.firstName,\r\n lastName: vm.form.advStreet.lastName,\r\n city: vm.form.city || null,\r\n state: vm.form.state || null,\r\n zipCode: vm.form.zipCode || null,\r\n orgName: null,\r\n houseNo: vm.form.houseNo || null,\r\n street: vm.form.street || null,\r\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\r\n telephone: vm.form.advStreet.phoneNo || null,\r\n };\r\n } else {\r\n data = {\r\n accountNumber: null,\r\n firstName: null,\r\n lastName: null,\r\n city: vm.form.city || null,\r\n state: vm.form.state || null,\r\n zipCode: vm.form.zipCode || null,\r\n orgName: null,\r\n houseNo: vm.form.houseNo || null,\r\n street: vm.form.street || null,\r\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\r\n telephone: null,\r\n };\r\n }\r\n return data;\r\n }\r\n\r\n function updatePhoneNumberFormData() {\r\n let data = {};\r\n if (vm.showAdvancedFormInputs) {\r\n data = {\r\n accountNumber: vm.form.advPhoneNumber.accountNumber,\r\n firstName: vm.form.advPhoneNumber.firstName,\r\n lastName: vm.form.advPhoneNumber.lastName,\r\n city: vm.form.advPhoneNumber.city || null,\r\n state: vm.form.advPhoneNumber.state || null,\r\n zipCode: vm.form.advPhoneNumber.zipCode || null,\r\n orgName: null,\r\n houseNo: vm.form.advPhoneNumber.houseNo || null,\r\n street: vm.form.advPhoneNumber.street || null,\r\n unit: vm.form.advPhoneNumber.floor\r\n ? vm.form.advPhoneNumber.floor.toUpperCase()\r\n : null,\r\n telephone: vm.form.telephoneNo,\r\n };\r\n } else {\r\n data = {\r\n accountNumber: null,\r\n firstName: null,\r\n lastName: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n orgName: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n telephone: vm.form.telephoneNo,\r\n };\r\n }\r\n return data;\r\n }\r\n\r\n function updateAccountNumberFormData() {\r\n let data = {};\r\n data = {\r\n accountNumber: vm.form.accountNumber,\r\n firstName: null,\r\n lastName: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n orgName: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n telephone: null,\r\n };\r\n return data;\r\n }\r\n\r\n function updateBusinessFormData() {\r\n let data = {};\r\n if (vm.showAdvancedFormInputs) {\r\n data = {\r\n accountNumber: vm.form.advBusiness.accountNo,\r\n firstName: null,\r\n lastName: null,\r\n city: vm.form.businessCity || null,\r\n state: vm.form.businessState || null,\r\n zipCode: vm.form.businessZip || null,\r\n orgName: vm.form.businessName,\r\n houseNo: vm.form.advBusiness.houseNo || null,\r\n street: vm.form.advBusiness.streetAddress || null,\r\n unit: vm.form.advBusiness.floor\r\n ? vm.form.advBusiness.floor.toUpperCase()\r\n : null,\r\n telephone: vm.form.advBusiness.phoneNo,\r\n };\r\n } else {\r\n data = {\r\n accountNumber: null,\r\n firstName: null,\r\n lastName: null,\r\n city: vm.form.businessCity,\r\n state: vm.form.businessState,\r\n zipCode: vm.form.businessZip,\r\n orgName: vm.form.businessName,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n telephone: null,\r\n };\r\n }\r\n return data;\r\n }\r\n\r\n function updatePremiseFormData() {\r\n return {\r\n accountNumber: null,\r\n firstName: null,\r\n lastName: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n orgName: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n telephone: null,\r\n premiseID: vm.form.premiseID,\r\n };\r\n }\r\n\r\n function submitForm() {\r\n vm.noDataFound = false;\r\n vm.serviceDown = false;\r\n $scope.$emit('loadingSpinner', true);\r\n sendVirtualPagePushSubmit();\r\n vm.showResults = false;\r\n let data = {};\r\n let tabName = '';\r\n\r\n if (isSet(customerTabId)) {\r\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\r\n vm.isNotBusinessTab = true;\r\n data = updateCustomerFormData();\r\n } else if (isSet(streetTabId)) {\r\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\r\n vm.isNotBusinessTab = true;\r\n data = updateStreetFormData();\r\n } else if (isSet(phoneNumberTabId)) {\r\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\r\n vm.isNotBusinessTab = true;\r\n data = updatePhoneNumberFormData();\r\n } else if (isSet(accountNumberTabId)) {\r\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\r\n vm.isNotBusinessTab = true;\r\n data = updateAccountNumberFormData();\r\n } else if (isSet(businessTabId)) {\r\n vm.isNotBusinessTab = false;\r\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\r\n data = updateBusinessFormData();\r\n } else if (isSet(premiseTabId)) {\r\n vm.isNotBusinessTab = true;\r\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\r\n data = updatePremiseFormData();\r\n }\r\n\r\n attributePush(\r\n `workFlow:${$('#tpst-customer-gat').attr('businessFunction')}`,\r\n `buttonText:${\r\n $('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText\r\n }`,\r\n `headline:${$('#tpst-customer-gat').attr('headLine')}`,\r\n `subheadline: ${tabName}`,\r\n );\r\n getThirdPartySearchCustomer(data, tabName).then(\r\n () => {\r\n $scope.$emit('loadingSpinner', false);\r\n sendVirtualPagePushResult();\r\n if (!vm.noDataFound && !vm.serviceDown) {\r\n vm.showResults = true;\r\n }\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setStateField() {\r\n if (vm.form.state !== '') {\r\n vm.selectStatesList = genericHelperService.setSelectedProp(\r\n vm.selectStatesList,\r\n _kwValue,\r\n vm.form.state,\r\n );\r\n vm.submitBtnDisabled = false;\r\n }\r\n if (vm.form.advPhoneNumber.state !== '') {\r\n vm.selectStatesList = genericHelperService.setSelectedProp(\r\n vm.selectStatesList,\r\n _kwValue,\r\n vm.form.advPhoneNumber.state,\r\n );\r\n vm.submitBtnDisabled = false;\r\n }\r\n if (vm.form.customerState !== '') {\r\n vm.selectStatesList = genericHelperService.setSelectedProp(\r\n vm.selectStatesList,\r\n _kwValue,\r\n vm.form.customerState,\r\n );\r\n vm.submitBtnDisabled = false;\r\n }\r\n if (vm.form.businessState !== '') {\r\n vm.selectStatesList = genericHelperService.setSelectedProp(\r\n vm.selectStatesList,\r\n _kwValue,\r\n vm.form.businessState,\r\n );\r\n vm.submitBtnDisabled = false;\r\n }\r\n }\r\n\r\n function setTab(tabId) {\r\n $scope.$emit('loadingSpinner', true);\r\n vm.tab = tabId;\r\n let goToPage = '';\r\n let tabName = '';\r\n switch (tabId) {\r\n case 1:\r\n goToPage = 'customerName';\r\n tabName = $('#tpst-customer-gat').attr('customerTabLabel');\r\n break;\r\n case 2:\r\n goToPage = 'address';\r\n tabName = $('#tpst-customer-gat').attr('streetTabLabel');\r\n break;\r\n case 3:\r\n goToPage = 'telephoneNumber';\r\n tabName = $('#tpst-customer-gat').attr('phoneTabLabel');\r\n break;\r\n case 4:\r\n goToPage = 'accountNumber';\r\n tabName = $('#tpst-customer-gat').attr('accountTabLabel');\r\n break;\r\n case 5:\r\n goToPage = 'businessName';\r\n tabName = $('#tpst-customer-gat').attr('businessTabLabel');\r\n break;\r\n case 6:\r\n goToPage = 'premiseID';\r\n tabName = $('#tpst-customer-gat').attr('premiseTabLabel');\r\n break;\r\n default:\r\n goToPage = 'home';\r\n }\r\n attributePush(\r\n `workFlow:${$('#tpst-customer-gat').attr('businessFunction')}`,\r\n 'buttonText:tab',\r\n `addedSpec: ${tabName}`,\r\n `headline:${$('#tpst-customer-gat').attr('headLine')}`,\r\n 'subheadline: tab navigation',\r\n );\r\n // clearForm();\r\n $scope.$emit('nextStep', goToPage);\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n function load() {\r\n vm.selectStatesList = [\r\n { value: 'FL', text: 'Florida' },\r\n { value: 'IN', text: 'Indiana' },\r\n { value: 'KY', text: 'Kentucky' },\r\n { value: 'NC', text: 'North Carolina' },\r\n { value: 'OH', text: 'Ohio' },\r\n { value: 'SC', text: 'South Carolina' },\r\n ];\r\n if ($rootScope.enableBacktoPrevBtn) {\r\n vm.enableBackToPrevButton = true;\r\n } else {\r\n vm.enableBackToPrevButton = false;\r\n }\r\n const formData = sessionStorageService.get(\r\n assetService.storageKeys.tpstSearchCriteria,\r\n );\r\n const tabNumber = sessionStorageService.get(\r\n assetService.storageKeys.selectedTab,\r\n );\r\n const showAdvanced = sessionStorageService.get(\r\n assetService.storageKeys.showAdvancedFields,\r\n );\r\n\r\n if (formData) {\r\n vm.form = formData;\r\n setStateField();\r\n }\r\n\r\n if (tabNumber) {\r\n if (showAdvanced) {\r\n vm.showAdvancedFormInputs = showAdvanced;\r\n }\r\n setTab(tabNumber);\r\n submitForm();\r\n } else {\r\n $scope.$emit('nextStep', 'accountNumber');\r\n // only generate this VPV first time coming to TPST and not from details page.\r\n $timeout(() => {\r\n virtualPagePush(\r\n $('#tpst-customer-gat').attr('businessFunction'),\r\n $('#tpst-customer-gat').attr('headLine'),\r\n $('#tpst-customer-gat').attr('subHeadLine'),\r\n getTabNameFromTabId(vm.tab),\r\n );\r\n }, 0);\r\n }\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n\r\n function concatTab() {\r\n const pageToPush = [\r\n $('#tpst-customer-gat').attr('businessFunction'),\r\n $('#tpst-customer-gat').attr('headLine'),\r\n ];\r\n const tabName = getTabNameFromTabId(vm.tab);\r\n pageToPush.push(tabName);\r\n return pageToPush;\r\n }\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function sendVirtualPagePushSubmit() {\r\n const pageToPush = concatTab();\r\n pageToPush.push(\r\n $('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText,\r\n );\r\n virtualPagePush(...pageToPush);\r\n }\r\n\r\n function sendVirtualPagePushDetails() {\r\n const pageToPush = concatTab();\r\n pageToPush.push(\r\n $('#tpst-customersearchresults-gat').attr('detailsButtonLabel'),\r\n );\r\n virtualPagePush(...pageToPush);\r\n }\r\n\r\n function sendVirtualPagePushResult() {\r\n const pageToPush = concatTab();\r\n if (vm.searchResults && vm.searchResults.length > 0) {\r\n pageToPush.push('success');\r\n } else {\r\n pageToPush.push(\r\n $('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText,\r\n 'error',\r\n 'not set',\r\n );\r\n }\r\n virtualPagePush(...pageToPush);\r\n }\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancel = cancel;\r\n vm.clearForm = clearForm;\r\n vm.exportCSV = exportCSV;\r\n vm.isSet = isSet;\r\n vm.submitForm = submitForm;\r\n vm.setTab = setTab;\r\n vm.sortByColumn = sortByColumn;\r\n vm.activateDetails = activateDetails;\r\n vm.capitalizeName = capitalizeName;\r\n vm.validateSearchCriteria = validateSearchCriteria;\r\n vm.onClickAdvancedSearch = onClickAdvancedSearch;\r\n vm.attributePush = attributePush;\r\n vm.sendVirtualPagePushSubmit = sendVirtualPagePushSubmit;\r\n vm.sendVirtualPagePushResult = sendVirtualPagePushResult;\r\n vm.sendVirtualPagePushDetails = sendVirtualPagePushDetails;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.updateCustomerFormData = updateCustomerFormData;\r\n vm.updateStreetFormData = updateStreetFormData;\r\n vm.updatePhoneNumberFormData = updatePhoneNumberFormData;\r\n vm.updateAccountNumberFormData = updateAccountNumberFormData;\r\n vm.updateBusinessFormData = updateBusinessFormData;\r\n}\r\n","app.controller('PropertySearchController', PropertySearchController);\r\n\r\nPropertySearchController.$inject = [\r\n '$log',\r\n 'assetService',\r\n 'commonService',\r\n 'sessionStorageService',\r\n '$scope',\r\n 'thirdPartySearchProperty',\r\n '$rootScope',\r\n 'TPSCSVService',\r\n 'dataModelsDTOProductsAndServices',\r\n 'commongaTaggingService',\r\n 'genericHelperService',\r\n 'apiConfigService',\r\n 'componentStateHandler',\r\n];\r\n\r\nfunction PropertySearchController(\r\n $log,\r\n assetService,\r\n commonService,\r\n sessionStorageService,\r\n $scope,\r\n thirdPartySearchProperty,\r\n $rootScope,\r\n csvExportService,\r\n dataModelsDTOProductsAndServices,\r\n commongaTaggingService,\r\n genericHelperService,\r\n apiConfigService,\r\n componentStateHandler,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const fileName = 'PropertySearchResults';\r\n const pageCase = 'property';\r\n const noDataFoundErrorMessage = 'Sorry! We are unable to find any results. Please try again.';\r\n const _kwValue = assetService.strings.VALUE;\r\n const MAX_RECORDS = 999;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.message = null;\r\n vm.orderBy = 'Name';\r\n vm.orderPos = 0;\r\n vm.sortAsc = true;\r\n vm.tab = 1;\r\n vm.noDataFound = false;\r\n vm.showResults = false;\r\n vm.disableAdvancedSearch = false;\r\n vm.submitBtnDisabled = true;\r\n vm.enableBackToPrevButton = false;\r\n vm.isMaxResults = false;\r\n vm.form = {\r\n address: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n };\r\n vm.searchPageItems = [\r\n { value: 10, text: 10 },\r\n { value: 25, text: 25 },\r\n { value: 50, text: 50 },\r\n { value: 100, text: 100 },\r\n { value: 1000, text: 1000 },\r\n ];\r\n vm.minusTableHeaders = [\r\n {\r\n column: 'customerBillingName',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'customerLastName',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'customerFirstName',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'streetAddress1',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'streetAddress2',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'city',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'state',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'zipCode',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'accountNumber',\r\n sortAsc: true,\r\n },\r\n {\r\n column: 'accountStatus',\r\n sortAsc: true,\r\n },\r\n ];\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancel = cancel;\r\n vm.isSet = isSet;\r\n vm.clearForm = clearForm;\r\n vm.exportCSV = exportCSV;\r\n vm.submitForm = submitFormNoParse;\r\n vm.setTab = setTab;\r\n vm.sortByColumn = sortByColumn;\r\n vm.activateDetails = activateDetails;\r\n vm.capitalizeName = capitalizeName;\r\n vm.attributePush = attributePush;\r\n vm.virtualPagePush = virtualPagePush;\r\n vm.validateSearchCriteria = validateSearchCriteria;\r\n vm.sendVirtualPagePushResult = sendVirtualPagePushResult;\r\n vm.printData = printData;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function activateDetails(item) {\r\n attributePush(\r\n `workFlow:${$('#tpst-property-gat').attr('businessfunction')}`,\r\n `headline:${$('#tpst-property-gat').attr('headline')}`,\r\n `buttonText:${$('#tpst-propertysearchresults-gat').attr('detailsbuttonlabel')}`,\r\n );\r\n virtualPagePush(\r\n $('#tpst-property-gat').attr('businessfunction'),\r\n $('#tpst-property-gat').attr('headline'),\r\n $('#tpst-propertysearchresults-gat').attr('detailsbuttonlabel'),\r\n );\r\n $rootScope.searchType = 2;\r\n $scope.$emit('nextStep', `viewDetails?AccountNumber=${item.redirectAccountNumber}`);\r\n }\r\n\r\n function cancel() {\r\n clearForm();\r\n $scope.$emit('nextStep', 'home');\r\n }\r\n\r\n function clearSessions() {\r\n // eslint-disable-next-line no-underscore-dangle\r\n sessionStorageService.delete(assetService.storageKeys.tpstSearchCriteria);\r\n }\r\n\r\n function clearForm() {\r\n if (vm.addressSearchForm) {\r\n vm.addressSearchForm.$setPristine();\r\n vm.addressSearchForm.$setUntouched();\r\n }\r\n vm.searchResults = [];\r\n vm.showResults = false;\r\n vm.noDataFound = false;\r\n vm.form = {\r\n address: null,\r\n houseNo: null,\r\n street: null,\r\n unit: null,\r\n city: null,\r\n state: null,\r\n zipCode: null,\r\n };\r\n\r\n vm.submitBtnDisabled = true;\r\n clearSessions();\r\n }\r\n\r\n function exportCSV() {\r\n attributePush(\r\n `workFlow:${$('#tpst-property-gat').attr('businessfunction')}`,\r\n `headline:${$('#tpst-property-gat').attr('headline')}`,\r\n `buttonText:${$('#tpst-propertysearchresults-gat').attr('exportlabel')}`,\r\n );\r\n csvExportService.exportToCSV(pageCase, vm.searchResults, fileName);\r\n }\r\n\r\n function capitalizeName(name) {\r\n return dataModelsDTOProductsAndServices.transformName(name);\r\n }\r\n\r\n function sortByColumn(value) {\r\n vm.orderBy = vm.minusTableHeaders[value].column;\r\n vm.orderPos = value;\r\n vm.minusTableHeaders[value].sortAsc = !vm.minusTableHeaders[value].sortAsc;\r\n vm.sortAsc = vm.minusTableHeaders[value].sortAsc;\r\n }\r\n\r\n function validateSearchCriteria() {\r\n if (vm.form.street && vm.form.city && vm.form.state) {\r\n vm.submitBtnDisabled = false;\r\n } else if (vm.form.street && vm.form.zipCode) {\r\n vm.submitBtnDisabled = false;\r\n } else {\r\n vm.submitBtnDisabled = true;\r\n }\r\n }\r\n\r\n function virtualPagePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.virtualPagePush(arrayElements);\r\n }\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n function setFormSessions(formData) {\r\n sessionStorageService.set(assetService.storageKeys.tpstSearchCriteria, formData);\r\n }\r\n\r\n function getThirdPartySearchProperty(data) {\r\n vm.searchResults = [];\r\n return thirdPartySearchProperty.sitecore.propertySearch(data).then(\r\n (result) => {\r\n if (!result) {\r\n componentStateHandler.failedState(vm);\r\n } else if (result.MessageList.ReplyCode === 'ERROR') {\r\n vm.noDataFound = true;\r\n attributePush(\r\n `workFlow:error ${$('#tpst-property-gat').attr('businessFunction')}`,\r\n 'returnCode:not set',\r\n `endpoint:${apiConfigService.post.thirdPartySearchProperty()}`,\r\n `msgHeader:${noDataFoundErrorMessage}`,\r\n `headline:${$('#tpst-property-gat').attr('headLine')}`,\r\n );\r\n vm.message = noDataFoundErrorMessage;\r\n $scope.$emit('loadingSpinner', false);\r\n } else {\r\n vm.noDataFound = false;\r\n $scope.rowLimit = 10;\r\n vm.startingRecord = 1;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.currentPage = 0;\r\n vm.isMaxResults = result.MessageList.IsMoreData && result.Records.length === MAX_RECORDS;\r\n setFormSessions(vm.form);\r\n vm.searchResults = _.map(result.Records, (record) => {\r\n const isNonReg = record.SrcSysCode === 'NR';\r\n const isMidWest = record.PremiseState === 'IN'\r\n || record.PremiseState === 'OH'\r\n || record.PremiseState === 'KY';\r\n return {\r\n customerBillingName: record.CustomerName.trim()\r\n ? record.CustomerName.trim()\r\n : record.OrgName,\r\n customerLastName: record.BP_Last_Name,\r\n customerFirstName: record.BP_First_Name,\r\n streetAddress1: `${record.PremiseHouseNum} ${record.PremiseStreet}`,\r\n streetAddress2: record.PremiseUnit,\r\n city: record.PremiseCity,\r\n state: record.PremiseState,\r\n zipCode: record.PremiseZipCode,\r\n accountNumber: (isNonReg && isMidWest) ? '' : record.AccountNumber,\r\n accountStatus: record.Status,\r\n redirectAccountNumber: record.AccountNumber,\r\n };\r\n });\r\n }\r\n sendVirtualPagePushResult();\r\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function printData() {\r\n attributePush(\r\n `workFlow:${$('#tpst-property-gat').attr('businessfunction')}`,\r\n `headline:${$('#tpst-property-gat').attr('headline')}`,\r\n `buttonText:${$('#tpst-propertysearchresults-gat').attr('printlabel')}`,\r\n );\r\n window.print();\r\n }\r\n\r\n function fnChangeRowLimit(rowLimit) {\r\n $scope.rowLimit = rowLimit.value;\r\n vm.currentPage = 0;\r\n vm.endingRecord = $scope.rowLimit;\r\n vm.startingRecord = 1;\r\n vm.totalPages = Math.ceil(vm.searchResults.length / $scope.rowLimit);\r\n }\r\n vm.fnChangeRowLimit = fnChangeRowLimit;\r\n\r\n function fnPreviousRecordsShow() {\r\n vm.currentPage -= 1;\r\n vm.startingRecord -= $scope.rowLimit;\r\n vm.endingRecord = vm.startingRecord + $scope.rowLimit - 1;\r\n }\r\n vm.PreviousRecordsShow = fnPreviousRecordsShow;\r\n\r\n function fnNextRecordsShow() {\r\n vm.startingRecord = $scope.rowLimit + vm.startingRecord;\r\n vm.currentPage += 1;\r\n vm.endingRecord = vm.currentPage + 1 === vm.totalPages\r\n ? vm.searchResults.length\r\n : vm.startingRecord + $scope.rowLimit - 1;\r\n }\r\n vm.NextRecordsShow = fnNextRecordsShow;\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n function submitFormNoParse() {\r\n vm.showResults = false;\r\n $scope.$emit('loadingSpinner', true);\r\n vm.noDataFound = false;\r\n\r\n const data = {\r\n houseNo: vm.form.houseNo,\r\n street: vm.form.street || null,\r\n unit: vm.form.floor ? vm.form.floor.toUpperCase() : null,\r\n city: vm.form.city || null,\r\n zipCode: vm.form.zipCode || null,\r\n state: vm.form.state || null,\r\n };\r\n\r\n getThirdPartySearchProperty(data).then(\r\n (result) => {\r\n $scope.$emit('loadingSpinner', false);\r\n\r\n if (!vm.noDataFound) {\r\n vm.showResults = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function submitForm() {\r\n vm.showResults = false;\r\n $scope.$emit('loadingSpinner', true);\r\n vm.noDataFound = false;\r\n let parsed = null;\r\n let addr = '';\r\n\r\n if (vm.form.street) {\r\n addr += vm.form.street;\r\n }\r\n if (vm.form.floor) {\r\n addr += ` ${vm.form.floor}`;\r\n }\r\n addr += ',';\r\n if (vm.form.city) {\r\n addr += ` ${vm.form.city}`;\r\n }\r\n if (vm.form.state) {\r\n addr += ` ${vm.form.state}`;\r\n }\r\n if (vm.form.zipCode) {\r\n addr += ` ${vm.form.zipCode}`;\r\n }\r\n\r\n parsed = parseAddress.parseLocation(addr);\r\n\r\n let unit = null;\r\n if (parsed.sec_unit_type) {\r\n unit = `${parsed.sec_unit_type} ${parsed.sec_unit_num}`;\r\n }\r\n\r\n let street = null;\r\n if (parsed.prefix && parsed.type) {\r\n street = `${parsed.prefix} ${parsed.street} ${parsed.type}`;\r\n } else if (parsed.prefix && !parsed.type) {\r\n street = `${parsed.prefix} ${parsed.street}`;\r\n } else if (!parsed.prefix && parsed.type) {\r\n street = `${parsed.street} ${parsed.type}`;\r\n } else {\r\n street = parsed.street;\r\n }\r\n\r\n const data = {\r\n houseNo: parsed.number,\r\n street: street || null,\r\n unit: unit ? unit.toUpperCase() : null,\r\n city: parsed.city || vm.form.city,\r\n state: parsed.state || vm.form.state,\r\n zipCode: parsed.zip || vm.form.zipCode,\r\n };\r\n\r\n getThirdPartySearchProperty(data).then(\r\n (result) => {\r\n $scope.$emit('loadingSpinner', false);\r\n\r\n if (!vm.noDataFound) {\r\n vm.showResults = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setStateField() {\r\n if (vm.form.state !== '') {\r\n vm.selectStatesList = genericHelperService.setSelectedProp(\r\n vm.selectStatesList,\r\n _kwValue,\r\n vm.form.state,\r\n );\r\n vm.submitBtnDisabled = false;\r\n }\r\n }\r\n function setTab(tabId) {\r\n vm.tab = tabId;\r\n }\r\n\r\n function load() {\r\n if ($rootScope.enableBacktoPrevBtn) {\r\n vm.enableBackToPrevButton = true;\r\n } else {\r\n vm.enableBackToPrevButton = false;\r\n }\r\n\r\n const formData = sessionStorageService.get(assetService.storageKeys.tpstSearchCriteria);\r\n if (formData) {\r\n vm.form = formData;\r\n setStateField();\r\n // submitForm();\r\n submitFormNoParse();\r\n }\r\n $scope.$emit('loadingSpinner', false);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n vm.selectStatesList = [\r\n { value: 'FL', text: 'Florida' },\r\n { value: 'IN', text: 'Indiana' },\r\n { value: 'KY', text: 'Kentucky' },\r\n { value: 'NC', text: 'North Carolina' },\r\n { value: 'OH', text: 'Ohio' },\r\n { value: 'SC', text: 'South Carolina' },\r\n ];\r\n load();\r\n };\r\n\r\n init();\r\n\r\n function sendVirtualPagePushResult() {\r\n const pageToPush = [\r\n $('#tpst-property-gat').attr('businessFunction'),\r\n $('#tpst-property-gat').attr('headLine'),\r\n ];\r\n if (!vm.noDataFound) {\r\n pageToPush.push('success');\r\n } else {\r\n pageToPush.push(\r\n $('.Third-Party-Search__footer button[type=\"submit\"]')[0].innerText,\r\n 'error',\r\n 'not set',\r\n );\r\n }\r\n virtualPagePush(...pageToPush);\r\n }\r\n}\r\n","/* eslint-disable no-magic-numbers */\r\napp.controller('ThirdPartySearchViewDetailsController', ThirdPartySearchViewDetailsController);\r\nThirdPartySearchViewDetailsController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'thirdPartySearchDetails',\r\n '$state',\r\n '$stateParams',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n];\r\n\r\nfunction ThirdPartySearchViewDetailsController(\r\n $log,\r\n $scope,\r\n assetService,\r\n thirdPartySearchDetails,\r\n $state,\r\n $stateParams,\r\n $rootScope,\r\n commongaTaggingService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.details = {\r\n customer: {},\r\n account: {},\r\n premise: {},\r\n meter: [],\r\n serviceAgreement: [],\r\n usage: {},\r\n eepp: {},\r\n };\r\n vm.isLoaded = false;\r\n vm.pageName = '';\r\n vm.showDetails = [];\r\n vm.noData = false;\r\n\r\n const GAS = 'gas';\r\n /** Watchers */\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n function onClickBackToResults() {\r\n if (vm.tab === 1) {\r\n $scope.$emit('nextStep', 'customerSearch');\r\n } else {\r\n $scope.$emit('nextStep', 'propertySearch');\r\n }\r\n }\r\n\r\n function checkNullFields(data) {\r\n const valueArray = Object.values(data);\r\n let hideDetails = true;\r\n for (let index = 0; index < valueArray.length; index += 1) {\r\n if (valueArray[index]) {\r\n hideDetails = false;\r\n break;\r\n }\r\n }\r\n return hideDetails;\r\n }\r\n\r\n function addSpaceBetweenWord(word) {\r\n // inp => AccountZIP\r\n // out => Account ZIP\r\n let answer = '';\r\n let curLetter = '';\r\n let prevLetter = '';\r\n const startFromSecondLetter = 1;\r\n for (let index = startFromSecondLetter; index < word.length; index += 1) {\r\n prevLetter = word[index - startFromSecondLetter];\r\n curLetter = word[index];\r\n // if previous letter is lowercase and next letter is upper case then add a space\r\n if (prevLetter === prevLetter.toLowerCase() && curLetter === curLetter.toUpperCase()) {\r\n answer += ' ';\r\n }\r\n answer += curLetter;\r\n }\r\n return word[0] + answer;\r\n }\r\n\r\n function getCustomerDetails(result) {\r\n return {\r\n Name: result.CustomerName,\r\n NamePrefix: result.NamePrefix,\r\n FirstName: result.FirstName,\r\n MiddleName: result.MiddleName,\r\n LastName: result.LastName,\r\n DoingBusinessAs: result.DoingBusinessAs,\r\n AreaCode:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].AreaCode\r\n : null,\r\n PhoneNumber:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].TelephoneNumber\r\n : null,\r\n PhoneType:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].TelephoneTypeCode\r\n : null,\r\n // GlobalOptOutIndicator: (result.ContractAccountPreferenceArray.results.length > 0 ? result.ContractAccountPreferenceArray.results[0].OptOutType : null),\r\n SourceSystemCode: result.SrcSysCd,\r\n BusinessPartnerID: result.BPID,\r\n GenerationID: result.GenID,\r\n };\r\n }\r\n\r\n function getAccountDetails(result) {\r\n return {\r\n AccountNumber: result.AccountNumber,\r\n AccountHUBID: result.AccountHUBID,\r\n StatusDescription: result.AccountStatusDescription,\r\n StatusCode: result.AccountStatusCode,\r\n StatusEffectiveDate: result.AccountStatusEffectiveDate,\r\n ActiveDate: result.ActiveDate,\r\n SourceSystemCode: result.SrcSysCd,\r\n AccountType: result.AccountType,\r\n AccountAddressLine1: result.AccountAddressLine1,\r\n AccountAddressLine2: result.AccountAddressLine2,\r\n AccountAddressLine3: result.AccountAddressLine3,\r\n AccountAddressLine4: result.AccountAddressLine4,\r\n AccountCity: result.AccountCity,\r\n AccountState: result.AccountState,\r\n AccountZIP: result.AccountZipCode,\r\n Country: result.Country,\r\n PreferredLanguage: result.PreferredLanguage,\r\n UniversalMarketingConsent: result.UniversalMarketingConsent,\r\n UniversalMarketingConsentVersion: result.UMCVersion,\r\n PowerManager: result.PowerManager,\r\n CurrentYearPowerManagerIncentiveAccount: result.CurrYrPwrMgtIncvAmt,\r\n };\r\n }\r\n\r\n function getPremiseDetails(result) {\r\n return {\r\n SourcePremiseID: result.SrcPremiseId,\r\n PremiseAddressLine1: result.PremiseAddressLine1,\r\n PremiseAddressLine2: result.PremiseAddressLine2,\r\n PremiseAddressLine3: result.PremiseAddressLine3,\r\n PremiseAddressLine4: result.PremiseAddressLine4,\r\n PremiseCity: result.PremiseCity,\r\n PremiseState: result.PremiseState,\r\n PremiseZIPCode: result.PremiseZipCode,\r\n EffectiveDate: result.EffectiveDate,\r\n TaxCounty: result.TaxCounty,\r\n Jurisdiction: result.Jurisdiction,\r\n RenterIndicator: result.RenterIndicator,\r\n LandlordName: result.LandlordName,\r\n PremiseType: result.PremiseType,\r\n TelephoneTypeCode:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].TelephoneTypeCode\r\n : null,\r\n AreaCode:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].AreaCode\r\n : null,\r\n TelephoneNumber:\r\n result.TelephoneArray\r\n && result.TelephoneArray.results\r\n && result.TelephoneArray.results.length > 0\r\n ? result.TelephoneArray.results[0].TelephoneNumber\r\n : null,\r\n };\r\n }\r\n\r\n function getServiceAgreementDetails(result) {\r\n vm.details.serviceAgreement.push({\r\n SourceServicePointID: result.SrcServicePointID,\r\n TypeCode: result.TypeCode,\r\n TypeDescription: result.TypeDescription,\r\n StatusCode: result.StatusCode,\r\n StatusDescription: result.StatusDescription,\r\n StatusEffectiveDate: result.StatusEffectiveDate,\r\n ActiveDate: result.ActiveDate,\r\n EndDate: result.EndDate,\r\n PriceName: result.PriceName,\r\n PriceScheduleName: result.PriceScheduleName,\r\n PriceEffectiveDate: result.PriceEffectiveDate,\r\n RateScheduleCode: result.RateScheduleCode,\r\n });\r\n }\r\n\r\n function getMeterDetails(result) {\r\n if (!result.MeterArray || !result.MeterArray.results) return;\r\n\r\n for (let index = 0; index < result.MeterArray.results.length; index += 1) {\r\n const meterObject = result.MeterArray.results[index];\r\n vm.details.meter.push({\r\n SourceMeterId: meterObject.SrcMtrId,\r\n SerialNumber: meterObject.SerialNumber,\r\n ManufacturerTypeCode: meterObject.ManufacturerTypeCode,\r\n ManufacturerTypeName: meterObject.ManufacturerName,\r\n MeterStatus: meterObject.MeterStatus,\r\n SurgeInstalled: meterObject.SurgeInstalled,\r\n });\r\n }\r\n }\r\n\r\n function getUsageDetails(result) {\r\n if (!result.ServicePointArray || !result.ServicePointArray.results) return null;\r\n\r\n const electricUsages = [];\r\n const gasUsages = [];\r\n\r\n result.ServicePointArray?.results?.forEach((service) => {\r\n if (service.MeterArray && service.MeterArray.results) {\r\n service.MeterArray?.results?.forEach((meter) => {\r\n if (meter.UsageArray && meter.UsageArray.results) {\r\n if (service.TypeDescription?.toLowerCase().includes(GAS)) { \r\n gasUsages.push(...meter.UsageArray.results);\r\n } else {\r\n electricUsages.push(...meter.UsageArray.results);\r\n }\r\n }\r\n });\r\n } \r\n });\r\n\r\n electricUsages.sort(\r\n (a, b) =>\r\n (a.TransactionDate ? new Date(a.TransactionDate) : new Date()) -\r\n (b.TransactionDate ? new Date(b.TransactionDate) : new Date()),\r\n );\r\n gasUsages.sort(\r\n (a, b) =>\r\n (a.TransactionDate ? new Date(a.TransactionDate) : new Date()) -\r\n (b.TransactionDate ? new Date(b.TransactionDate) : new Date()),\r\n );\r\n return [...electricUsages, ...gasUsages];\r\n }\r\n\r\n function getEeppDetails(result) {\r\n if (!result.EEParticipationArray || !result.EEParticipationArray.results) return null;\r\n let nonDateProducts = [];\r\n let listProducts = [];\r\n\r\n result.EEParticipationArray?.results?.forEach(product => {\r\n if (product.ProductEnrollmentStartDate) {\r\n listProducts.push({\r\n ProductEnrollmentStartDate: product.ProductEnrollmentStartDate,\r\n ProgramCancelDate: product.ProductCancelDate,\r\n ProgramMeasureID: product.ProgMeasId,\r\n ProgramMeasureName: product.MeasNm,\r\n PoductCode: product.ProductCode,\r\n ProductDescription: product.ProductsDescription,\r\n EnrollmentStatus: product.EnrollmentStatus,\r\n Quantity: product.Qty,\r\n });\r\n } else {\r\n nonDateProducts.push({\r\n ProductEnrollmentStartDate: product.ProductEnrollmentStartDate,\r\n ProgramCancelDate: product.ProductCancelDate,\r\n ProgramMeasureID: product.ProgMeasId,\r\n ProgramMeasureName: product.MeasNm,\r\n PoductCode: product.ProductCode,\r\n ProductDescription: product.ProductsDescription,\r\n EnrollmentStatus: product.EnrollmentStatus,\r\n Quantity: product.Qty,\r\n });\r\n }\r\n });\r\n listProducts.sort((a, b) => (new Date(b.ProductEnrollmentStartDate) - new Date(a.ProductEnrollmentStartDate)));\r\n listProducts.push(...nonDateProducts);\r\n return listProducts;\r\n }\r\n\r\n function getThirdPartySearchDetails(data) {\r\n vm.hideAcctDetails = true;\r\n vm.hideCustDetails = true;\r\n vm.hidepremiseDetails = true;\r\n vm.hideserviceAgreementDetails = true;\r\n vm.hidemeterDetails = true;\r\n vm.hideusageDetails = true;\r\n vm.hideeeppDetails = true;\r\n return thirdPartySearchDetails.sitecore.thirdPartySearchDetails(data).then(\r\n (result) => {\r\n if (result !== '') {\r\n _.forEach(result.results, (result) => {\r\n vm.details.customer = getCustomerDetails(result);\r\n vm.hideCustDetails = checkNullFields(vm.details.customer);\r\n\r\n vm.details.account = getAccountDetails(result);\r\n vm.hideAcctDetails = checkNullFields(vm.details.account);\r\n\r\n vm.details.premise = getPremiseDetails(result);\r\n vm.hidepremiseDetails = checkNullFields(vm.details.premise);\r\n\r\n vm.details.transformer = {\r\n Longitude: result.Longitude,\r\n Latitude: result.Latitude,\r\n };\r\n\r\n // single loop for both service agreement and meter details\r\n if (result.ServicePointArray && result.ServicePointArray.results) {\r\n for (\r\n let index = 0;\r\n index < result.ServicePointArray.results.length;\r\n index += 1\r\n ) {\r\n getServiceAgreementDetails(result.ServicePointArray.results[index]);\r\n getMeterDetails(result.ServicePointArray.results[index]);\r\n }\r\n }\r\n\r\n if (vm.details.serviceAgreement) {\r\n for (let index = 0; index < vm.details.serviceAgreement.length; index += 1) {\r\n if (!checkNullFields(vm.details.serviceAgreement[index])) {\r\n vm.hideserviceAgreementDetails = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (vm.details.meter) {\r\n for (let index = 0; index < vm.details.meter.length; index += 1) {\r\n if (!checkNullFields(vm.details.meter[index])) {\r\n vm.hidemeterDetails = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n vm.details.usage = getUsageDetails(result);\r\n\r\n if (vm.details.usage) {\r\n for (let index = 0; index < vm.details.usage.length; index += 1) {\r\n if (!checkNullFields(vm.details.usage[index])) {\r\n vm.hideusageDetails = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n vm.details.eepp = getEeppDetails(result);\r\n if (vm.details.eepp) {\r\n for (let index = 0; index < vm.details.eepp.length; index += 1) {\r\n if (!checkNullFields(vm.details.eepp[index])) {\r\n vm.hideeeppDetails = false;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (\r\n vm.hideCustDetails\r\n && vm.hideAcctDetails\r\n && vm.hidepremiseDetails\r\n && vm.hideserviceAgreementDetails\r\n && vm.hidemeterDetails\r\n && vm.hideusageDetails\r\n && vm.hideeeppDetails\r\n ) {\r\n vm.noData = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function load() {\r\n vm.isLoaded = false;\r\n $scope.$emit('loadingSpinner', true);\r\n vm.tab = $rootScope.searchType;\r\n vm.pageName = vm.tab !== 1 ? 'Property' : 'Customer';\r\n const { accountNumber } = $stateParams;\r\n\r\n getThirdPartySearchDetails({ accountNumber }).then(\r\n () => {\r\n vm.isLoaded = true;\r\n $scope.$emit('loadingSpinner', false);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function attributePush(...theArguments) {\r\n const arrayElements = theArguments;\r\n commongaTaggingService.attributePush(arrayElements);\r\n }\r\n\r\n const expand = function (data, event) {\r\n if (!angular.element(event.currentTarget.parentElement).hasClass('active')) {\r\n const search = vm.tab !== 1\r\n ? $('#tpst-viewdetails-gat').attr('propertyHeadline')\r\n : $('#tpst-viewdetails-gat').attr('customerHeadline');\r\n if (data === 'firstTab') {\r\n data = vm.tab !== 1\r\n ? $('#tpst-viewdetails-gat').attr('propertyDetailsLabel')\r\n : $('#tpst-viewdetails-gat').attr('customerDetailsLabel');\r\n }\r\n attributePush(\r\n `workFlow:${$('#tpst-viewdetails-gat').attr('businessFunction')}`,\r\n 'buttonText:expand',\r\n `headline: ${search}`,\r\n `addedSpec: ${data}`,\r\n );\r\n }\r\n };\r\n\r\n function sendVirtualPagePushDetailsExpansion(eventAction) {\r\n const eventCategory = 'third_party_search';\r\n const fireEvent = 'fire-event';\r\n const eventLabel = vm.tab !== 1 ? 'property-search' : 'customer-search';\r\n $rootScope.attributePush(eventCategory, eventAction, eventLabel, fireEvent);\r\n }\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.sendVirtualPagePushDetailsExpansion = sendVirtualPagePushDetailsExpansion;\r\n vm.onClickBackToResults = onClickBackToResults;\r\n vm.attributePush = attributePush;\r\n vm.expand = expand;\r\n vm.addSpaceBetweenWord = addSpaceBetweenWord;\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FormToPay', FormToPay);\r\n\r\nFormToPay.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state',\r\n '$scope',\r\n '$sce',\r\n '$rootScope',\r\n '$filter',\r\n 'manageBankAccountsForPrepaidService',\r\n];\r\n\r\nfunction FormToPay(\r\n sessionStorageService,\r\n assetService,\r\n $state,\r\n $scope,\r\n $sce,\r\n $rootScope,\r\n $filter,\r\n manageBankAccountsForPrepaidService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n $rootScope.apiValidation = false;\r\n let _bankAccountRemoveResponse;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.activeAccountsDetails = false;\r\n vm.actualPath = 0;\r\n vm.actualStep = 0;\r\n vm.activeTab = 1;\r\n vm.balanceStorage = {};\r\n vm.accountSelected = {};\r\n vm.billsQuantity = 0;\r\n vm.submitButtonText = 'SUBMIT PAYMENT';\r\n const _bankAccountsOriginal = false;\r\n // vm.cancelPath = assetService.balanceRouteStates.BILLS;\r\n vm.cyclePath = [\r\n // {\r\n // path: assetService.balanceRouteStates.PAYMENT_DATE,\r\n // change: true,\r\n // pathAlt: '',\r\n // },\r\n // {\r\n // path: assetService.balanceRouteStates.PAYMENT_AMOUNT,\r\n // change: true,\r\n // pathAlt: '',\r\n // },\r\n // {\r\n // path: assetService.balanceRouteStates.PAYMENT_METHOD,\r\n // change: true,\r\n // pathAlt: '',\r\n // },\r\n {\r\n path: assetService.balanceRouteStates.REVIEW_PAY,\r\n change: true,\r\n pathAlt: '',\r\n mainBtn: vm.submitButtonText,\r\n },\r\n ];\r\n vm.mainBtnActivate = false;\r\n vm.reviewPay = true;\r\n vm.showHide = {\r\n singleAccount: false,\r\n isNewAmount: false,\r\n };\r\n vm.multipleAccount = false;\r\n vm.steps = [\r\n // assetService.balanceStepsName.PAYMENT_DATE,\r\n // assetService.balanceStepsName.PAYMENT_AMOUNT,\r\n // assetService.balanceStepsName.PAYMENT_METHOD,\r\n assetService.balanceStepsName.REVIEW_PAY,\r\n ];\r\n vm.stepTitle = 'Total Amount Due';\r\n vm.FormValidationStatus = '';\r\n vm.FormErrMsg = false;\r\n /* --------------Function Declarations-----------------------*/\r\n vm.activateAccountsDetails = activateAccountsDetails;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.nextStep = nextStep;\r\n vm.onCancel = onCancel;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function nextStep() {\r\n $scope.$broadcast(assetService.balanceEvents.SAVE_STEPS, vm.moveSteps);\r\n }\r\n\r\n function saveSteps() {\r\n $scope.$broadcast(assetService.balanceEvents.SAVE_STEPS, true);\r\n }\r\n\r\n function newStep(data) {\r\n vm.actualStep = data.step;\r\n vm.actualPath = data.step;\r\n }\r\n\r\n function onCancel(path) {\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n if (vm.balanceStorage.accountId && vm.balanceStorage.savePaymentInfo !== undefined && !vm.balanceStorage.savePaymentInfo) {\r\n const newParamData = {\r\n businessPartnerId: vm.accountSelected.primaryBp,\r\n bankDescription: '',\r\n accountNumber: '',\r\n routingNumber: '',\r\n accountType: '',\r\n requestedBy: vm.balanceStorage.currentUser.emailId,\r\n action:\r\n assetService.serviceActions.manageBankAccountsForPrepaid.DELETE,\r\n bankAccountId: vm.balanceStorage.accountId,\r\n };\r\n return manageBankAccountsForPrepaidService.sitecore.manageBankAccountsForPrepaid(newParamData)\r\n .then(\r\n (result) => {\r\n _bankAccountRemoveResponse = result.d.ManageBankAcc_NAV;\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n },\r\n (error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n },\r\n );\r\n }\r\n $rootScope.$broadcast('cancelling', true);\r\n window.location.href = path;\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n let formattedAmount = [];\r\n if (Number.isInteger(amount)) {\r\n formattedAmount[0] = amount;\r\n formattedAmount[1] = '00';\r\n } else {\r\n formattedAmount = String(amount).split('.');\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] = formattedAmount[1].length === 1 ? `${formattedAmount[1]}0` : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n return $sce.trustAsHtml(\r\n `$${formattedIntegerAmount}.${formattedAmount[1]}`,\r\n );\r\n }\r\n\r\n function activateAccountsDetails() {\r\n if (vm.activeAccountsDetails === false) {\r\n vm.activeAccountsDetails = true;\r\n } else {\r\n vm.activeAccountsDetails = false;\r\n }\r\n }\r\n\r\n function removeNewBankAccount(data) {\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(data)\r\n .then(\r\n (result) => {\r\n _bankAccountRemoveResponse = result.d.ManageBankAcc_NAV;\r\n },\r\n (error) => {\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n }\r\n\r\n $scope.$on(assetService.balanceEvents.SAVE_DATA, () => {\r\n saveSteps();\r\n });\r\n\r\n $scope.$on(assetService.balanceEvents.FORM_VALIDATION, () => {\r\n vm.FormValidationStatus = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n vm.FormErrMsg = vm.FormValidationStatus.ShowErrorForm;\r\n });\r\n\r\n $scope.$on(assetService.balanceEvents.CHANGE_STORAGE, () => {\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n\r\n if (vm.balanceStorage.newTotalAmount != vm.balanceStorage.totalAmount) {\r\n vm.showHide.isNewAmount = true;\r\n } else {\r\n vm.showHide.isNewAmount = false;\r\n }\r\n });\r\n\r\n $scope.$on(assetService.balanceEvents.SET_STEP, (event, data) => {\r\n newStep(data);\r\n });\r\n\r\n function load() {\r\n // Load sessionStorageService\r\n vm.conflictMessage = '';\r\n vm.messagePriority = '';\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n\r\n vm.accountSelected = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected;\r\n\r\n vm.msgCount = 0;\r\n vm.balanceStorage.selectedAccounts.forEach((element) => {\r\n vm.conflictMessage = element.message\r\n ? `${element.message} ${vm.conflictMessage}`\r\n : vm.conflictMessage;\r\n vm.messagePriority = element.messagePriority;\r\n if(element.messagePriority == 1000) {\r\n vm.msgCount += 1;\r\n }\r\n });\r\n vm.conflictMessage;\r\n\r\n /* if(vm.balanceStorage.selectedAccounts.length > 1) {\r\n vm.cancelPath = assetService.balanceRouteStates.BILLS;\r\n } else {\r\n vm.cancelPath = assetService.balanceRouteStates.HOW_TO_PAY;\r\n } */\r\n\r\n if (vm.balanceStorage.dateSelected !== undefined) {\r\n } else {\r\n vm.balanceStorage.dateSelected = {\r\n index: '0',\r\n };\r\n }\r\n\r\n if (vm.balanceStorage.newTotalAmount !== undefined) {\r\n if (vm.balanceStorage.newTotalAmount != vm.balanceStorage.totalAmount) {\r\n vm.showHide.isNewAmount = true;\r\n } else {\r\n vm.showHide.isNewAmount = false;\r\n }\r\n }\r\n\r\n if (vm.balanceStorage.billsQuantity < 2) {\r\n vm.showHide.singleAccount = true;\r\n } else {\r\n vm.showHide.singleAccount = true;\r\n }\r\n if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n vm.multipleAccount = true;\r\n }\r\n\r\n $state.go(assetService.balanceRouteStates.REVIEW_PAY);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n\r\n function generateAccountNumberLabel() {\r\n let stringToReturn = '';\r\n if (vm.balanceStorage.billsQuantity > 1) {\r\n stringToReturn = vm.balanceStorage.billsQuantity\r\n .toString()\r\n .concat('-accounts-selected');\r\n } else {\r\n stringToReturn = 'single-account-selected';\r\n }\r\n return stringToReturn;\r\n }\r\n\r\n function generateDateLabel() {\r\n let stringToReturn = '';\r\n switch (vm.balanceStorage.dateSelected.index) {\r\n case 0:\r\n stringToReturn = 'pay-now';\r\n break;\r\n case 1:\r\n stringToReturn = 'pay-on-due-date';\r\n break;\r\n case 2:\r\n stringToReturn = 'other-date';\r\n break;\r\n }\r\n return stringToReturn;\r\n }\r\n\r\n function generateAmountLabel() {\r\n let stringToReturn = 'how-much-would-you-like-to-pay-|-';\r\n switch (vm.balanceStorage.amountSelected) {\r\n case 0:\r\n stringToReturn = stringToReturn.concat('total-amount-due');\r\n break;\r\n case 1:\r\n stringToReturn = stringToReturn.concat('other-amount');\r\n break;\r\n }\r\n return stringToReturn;\r\n }\r\n function generateShareWarmth() {\r\n let stringToReturn = '';\r\n switch (vm.balanceStorage.programsContributions) {\r\n case undefined:\r\n stringToReturn = stringToReturn.concat('submit-payment');\r\n break;\r\n default:\r\n stringToReturn = stringToReturn.concat('share-the-warmth');\r\n break;\r\n }\r\n return stringToReturn;\r\n }\r\n\r\n function generateVirtualPagePushPaymentDate(error) {\r\n let push = '/vpv/authenticated/account-payment/pay-my-bill/';\r\n push = push\r\n .concat(generateAccountNumberLabel())\r\n .concat('/payment-date/when-would-you-like-to-pay-your-bill/')\r\n .concat(generateDateLabel());\r\n push = error ? push.concat('/error') : push.concat('/continue');\r\n return push;\r\n }\r\n\r\n function generateVirtualPagePushPaymentAmount(error) {\r\n let push = '/vpv/authenticated/account-payment/pay-my-bill/payment-amount/';\r\n push = push\r\n .concat(generateAmountLabel())\r\n .concat('/how-much-would-you-like-to-pay/')\r\n .concat(generateDateLabel());\r\n push = error ? push.concat('/error') : push.concat('/continue');\r\n return push;\r\n }\r\n\r\n function generateVirtualPagePushPaymentMethod(error) {\r\n let push = '/vpv/authenticated/account-payment/pay-my-bill/';\r\n push = push\r\n .concat(generateAmountLabel())\r\n .concat('/payment-method/which-bank-account-do-you-want-to-pay-with/');\r\n push = error ? push.concat('/error') : push.concat('/continue');\r\n return push;\r\n }\r\n\r\n function generateVirtualPagePushReviewPay(error) {\r\n let push = '/vpv/authenticated/account-payment/pay-my-bill/review-pay';\r\n push = push\r\n .concat(generateAmountLabel())\r\n .concat('/review-the-information-below/')\r\n .concat(generateShareWarmth());\r\n return push;\r\n }\r\n}\r\n","app.controller('PaymentAmount', PaymentAmount);\r\n\r\nPaymentAmount.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$rootScope',\r\n '$filter',\r\n '$sce',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction PaymentAmount(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $rootScope,\r\n $filter,\r\n $sce,\r\n commongaTaggingService,\r\n broadcastService,\r\n $modalInstance,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _toFixed = 2;\r\n $rootScope.apiValidation = false;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.acceptWarmth = false;\r\n vm.amountSection = false;\r\n vm.amountSelected = '';\r\n vm.balanceStorage = {};\r\n vm.bindedAmounts = [];\r\n vm.copySelectedAccounts = [];\r\n vm.dueAmount = 0;\r\n vm.newAmountsArray = [];\r\n vm.newTotalAmount = 0;\r\n vm.inputAmount = [];\r\n vm.balanceAmount = [];\r\n vm.paymentAmount = {};\r\n vm.reviewPay = false;\r\n vm.totalNoWarmth = 0;\r\n vm.warmthValue = 0;\r\n vm.negativeAmountSection = false;\r\n vm.multipleAmountInput = false;\r\n vm.guid = '';\r\n vm.disableSaveButton = false;\r\n vm.zeroDueAmount = false;\r\n vm.enableError = false;\r\n vm.amountToPay = undefined;\r\n vm.amountLength = undefined;\r\n vm.lengthError = [];\r\n vm.singleAccLength = false;\r\n vm.checkSaved = [];\r\n vm.checkSavedPayment = false;\r\n vm.amtCheck = [];\r\n vm.checkVal = false;\r\n vm.checkSingle = false;\r\n vm.checkLimit = undefined;\r\n vm.amtLimit = undefined;\r\n vm.amountCheck = false;\r\n vm.filterAmountCheck = false;\r\n vm.zeroAmountCounter = 0;\r\n vm.zeroAmountError = [];\r\n var amount = 0;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.formatNewAmounts = formatNewAmounts;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.sumAll = sumAll;\r\n vm.toggleSection = toggleSection;\r\n vm.nextStep = nextStep;\r\n vm.closeModal = closeModal;\r\n vm.changeAmount = changeAmount;\r\n vm.addValidation = addValidation;\r\n vm.submitOtherAmount = submitOtherAmount;\r\n vm.singleAmountCheck = singleAmountCheck;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function nextStep(value) {\r\n if (vm.newAmountsArray.length === 0) {\r\n if (vm.balanceStorage.newAmountsArray !== undefined) {\r\n vm.newAmountsArray = vm.balanceStorage.newAmountsArray;\r\n }\r\n }\r\n\r\n if (value) {\r\n // Run just when Next Step is True\r\n if (!vm.amountSelected) {\r\n vm.warmthValue = 0;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n vm.bindedAmounts = [];\r\n vm.totalNoWarmth = vm.newTotalAmount;\r\n }\r\n }\r\n\r\n vm.balanceStorage.shareWarmth = vm.warmthValue;\r\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\r\n vm.balanceStorage.amountSelected = vm.amountSelected;\r\n vm.balanceStorage.newAmounts = vm.bindedAmounts;\r\n vm.balanceStorage.totalNoWarmth = vm.totalNoWarmth;\r\n\r\n if (vm.amountSelected == '1') {\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (vm.bindedAmounts && vm.bindedAmounts.length > 0) {\r\n vm.balanceStorage.selectedAccounts[index].billAmount = isNaN(\r\n vm.bindedAmounts[index].charAt(0),\r\n )\r\n ? vm.bindedAmounts[index].substring(1).replace(/,/g, '')\r\n : vm.bindedAmounts[index];\r\n }\r\n });\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $rootScope.zeroDueFlag = false;\r\n }\r\n\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n\r\n function addValidation() {\r\n const value = isNaN(vm.bindedAmounts[0])\r\n ? Number(vm.bindedAmounts[0].substring(1).replace(/,/g, ''))\r\n : vm.bindedAmounts[0];\r\n if (value <= 0) {\r\n vm.enableError = true;\r\n } else {\r\n vm.enableError = false;\r\n }\r\n }\r\n\r\n function sumAll(warmth) {\r\n vm.newTotalAmount = 0;\r\n vm.totalNoWarmth = 0;\r\n vm.bindedAmounts.forEach(element => {\r\n if (element !== undefined && isNaN(element)) {\r\n if (isNaN(Number(element.charAt(0)))) {\r\n if (element.charAt(0) === '-') {\r\n vm.newTotalAmount += Number(element);\r\n } else {\r\n let sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n vm.newTotalAmount += Number(sub);\r\n }\r\n }\r\n } else {\r\n vm.newTotalAmount += Number(element);\r\n }\r\n });\r\n vm.totalNoWarmth = vm.newTotalAmount.toFixed(_toFixed);\r\n if (vm.acceptWarmth) {\r\n vm.newTotalAmount += vm.warmthValue;\r\n } else if (warmth === assetService.strings.WARMTH) {\r\n vm.warmthValue = 0;\r\n }\r\n vm.newTotalAmount = vm.newTotalAmount.toFixed(_toFixed);\r\n if (vm.newTotalAmount < vm.balanceStorage.totalAmount) {\r\n vm.balanceStorage.contributionForm = undefined;\r\n }\r\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\r\n }\r\n\r\n //Function to show error when length is greater than 6 for multiple accounts\r\n function submitOtherAmount(index, ident) {\r\n sumAll();\r\n vm.newAmountsArray[index] = {\r\n id: ident,\r\n bill: isNaN(vm.bindedAmounts[index].charAt(0))\r\n ? vm.bindedAmounts[index].substring(1).replace(/,/g, '')\r\n : vm.bindedAmounts[index],\r\n };\r\n vm.inputAmount[index] = vm.newAmountsArray[index].bill;\r\n let validateAmount = vm.inputAmount[index];\r\n vm.amountToPay = String(validateAmount).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.amtLimit) {\r\n vm.lengthError[index] = true;\r\n vm.checkSingle = true;\r\n }\r\n }\r\n\r\n function formatNewAmounts(index, ident) {\r\n sumAll();\r\n vm.newAmountsArray[index] = {\r\n id: ident,\r\n bill: isNaN(vm.bindedAmounts[index].charAt(0))\r\n ? vm.bindedAmounts[index].substring(1).replace(/,/g, '')\r\n : vm.bindedAmounts[index],\r\n balance: vm.balanceStorage.selectedAccounts[index].amount,\r\n };\r\n vm.inputAmount[index] = vm.newAmountsArray[index].bill;\r\n //In-line error check for <= zero Amount\r\n if (vm.newAmountsArray[index].bill <= 0) {\r\n vm.zeroAmountError[index] = true;\r\n } else {\r\n vm.zeroAmountError[index] = false;\r\n }\r\n\r\n //to remove the error message for multiple accounts\r\n if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n let validateAmount = vm.inputAmount[index];\r\n vm.amountToPay = String(validateAmount).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.checkLimit) {\r\n vm.lengthError[index] = true;\r\n } else {\r\n vm.lengthError[index] = false;\r\n }\r\n vm.checkSingle = _.filter(vm.lengthError, result => result === true);\r\n\r\n //to check if the amount entered is greater than due for multiple accounts\r\n vm.balanceAmount[index] = vm.newAmountsArray[index].balance;\r\n\r\n const fullBalance = Number(vm.balanceAmount[index]);\r\n const payAmount = Number(vm.inputAmount[index]);\r\n if (payAmount > fullBalance) {\r\n vm.checkSaved[index] = true;\r\n } else {\r\n vm.checkSaved[index] = false;\r\n }\r\n vm.filterAmt = _.filter(vm.checkSaved, result => result === true);\r\n sessionStorageService.set('filterAmountLength', vm.checkSaved);\r\n vm.amountCheck = vm.filterAmt.length > 0 ? true : false;\r\n sessionStorageService.set('lengthError', false);\r\n } else if (vm.balanceStorage.selectedAccounts.length == 1) {\r\n //to remove the error message for single accounts\r\n let checkAmount = vm.totalNoWarmth;\r\n vm.singleAmtToPay = String(checkAmount).split('');\r\n vm.singleAmtlength = vm.singleAmtToPay.length;\r\n if (vm.singleAmtlength > vm.checkLimit) {\r\n vm.singleAccLength = true;\r\n vm.checkSingle = true;\r\n } else {\r\n vm.singleAccLength = false;\r\n vm.checkSingle = false;\r\n }\r\n\r\n //to check if the amount entered is greater than due for single accounts\r\n const totalDueAmt = Number(vm.balanceStorage.totalAmount);\r\n const amtTotal = Number(vm.totalNoWarmth);\r\n if (totalDueAmt < amtTotal) {\r\n vm.checkSavedPayment = true;\r\n } else {\r\n vm.checkSavedPayment = false;\r\n }\r\n sessionStorageService.set('lengthError', false);\r\n }\r\n\r\n //Updating balanceStroage value for each amount change in modal\r\n if (\r\n vm.balanceStorage.newAmountsArray !== undefined &&\r\n vm.balanceStorage.newAmountsArray.length !== 0\r\n ) {\r\n vm.newAmountsArray.forEach((sElement, sIndex) => {\r\n if (sElement != null) {\r\n vm.balanceStorage.newAmountsArray.forEach((pElement, pIndex) => {\r\n if (pElement != null) {\r\n if (sElement.id === pElement.id) {\r\n pElement.bill = sElement.bill;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n vm.balanceStorage.newAmountsArray = vm.newAmountsArray;\r\n }\r\n\r\n vm.balanceStorage.contributionForm = undefined;\r\n vm.balanceStorage.selectedAccounts.forEach(element => {\r\n element.donationValue = 0;\r\n if (element.accountNumber === vm.newAmountsArray[index].id) {\r\n element.totalDonationAmount = (\r\n Number(vm.newAmountsArray[index].bill) + element.donationValue\r\n ).toFixed(_toFixed);\r\n }\r\n });\r\n vm.tempNewAmountsArray = _.filter(\r\n vm.inputAmount,\r\n item => item == undefined || item <= 0,\r\n );\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n const formattedAmount = String(amount).split('.');\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n return $sce.trustAsHtml(`$${formattedIntegerAmount}.${formattedAmount[1]}`);\r\n }\r\n\r\n function toggleSection(value) {\r\n //In-line error toggled off initially\r\n vm.zeroAmountError.forEach((sElement, sIndex) => {\r\n vm.zeroAmountError[sIndex] = false;\r\n });\r\n vm.radioBtnIndex = value;\r\n vm.enableError = false;\r\n vm.singleAccLength = false;\r\n if (value === 0) {\r\n vm.multipleAmountInput = false;\r\n vm.amountSection = false;\r\n vm.newTotalAmount = vm.balanceStorage.totalAmount;\r\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\r\n vm.totalNoWarmth = 0;\r\n vm.balanceStorage.contributionForm = undefined;\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n element.billAmount = element.amount;\r\n element.amount += '';\r\n vm.bindedAmounts[index] = 0;\r\n element.donationValue = 0;\r\n if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n element.totalDonationAmount =\r\n Number(element.billAmount) + Number(element.donationValue);\r\n } else {\r\n element.totalDonationAmount = 0;\r\n }\r\n });\r\n vm.newAmountsArray = [];\r\n vm.balanceStorage.newAmountsArray = [];\r\n vm.inputAmount = [];\r\n //nextStep();\r\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\r\n } else {\r\n vm.multipleAmountInput = true;\r\n vm.amountSection = true;\r\n vm.balanceStorage.contributionForm = undefined;\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n element.amount += '';\r\n element.donationValue = 0;\r\n });\r\n sumAll();\r\n }\r\n }\r\n\r\n //Function to show the error message when amount is greater then 6 for single accounts\r\n function singleAmountCheck() {\r\n let checkAmount = vm.totalNoWarmth;\r\n vm.singleAmtToPay = String(checkAmount).split('');\r\n vm.singleAmtlength = vm.singleAmtToPay.length;\r\n if (vm.singleAmtlength > vm.amtLimit) {\r\n vm.singleAccLength = true;\r\n vm.checkSingle = true;\r\n }\r\n }\r\n\r\n function changeAmount() {\r\n //To not SAVE, if 1 or more than 1 field is Zero or Empty only incase of Other Amount\r\n if (vm.amountSelected == '1') {\r\n vm.bindedAmounts.forEach((sElement, sIndex) => {\r\n //When the page loads for the first time with new account, the value in binded amounts array is not in string\r\n if (typeof sElement === 'string' || sElement instanceof String) {\r\n amount = isNaN(sElement.charAt(0))\r\n ? sElement.substring(1).replace(/,/g, '')\r\n : sElement;\r\n } else {\r\n amount = sElement;\r\n }\r\n //In-Line error check if the user does not enter any amount after page load and try to SAVE the page\r\n if (Number(amount) <= 0) {\r\n vm.zeroAmountCounter = vm.zeroAmountCounter + 1;\r\n vm.zeroAmountError[sIndex] = true;\r\n } else {\r\n vm.zeroAmountError[sIndex] = false;\r\n }\r\n });\r\n }\r\n\r\n if (vm.zeroAmountCounter <= 0) {\r\n if (vm.balanceStorage.selectedAccounts.length == 1) {\r\n sessionStorageService.set('savedOtherAmount', vm.checkSavedPayment);\r\n } else if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n sessionStorageService.set('savedOtherAmount', vm.amountCheck);\r\n }\r\n if (vm.amountSelected == '0') {\r\n vm.checkSingle = false;\r\n sessionStorageService.set('savedOtherAmount', false);\r\n }\r\n if (vm.checkSingle == false) {\r\n if (vm.radioBtnIndex === 1) {\r\n pushDL('pay-bill', 'other-amount', 'payment-amount');\r\n } else {\r\n pushDL('pay-bill', 'total-amount-due', 'payment-amount');\r\n }\r\n if (!vm.acceptWarmth) {\r\n vm.warmthValue = 0;\r\n }\r\n nextStep(true);\r\n broadcastService.refreshPaymentPage();\r\n closeModal();\r\n } else {\r\n if (vm.balanceStorage.selectedAccounts.length == 1) {\r\n document.getElementById('singleTextBox').focus();\r\n } else if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n vm.lengthError.forEach((element, index) => {\r\n if (element == true) {\r\n document.getElementById(index).focus();\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n vm.zeroAmountCounter = 0;\r\n }\r\n }\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n // Load sessionStorageService\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n vm.amountLimit = sessionStorageService.get('getAmountLimit');\r\n vm.extraAmountLimit = sessionStorageService.get('getExtraAmountLimit');\r\n vm.checkLimit = parseInt(vm.extraAmountLimit);\r\n vm.amtLimit = parseInt(vm.amountLimit);\r\n //2nd time edit of Payment Amount for Due\r\n vm.filterCheck = sessionStorageService.get('filterAmountCheck');\r\n\r\n if (\r\n vm.balanceStorage.selectedAccounts.length > 1 &&\r\n vm.filterCheck != true\r\n ) {\r\n vm.amtCheck = sessionStorageService.get('filterAmountLength');\r\n if (vm.amtCheck.length != 0) {\r\n vm.checkSaved = vm.amtCheck;\r\n } else {\r\n sessionStorageService.delete('filterAmountLength');\r\n sessionStorageService.set('filterAmountCheck', true);\r\n vm.checkSaved = [];\r\n }\r\n }\r\n if (vm.balanceStorage.amountSelected === '1') {\r\n vm.multipleAmountInput = true;\r\n }\r\n if (\r\n vm.balanceStorage.selectedAccounts.length > 1 &&\r\n Number(vm.balanceStorage.totalAmount) == 0\r\n ) {\r\n vm.zeroDueAmount = true;\r\n }\r\n vm.totalAmountDue = vm.balanceStorage.totalAmount;\r\n //$scope.$parent.$parent.vm.stepTitle = 'Payment Amount';\r\n pushVPV('/vpv/de/page/pay-bill/load/payment-amount');\r\n // --Start Validation: If balanceStorage has already data\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (\r\n vm.balanceStorage.newAmountsArray !== undefined &&\r\n vm.balanceStorage.newAmountsArray.length > 0\r\n ) {\r\n vm.balanceStorage.newAmountsArray.forEach((sElement, sIndex) => {\r\n if (sElement != null) {\r\n if (\r\n vm.balanceStorage.selectedAccounts[index].accountNumber ===\r\n vm.balanceStorage.newAmountsArray[sIndex].id\r\n ) {\r\n vm.bindedAmounts[\r\n index\r\n ] = `${vm.balanceStorage.newAmountsArray[sIndex].bill}`;\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n } else if (vm.bindedAmounts[index] === undefined) {\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = `${element.amount}`;\r\n }\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n }\r\n }\r\n });\r\n } else if (vm.balanceStorage.newAmounts !== undefined) {\r\n if (vm.balanceStorage.newAmounts[index] !== undefined) {\r\n vm.bindedAmounts[index] = `${vm.balanceStorage.newAmounts[index]}`;\r\n } else {\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = 0;\r\n }\r\n }\r\n vm.newTotalAmount += Number(element.amount);\r\n } else {\r\n if (element.amount <= 0) {\r\n //vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = 0;\r\n }\r\n vm.newTotalAmount += Number(element.amount);\r\n }\r\n\r\n if (\r\n vm.balanceStorage.amountSelected !== undefined &&\r\n vm.balanceStorage.amountSelected !== ''\r\n ) {\r\n vm.amountSelected = vm.balanceStorage.amountSelected;\r\n } else {\r\n vm.amountSelected = '0';\r\n }\r\n if (vm.amountSelected === '1') {\r\n vm.amountSection = true;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n } else {\r\n vm.amountSection = false;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n }\r\n if (element.amount <= 0) {\r\n //vm.negativeAmountSection = true;\r\n vm.balanceStorage.totalNoWarmth = vm.balanceStorage.newTotalAmount;\r\n }\r\n });\r\n if (vm.negativeAmountSection || vm.amountSelected === '1') {\r\n let count = 0;\r\n vm.bindedAmounts.forEach(element => {\r\n if (isNaN(Number(element.charAt(0)))) {\r\n let sub = element.substring(1);\r\n sub = sub.replace(/,/g, '');\r\n if (sub <= 0) {\r\n count += 1;\r\n }\r\n } else {\r\n if (element <= 0) {\r\n count += 1;\r\n }\r\n }\r\n if (count >= 1) {\r\n }\r\n });\r\n }\r\n if (vm.zeroDueAmount) {\r\n vm.amountSelected = '1';\r\n }\r\n if (vm.balanceStorage.totalNoWarmth !== undefined) {\r\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\r\n } else {\r\n vm.totalNoWarmth = 0;\r\n }\r\n if (\r\n vm.balanceStorage.shareWarmth !== undefined &&\r\n vm.balanceStorage.shareWarmth !== 0\r\n ) {\r\n vm.acceptWarmth = true;\r\n vm.warmthValue = vm.balanceStorage.shareWarmth;\r\n } else {\r\n vm.acceptWarmth = false;\r\n vm.warmthValue = 0;\r\n }\r\n // --End\r\n vm.balanceStorage.ShowErrorForm = false;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $scope.$emit(assetService.balanceEvents.FORM_VALIDATION, {});\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('PaymentDate', PaymentDate);\r\n\r\nPaymentDate.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$rootScope',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n '$modalInstance',\r\n];\r\n\r\nfunction PaymentDate(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $rootScope,\r\n commongaTaggingService,\r\n broadcastService,\r\n $modalInstance,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _payAsapValue = '0';\r\n const _payOnDueDateValue = '1';\r\n const _otherDateValue = '2';\r\n const _plusOne = 1;\r\n $rootScope.apiValidation = false;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.balanceStorage = {};\r\n vm.billsQuantity = 0;\r\n vm.buttonContinue = true;\r\n vm.calendarDate = '';\r\n vm.dateSelected = '';\r\n vm.currentDate = undefined;\r\n vm.currentDatePlusOne = undefined;\r\n vm.dateLimit = undefined;\r\n vm.disableDate = undefined;\r\n vm.newDateSelected = vm.dateSelected;\r\n vm.payOnDueDate = false;\r\n vm.payOnOtherDate = false;\r\n vm.reviewPay = false;\r\n vm.displayDueDate = true;\r\n vm.showPotentialFeesWarning = false;\r\n vm.disableSaveButton = false;\r\n vm.guid = '';\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.selectPaymentDate = selectPaymentDate;\r\n vm.selectCalendarDate = selectCalendarDate;\r\n vm.updatePotentialFeesWarning = updatePotentialFeesWarning;\r\n vm.closeModal = closeModal;\r\n vm.changeDate = changeDate;\r\n vm.checkCalendarDate = checkCalendarDate;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n }\r\n function checkCalendarDate() {\r\n if (vm.calendarDate === undefined || vm.calendarDate === '') {\r\n vm.disableSaveButton = true;\r\n }\r\n }\r\n\r\n function selectCalendarDate(calenarDate) {\r\n const day = moment(new Date()).format('MM/DD/YYYY');\r\n if (\r\n $('.sui-days')\r\n .find(\"td[title='\" + day + \"']\")\r\n .hasClass('sui-weekend')\r\n ) {\r\n $('.sui-days')\r\n .find(\"td[title='\" + day + \"']\")\r\n .addClass('sui-currentDateIneligible');\r\n } else {\r\n $('.sui-days')\r\n .find(\"td[title='\" + day + \"']\")\r\n .addClass('sui-currentDate');\r\n }\r\n // vm.calendarDate = calenarDate;\r\n if (\r\n vm.calendarDate !== undefined &&\r\n vm.calendarDate !== '' &&\r\n vm.calendarDate !== null\r\n ) {\r\n vm.disableSaveButton = false;\r\n if (vm.calendarDate.indexOf(' ') > 0) {\r\n vm.calendarDate = vm.calendarDate.replace(/\\s+/g, '');\r\n vm.disableContribution = vm.calendarDate === day ? true : false;\r\n vm.correctFormatDate = '';\r\n }\r\n }\r\n\r\n if (vm.calendarDate === undefined || vm.calendarDate === '') {\r\n vm.correctFormatDate = vm.correctFormatDate ? vm.correctFormatDate : '';\r\n vm.disableDate = moment(vm.currentDatePlusOne).format('MM/DD/YYYY');\r\n $('.sui-days')\r\n .find(\"td[title='\" + vm.disableDate + \"']\")\r\n .removeClass('sui-selected');\r\n }\r\n }\r\n\r\n function selectPaymentDate() {\r\n vm.disableSaveButton = false;\r\n vm.calendarDate = '';\r\n vm.newDateSelected = vm.dateSelected;\r\n vm.disableContribution =\r\n vm.newDateSelected === _payAsapValue ? true : false;\r\n if (vm.newDateSelected === _otherDateValue) {\r\n vm.disableSaveButton = true;\r\n }\r\n }\r\n\r\n $scope.$on('dateInvalid', (event, data, value) => {\r\n vm.disableSaveButton = data;\r\n selectCalendarDate(value);\r\n });\r\n\r\n function updatePotentialFeesWarning() {\r\n let isCalendarDateLaterThanDueDate = false;\r\n vm.calendarDate = angular.element('.shared-calendar input')[0].value;\r\n if (vm.calendarDate) {\r\n if (vm.calendarDate.indexOf(' ') > 0) {\r\n vm.calendarDate = vm.calendarDate.replace(/\\s+/g, '');\r\n }\r\n const date = new Date(vm.calendarDate).getTime();\r\n isCalendarDateLaterThanDueDate = vm.balanceStorage.selectedAccounts\r\n .map(account => new Date(account.dueDate).getTime())\r\n .some(dueDate => dueDate < date);\r\n }\r\n vm.showPotentialFeesWarning = isCalendarDateLaterThanDueDate;\r\n }\r\n\r\n function changeDate() {\r\n if (vm.newDateSelected === _payAsapValue) {\r\n vm.balanceStorage.dateSelected = {\r\n index: _payAsapValue,\r\n name: assetService.strings.PAY_NOW,\r\n };\r\n vm.balanceStorage.displayDate = moment(vm.currentDate).format('MM/DD/YY');\r\n pushDL('pay-bill', 'pay-now', 'payment-date');\r\n } else if (vm.newDateSelected === _payOnDueDateValue) {\r\n vm.balanceStorage.dateSelected = {\r\n index: _payOnDueDateValue,\r\n name: assetService.strings.PAY_DUE_DATE,\r\n };\r\n vm.balanceStorage.displayDate =\r\n vm.balanceStorage.selectedAccounts[0].dueDate;\r\n pushDL('pay-bill', 'pay-due-date', 'payment-date');\r\n } else if (vm.newDateSelected === _otherDateValue) {\r\n vm.balanceStorage.dateSelected = {\r\n index: _otherDateValue,\r\n name: assetService.strings.PAY_OTHER_DATE,\r\n };\r\n vm.balanceStorage.displayDate = vm.calendarDate;\r\n pushDL('pay-bill', 'other-date', 'payment-date');\r\n }\r\n\r\n if (vm.calendarDate !== undefined) {\r\n vm.balanceStorage.calendarDate = vm.calendarDate;\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n sessionStorageService.set('disableContribution', vm.disableContribution);\r\n broadcastService.refreshPaymentPage();\r\n closeModal();\r\n }\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n vm.disableSaveButton = true;\r\n // LOAD sessionStorageService\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n pushVPV('/vpv/de/page/pay-bill/load/payment-date');\r\n vm.currentDate = new Date();\r\n var d = vm.currentDate.getDate();\r\n var m = vm.currentDate.getMonth();\r\n var y = vm.currentDate.getFullYear();\r\n vm.currentDatePlusOne = new Date(y, m, d);\r\n vm.dateLimit = new Date(y + _plusOne, m, d + _plusOne);\r\n var day = ('0' + (d + _plusOne)).slice(-2);\r\n var month = ('0' + (m + _plusOne)).slice(-2);\r\n vm.payNowDate = moment(vm.currentDate).format('MM/DD/YYYY');\r\n if (vm.balanceStorage.selectedAccounts.length === 1) {\r\n if (\r\n new Date(vm.balanceStorage.selectedAccounts[0].dueDate).getTime() <\r\n vm.currentDatePlusOne.getTime()\r\n ) {\r\n vm.displayDueDate = false;\r\n }\r\n }\r\n if (vm.balanceStorage.calendarDate !== undefined) {\r\n vm.calendarDate = vm.balanceStorage.calendarDate;\r\n vm.correctFormatDate = moment(vm.calendarDate).format('MM/DD/YYYY');\r\n } else {\r\n vm.calendarDate = '';\r\n vm.correctFormatDate = '';\r\n }\r\n\r\n if (vm.balanceStorage.dateSelected !== undefined) {\r\n vm.dateSelected = vm.balanceStorage.dateSelected.index;\r\n vm.newDateSelected = vm.dateSelected;\r\n } else {\r\n vm.dateSelected = '0';\r\n }\r\n\r\n if (vm.balanceStorage.reviewPay) {\r\n vm.dateSelected = _payOnDueDateValue;\r\n }\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('PaymentMethod', PaymentMethod);\r\n\r\nPaymentMethod.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n 'assetService',\r\n 'genericHelperService',\r\n 'sessionStorageService',\r\n 'getPrepaidDetailsService',\r\n 'manageBankAccountsForPrepaidService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n 'ccSitecoreGenericCachingService',\r\n '$state',\r\n '$modalInstance',\r\n 'broadcastService',\r\n '$interval',\r\n '$timeout',\r\n];\r\n\r\nfunction PaymentMethod(\r\n $rootScope,\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n sessionStorageService,\r\n getPrepaidDetailsService,\r\n manageBankAccountsForPrepaidService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n ccSitecoreGenericCachingService,\r\n $state,\r\n $modalInstance,\r\n broadcastService,\r\n $interval,\r\n $timeout,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n $rootScope.apiValidation = true;\r\n const _accountId = assetService.strings.BANK_ACCOUNT_ID;\r\n const _accountNickName = assetService.strings.BANK_DESCRIPTION;\r\n let _bankAccountsOriginal = '';\r\n const _bankAccountIssues =\r\n assetService.strings.BANK_ACCOUNT_NOT_ADDED_SUCCESSFULLY;\r\n let _globalAccountInfo;\r\n const _SUCCESS = assetService.replyCodes.SUCCESS;\r\n let _bankAccountAddResponse = '';\r\n let wasVpvMethodUsed = false;\r\n const tempTag = '#&$TEMP$&#';\r\n vm.opti = false;\r\n $rootScope.isPayMyBill = false;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n vm.account = '';\r\n vm.accountConfirmNumber = '';\r\n vm.accountForPay = {};\r\n vm.accountId = '';\r\n vm.accountNickname = '';\r\n vm.accountNumber = '';\r\n vm.accountRouting = '';\r\n vm.addedBankResults = {};\r\n vm.balanceStorage = {};\r\n vm.buttonContinue = false;\r\n vm.bankAccounts = [];\r\n vm.displayAccounts = false;\r\n vm.lastFourDigits = 0;\r\n vm.newBankAccount = {};\r\n vm.reviewPay = false;\r\n vm.routingNumber = 0;\r\n vm.selectedBankAccount = false;\r\n vm.accountSelected = {};\r\n vm.showAddNewAccount = false;\r\n vm.saveForFuturePayments = false;\r\n vm.accountType = [];\r\n vm.selectAccountType = null;\r\n vm.defaultBankAccount = null;\r\n vm.addAccountLabel = null;\r\n vm.accountTypeValue = '';\r\n vm.showErrorMessage = false;\r\n vm.bankAccountsDropdown = [];\r\n vm.bankAccountPresent = false;\r\n const _kwValue = assetService.strings.VALUE;\r\n $rootScope.savedACH = false;\r\n let sessionStorageAddedInterval;\r\n $rootScope.noSavedBank = '';\r\n vm.disableSaveBankerror = false;\r\n $rootScope.mnberror = true;\r\n vm.ACIValidationFailed = false;\r\n vm.ACIValidationErr = '';\r\n vm.guid = '';\r\n vm.disableSubmitButton = false;\r\n vm.formActive = false;\r\n vm.aci429 = '';\r\n vm.aci278 = '';\r\n vm.aci734 = '';\r\n vm.aci739 = '';\r\n vm.accNameEmpty = false;\r\n vm.accRoutingEmpty = false;\r\n vm.accNumEmpty = false;\r\n vm.accConfirmNumEmpty = false;\r\n vm.accTypeEmpty = false;\r\n vm.getAccountLimit = undefined;\r\n vm.getNameLimit = undefined;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.init = init;\r\n vm.checkAndContinue = checkAndContinue;\r\n vm.selectBankAccount = selectBankAccount;\r\n vm.showAddAccount = showAddAccount;\r\n vm.closeModal = closeModal;\r\n vm.changeBankAccount = changeBankAccount;\r\n vm.saveBankDetails = saveBankDetails;\r\n vm.nicknameCheck = nicknameCheck;\r\n vm.nameError = nameError;\r\n vm.accountCheck = accountCheck;\r\n vm.accountError = accountError;\r\n vm.confirmAccCheck = confirmAccCheck;\r\n vm.confirmAccError = confirmAccError;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function closeModal() {\r\n $modalInstance.close();\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n }\r\n\r\n function nicknameCheck() {\r\n const nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\r\n if (nameLength >= vm.getNameLimit) {\r\n vm.showNameError = true;\r\n }\r\n }\r\n\r\n function nameError() {\r\n const nameLength = vm.accountNickname ? vm.accountNickname.length : 0;\r\n if (nameLength > vm.getNameLimit) {\r\n vm.showNameError = true;\r\n } else {\r\n vm.showNameError = false;\r\n }\r\n }\r\n\r\n function accountCheck() {\r\n const accLength = vm.accountNumber ? vm.accountNumber.length : 0;\r\n if (accLength >= vm.getAccountLimit) {\r\n vm.showAccError = true;\r\n }\r\n }\r\n\r\n function accountError() {\r\n const accLength = vm.accountNumber ? vm.accountNumber.length : 0;\r\n if (accLength > vm.getAccountLimit) {\r\n vm.showAccError = true;\r\n } else {\r\n vm.showAccError = false;\r\n }\r\n }\r\n\r\n function confirmAccCheck() {\r\n const accCLength = vm.accountConfirmNumber\r\n ? vm.accountConfirmNumber.length\r\n : 0;\r\n if (accCLength >= vm.getAccountLimit) {\r\n vm.showConfirmAccError = true;\r\n }\r\n }\r\n\r\n function confirmAccError() {\r\n const accCLength = vm.accountConfirmNumber\r\n ? vm.accountConfirmNumber.length\r\n : 0;\r\n if (accCLength > vm.getAccountLimit) {\r\n vm.showConfirmAccError = true;\r\n } else {\r\n vm.showConfirmAccError = false;\r\n }\r\n }\r\n\r\n function changeBankAccount() {\r\n vm.balanceStorage.paymentData.bankAccountId = vm.balanceStorage.accountId;\r\n saveBankDetails();\r\n if (vm.showAddNewAccount) {\r\n vm.showAddNewAccount = false;\r\n vm.displayAccounts = true;\r\n selectBankAccount(vm.balanceStorage.accountId);\r\n } else {\r\n broadcastService.refreshPaymentPage();\r\n closeModal();\r\n }\r\n }\r\n\r\n function selectBankAccount(data) {\r\n _bankAccountsOriginal.forEach(element => {\r\n if (data === element.BankAccountId) {\r\n vm.selectedBankAccount = true;\r\n vm.accountId = element.BankAccountId;\r\n vm.accountForPay = {\r\n accountNickName: element.BankDescription\r\n ? element.BankDescription\r\n : 'Account',\r\n maskedAccNo: element.BankAccountNumber,\r\n bankTransit: element.BankRoutingNumber,\r\n };\r\n vm.account = element.BankDescription\r\n ? element.BankDescription\r\n : 'Account';\r\n vm.lastFourDigits = element.BankAccountNumber.substr(\r\n element.BankAccountNumber.length - 4,\r\n );\r\n vm.routingNumber = element.BankRoutingNumber;\r\n vm.accountTypeValue = '';\r\n vm.accountType.forEach(item => {\r\n if (item.value === element.BankAccountType) {\r\n vm.accountTypeValue = item.text;\r\n }\r\n });\r\n }\r\n });\r\n\r\n vm.balanceStorage.accountId = vm.accountId;\r\n vm.balanceStorage.accountType = vm.accountType;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n }\r\n\r\n function checkAndContinue(value) {\r\n vm.showErrorMessage = false;\r\n if ($scope.payment.$valid) {\r\n $rootScope.apiValidation = true;\r\n }\r\n if (vm.accountRouting) {\r\n vm.accountRouting = vm.accountRouting.toString().replace(/[A-Za-z]/g, '');\r\n }\r\n }\r\n\r\n function addDataToSitecoreCache(payload) {\r\n return ccSitecoreGenericCachingService.addToSitecoreCache(payload).then(\r\n response => response,\r\n () => {},\r\n );\r\n }\r\n\r\n function showAddAccount() {\r\n $scope.payment.$setUntouched();\r\n $scope.payment.$setPristine();\r\n vm.formActive = true;\r\n //gat-events\r\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account');\r\n vm.accountConfirmNumber = '';\r\n vm.accountNickname = '';\r\n vm.accountNumber = '';\r\n vm.accountRouting = '';\r\n vm.balanceStorage.newBankAccount = '';\r\n if (!vm.showAddNewAccount) {\r\n vm.showAddNewAccount = true;\r\n vm.displayAccounts = false;\r\n vm.bankAccountsDropdown.forEach(element => {\r\n if (element.value === '0') {\r\n vm.defaultBankAccountDropdown = element.text;\r\n element.selected = true;\r\n } else {\r\n element.selected = false;\r\n }\r\n });\r\n } else {\r\n vm.showAddNewAccount = false;\r\n vm.displayAccounts = true;\r\n\r\n if (vm.balanceStorage.accountForPay !== undefined) {\r\n selectBankAccount(vm.balanceStorage.accountForPay.nickName);\r\n }\r\n }\r\n }\r\n\r\n $scope.onSelectBankAccount = function(item) {\r\n if (item.value == 0) {\r\n vm.showAddNewAccount = true;\r\n vm.formActive = true;\r\n vm.displayAccounts = false;\r\n vm.bankAccountsDropdown.forEach(element => {\r\n if (element.value === '0') {\r\n vm.defaultBankAccountDropdown = element.text;\r\n element.selected = true;\r\n } else {\r\n element.selected = false;\r\n }\r\n });\r\n } else {\r\n selectBankAccount(item.value);\r\n }\r\n };\r\n\r\n $scope.onSelectAddBankAccount = function(item) {\r\n if (item.value !== '0') {\r\n vm.showAddNewAccount = false;\r\n vm.displayAccounts = true;\r\n vm.selectedBankAccount = true;\r\n vm.bankAccounts.forEach(element => {\r\n if (element.value === item.value) {\r\n vm.defaultBankAccount = element.text;\r\n element.selected = true;\r\n } else {\r\n element.selected = false;\r\n }\r\n });\r\n selectBankAccount(item.value);\r\n }\r\n vm.ACIValidationFailed = false;\r\n };\r\n\r\n function saveBankDetails() {\r\n vm.balanceStorage.newAccountAdded = vm.showAddNewAccount;\r\n if (vm.showAddNewAccount) {\r\n vm.balanceStorage.savePaymentInfo = vm.saveForFuturePayments;\r\n vm.accNameEmpty = vm.accountNickname ? false : true;\r\n vm.accRoutingEmpty = vm.accountRouting ? false : true;\r\n vm.accNumEmpty = vm.accountNumber ? false : true;\r\n vm.accConfirmNumEmpty = vm.accountConfirmNumber ? false : true;\r\n vm.accTypeEmpty = vm.selectAccountType ? false : true;\r\n const selectedAddressData = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n const { accountSelected } = selectedAddressData;\r\n const _businessPartnerId = orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : accountSelected.primaryBp;\r\n\r\n vm.balanceStorage.accountType = vm.accountType;\r\n if (\r\n !vm.accNameEmpty &&\r\n !vm.accRoutingEmpty &&\r\n !vm.accNumEmpty &&\r\n !vm.accConfirmNumEmpty &&\r\n !vm.accTypeEmpty\r\n ) {\r\n const newParamData = {\r\n businessPartnerId: _businessPartnerId,\r\n bankDescription: vm.saveForFuturePayments\r\n ? vm.accountNickname\r\n : tempTag,\r\n accountNumber: vm.accountNumber,\r\n routingNumber: vm.accountRouting,\r\n accountType: vm.selectAccountType,\r\n requestedBy: vm.balanceStorage.currentUser.emailId,\r\n action: assetService.serviceActions.manageBankAccountsForPrepaid.ADD,\r\n };\r\n addNewBankAccount(newParamData).then(() => {\r\n if (_bankAccountAddResponse.ReplyCode === _SUCCESS) {\r\n vm.bankAddedSuccess = true;\r\n const cachedParamData = {\r\n Key: _bankAccountAddResponse.BankId,\r\n Value: {\r\n BankDescription: vm.accountNickname,\r\n BankAccountNumber: vm.accountNumber.slice(-4),\r\n BankRoutingNumber: vm.accountRouting,\r\n BankAccountType: vm.selectAccountType,\r\n BankAccountId: _bankAccountAddResponse.BankId,\r\n },\r\n };\r\n const tempBankData = {\r\n BankDescription: vm.accountNickname,\r\n BankAccountNumber: vm.accountNumber.slice(-4),\r\n BankRoutingNumber: vm.accountRouting,\r\n BankAccountType: vm.selectAccountType,\r\n BankAccountId: _bankAccountAddResponse.BankId,\r\n };\r\n\r\n vm.balanceStorage.accountId = _bankAccountAddResponse.BankId;\r\n const data = {\r\n businessPartnerId: _businessPartnerId,\r\n contractAccountId:\r\n vm.balanceStorage.globalSelectedAccount.accountNumber,\r\n };\r\n if (vm.saveForFuturePayments === true) {\r\n vm.loadingSpinner = false;\r\n loadBankDetails(data, false);\r\n } else {\r\n tempBankData.BankAccountNumber = `******${vm.accountNumber.slice(\r\n -4,\r\n )}`;\r\n _bankAccountsOriginal.push(tempBankData);\r\n }\r\n\r\n addDataToSitecoreCache(cachedParamData).then(\r\n result => {\r\n if (result) {\r\n vm.balanceStorage.accountId = _bankAccountAddResponse.BankId;\r\n vm.showErrorMessage = false;\r\n vm.bpid =\r\n vm.balanceStorage.globalSelectedAccount.businessPartner;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n\r\n sessionStorageService.set(\r\n 'cacheId',\r\n _bankAccountAddResponse.BankId,\r\n );\r\n $modalInstance.close();\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if (!vm.saveForFuturePayments) {\r\n setDropdowns();\r\n }\r\n //$rootScope.$broadcast(assetService.events.manualNextComponent);\r\n } else {\r\n // error occured saving to sitecore cache\r\n console.log('error saving to sitecore cache');\r\n }\r\n $rootScope.noSavedACH = false;\r\n vm.noSavedACH = false;\r\n broadcastService.refreshPaymentPage();\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n );\r\n } else if (\r\n _bankAccountAddResponse.MessageNum === '732' ||\r\n _bankAccountAddResponse.MessageNum === '739'\r\n ) {\r\n vm.showErrorMessage = true;\r\n }\r\n vm.balanceStorage.ShowErrorForm = vm.showErrorMessage;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $scope.$emit(assetService.balanceEvents.FORM_VALIDATION, {});\r\n });\r\n }\r\n } else {\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n\r\n const cachedParamData = {\r\n Key: vm.balanceStorage.accountId,\r\n Value: {\r\n BankDescription: vm.accountForPay.accountNickName,\r\n BankAccountNumber: vm.accountForPay.maskedAccNo,\r\n BankRoutingNumber: vm.accountForPay.bankTransit,\r\n BankAccountType: vm.accountTypeValue,\r\n BankAccountId: vm.balanceStorage.accountId,\r\n },\r\n };\r\n\r\n addDataToSitecoreCache(cachedParamData).then(\r\n result => {\r\n if (result) {\r\n vm.balanceStorage.accountId = vm.balanceStorage.accountId;\r\n vm.showErrorMessage = false;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n sessionStorageService.set('cacheId', vm.balanceStorage.accountId);\r\n //$rootScope.$broadcast(assetService.events.manualNextComponent);\r\n } else {\r\n // error occured saving to sitecore cache\r\n console.log('error saving to sitecore cache');\r\n }\r\n broadcastService.refreshPaymentPage();\r\n closeModal();\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function loadBankDetails(data, action) {\r\n getPrepaidDetails(data).then(() => {\r\n if (_bankAccountsOriginal.length > 0) {\r\n setDropdowns();\r\n\r\n if (vm.balanceStorage.accountId) {\r\n _bankAccountsOriginal.forEach(element => {\r\n if (element.accountId === vm.balanceStorage.accountId) {\r\n selectBankAccount(element.accountId);\r\n }\r\n });\r\n }\r\n if (action) {\r\n vm.displayAccounts = true;\r\n vm.showAddNewAccount = false;\r\n }\r\n } else {\r\n vm.displayAccounts = false;\r\n vm.showAddNewAccount = true;\r\n }\r\n });\r\n }\r\n\r\n function setDropdowns() {\r\n if (_bankAccountsOriginal.length > 0) {\r\n vm.bankAccountPresent = true;\r\n vm.bankAccountsDropdown = [];\r\n const bankAccounts = _.map(_bankAccountsOriginal, item => ({\r\n value: item.BankAccountId,\r\n text: item.BankDescription\r\n ? item.BankDescription + ' - ' + item.BankAccountNumber.substr(1)\r\n : `Account - ${item.BankAccountNumber.substr(1)}`,\r\n }));\r\n const addBankAccounts = _.map(_bankAccountsOriginal, item => ({\r\n value: item.BankAccountId,\r\n text: item.BankDescription\r\n ? item.BankDescription + ' - ' + item.BankAccountNumber.substr(1)\r\n : `Account - ${item.BankAccountNumber.substr(1)}`,\r\n }));\r\n vm.bankAccounts = bankAccounts;\r\n vm.bankAccountsDropdown = addBankAccounts;\r\n vm.bankAccountsDropdown.push({\r\n value: '0',\r\n text: 'Add Bank Account',\r\n selected: true,\r\n });\r\n vm.bankAccounts.push({\r\n value: '0',\r\n text: 'Add Bank Account',\r\n });\r\n if (vm.balanceStorage.accountId) {\r\n vm.bankAccounts.forEach(item => {\r\n if (item.value === vm.balanceStorage.accountId) {\r\n vm.defaultBankAccount = item.text;\r\n item.selected = true;\r\n }\r\n });\r\n selectBankAccount(vm.balanceStorage.accountId);\r\n }\r\n }\r\n\r\n vm.bankAccounts = genericHelperService.setSelectedProp(\r\n vm.bankAccounts,\r\n _kwValue,\r\n vm.defaultBankAccount,\r\n );\r\n }\r\n\r\n function getPrepaidDetails(data) {\r\n vm.loadingSpinner = true;\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(\r\n result => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n $rootScope.bankData = _bankAccountsOriginal;\r\n vm.loadingSpinner = false;\r\n vm.aci429 = $('#AccountType').attr('aci429');\r\n vm.aci278 = $('#AccountType').attr('aci278');\r\n vm.aci734 = $('#AccountType').attr('aci734');\r\n vm.aci739 = $('#AccountType').attr('aci739');\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function addNewBankAccount(data) {\r\n return manageBankAccountsForPrepaidService.sitecore\r\n .manageBankAccountsForPrepaid(data)\r\n .then(\r\n result => {\r\n _bankAccountAddResponse = result.d.ManageBankAcc_NAV;\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account/na/save',\r\n );\r\n vm.ACIValidationFailed = false;\r\n vm.loadingSpinner = false;\r\n $rootScope.isPayMyBill = false;\r\n },\r\n error => {\r\n vm.showAddNewAccount = true;\r\n vm.displayAccounts = false;\r\n vm.disableSaveBankerror = true;\r\n vm.ACIValidationFailed = true;\r\n vm.loadingSpinner = false;\r\n if (\r\n error.MessageNum === '732' ||\r\n error.MessageNum === '739' ||\r\n error.MessageNum === '734' ||\r\n error.MessageNum === '278' ||\r\n error.MessageNum === '429' ||\r\n error.MessageNum === '270'\r\n ) {\r\n vm.ACIValidationErr = error.Message;\r\n vm.ACIMessageNum = error.MessageNum;\r\n } else {\r\n vm.ACIValidationFailed = false;\r\n $modalInstance.close();\r\n }\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n if (vm.ACIMessageNum) {\r\n pushVPV(\r\n `/vpv/de/page/pay-bill/error/add-bank-account/na/na/${vm.ACIMessageNum}`,\r\n );\r\n switch (vm.ACIMessageNum) {\r\n case '429':\r\n pushDL(\r\n 'pay-bill_error',\r\n `${vm.ACIMessageNum}-|-${$rootScope.dataLayerFormat(\r\n vm.aci429,\r\n )}-|-${\r\n assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid\r\n }`,\r\n 'pay-my-bill-|-bank-account',\r\n );\r\n break;\r\n case '278':\r\n pushDL(\r\n 'pay-bill_error',\r\n `${vm.ACIMessageNum}-|-${$rootScope.dataLayerFormat(\r\n vm.aci278,\r\n )}-|-${\r\n assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid\r\n }`,\r\n 'pay-my-bill-|-bank-account',\r\n );\r\n break;\r\n case '734' || '732' || '270':\r\n pushDL(\r\n 'pay-bill_error',\r\n `${vm.ACIMessageNum}-|-${$rootScope.dataLayerFormat(\r\n vm.aci734,\r\n )}-|-${\r\n assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid\r\n }`,\r\n 'pay-my-bill-|-bank-account',\r\n );\r\n break;\r\n case '739':\r\n pushDL(\r\n 'pay-bill_error',\r\n `${vm.ACIMessageNum}-|-${$rootScope.dataLayerFormat(\r\n vm.aci739,\r\n )}-|-${\r\n assetService.sitecoreEndpoints.ManageBankAccountsForPrepaid\r\n }`,\r\n 'pay-my-bill-|-bank-account',\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n },\r\n );\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n // First: Load sessionStorageService\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n vm.accountSelected = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected;\r\n\r\n vm.getAccountLimit = sessionStorageService.get('getAccLimit');\r\n vm.getNameLimit = sessionStorageService.get('getNameLimit');\r\n\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n\r\n const _businessPartnerId = orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : vm.accountSelected.primaryBp;\r\n\r\n const data = {\r\n businessPartnerId: _businessPartnerId,\r\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber,\r\n };\r\n\r\n vm.bankAccountsDropdown.push({\r\n value: '0',\r\n text: 'Add Bank Account',\r\n selected: true,\r\n });\r\n vm.defaultBankAccountDropdown = vm.bankAccountsDropdown[0].text;\r\n\r\n loadBankDetails(data, true);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n function init() {\r\n vm.noSavedACH = $rootScope.noSavedACH;\r\n const accountTypeArray = [\r\n { CHK: 'Personal Checking' },\r\n { SAV: 'Personal Savings' },\r\n { BCK: 'Business Checking' },\r\n { BSV: 'Business Savings' },\r\n ];\r\n if (accountTypeArray) {\r\n const accounts = _.map(accountTypeArray, item => ({\r\n value: Object.keys(item)[0],\r\n text: Object.values(item)[0],\r\n }));\r\n vm.accountType = accounts;\r\n if (vm.accountType) {\r\n vm.selectAccountType = vm.accountType[0].text;\r\n }\r\n }\r\n\r\n vm.accountType = genericHelperService.setSelectedProp(\r\n vm.accountType,\r\n _kwValue,\r\n vm.selectAccountType,\r\n );\r\n vm.addAccountLabel = 'Add Account';\r\n _globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n )\r\n ? sessionStorageService.get(assetService.storageKeys.selectedAddressData)\r\n : undefined;\r\n load();\r\n }\r\n\r\n init();\r\n}\r\n","app.controller('ReviewPay', ReviewPay);\r\n\r\nReviewPay.$inject = [\r\n '$rootScope',\r\n '$state',\r\n '$scope',\r\n 'assetService',\r\n 'commonService',\r\n 'makeOneTimeMonthlyContributionService',\r\n 'payNowOrScheduledService',\r\n 'returnApplicableProgramsService',\r\n 'sessionStorageService',\r\n 'commongaTaggingService',\r\n 'responseNotificationsService',\r\n '$stateParams',\r\n '$filter',\r\n '$sce',\r\n 'ccSitecoreGenericCachingService',\r\n 'modalService',\r\n 'getPrepaidDetailsService',\r\n 'broadcastService',\r\n '$window',\r\n];\r\n\r\nfunction ReviewPay(\r\n $rootScope,\r\n $state,\r\n $scope,\r\n assetService,\r\n commonService,\r\n makeOneTimeMonthlyContributionService,\r\n payNowOrScheduledService,\r\n returnApplicableProgramsService,\r\n sessionStorageService,\r\n commongaTaggingService,\r\n responseNotificationsService,\r\n $stateParams,\r\n $filter,\r\n $sce,\r\n ccSitecoreGenericCachingService,\r\n modalService,\r\n getPrepaidDetailsService,\r\n broadcastService,\r\n $window,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n $rootScope.apiValidation = true;\r\n\r\n let _bankAccountsOriginal = false;\r\n const _bankAccountRemoveResponse = '';\r\n const _otherDateValue = 3;\r\n const _notSuccessfulPayment = assetService.strings.NOT_SUCCESSFUL_PAYMENT;\r\n const _numberTwo = '2';\r\n const _toFixed = 2;\r\n const _success = assetService.replyCodes.SUCCESS;\r\n let _temporalProgram = [];\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.accountNickName = '';\r\n vm.accountNumber = '';\r\n vm.accountType = '';\r\n vm.lastFourDigits = '';\r\n vm.inputAmountvalue = [];\r\n vm.bills = [];\r\n vm.balanceStorage = {};\r\n vm.billsQuantity = 0;\r\n vm.contributeOptions = [];\r\n vm.contributeOptionsArray = [];\r\n vm.form = {\r\n checkbox: [],\r\n donation: [],\r\n };\r\n vm.makeContributionsPayment = {};\r\n vm.bindedAmounts = [];\r\n vm.inputAmount = [];\r\n vm.newPaymentAmount = false;\r\n vm.isPayNow = true;\r\n vm.newTotalAmount = 0;\r\n vm.tempTotalAmount = 0;\r\n vm.otherPaymentDate = false;\r\n vm.loadingSpinner = true;\r\n vm.payStep = 1;\r\n vm.programsContributions = [];\r\n vm.routingNumber = '';\r\n vm.successPayment = [];\r\n vm.viewRoutes = [\r\n assetService.balanceRouteStates.PAYMENT_DATE,\r\n assetService.balanceRouteStates.PAYMENT_AMOUNT,\r\n assetService.balanceRouteStates.PAYMENT_METHOD,\r\n assetService.balanceRouteStates.REVIEW_PAY,\r\n assetService.balanceRouteStates.SUBMIT_BUTTON_MODAL,\r\n assetService.balanceRouteStates.BILLS,\r\n assetService.balanceRouteStates.SUCCESS_PAY,\r\n ];\r\n vm.paramDataTemp = [];\r\n vm.donationTotal = 0;\r\n vm.warmth = false;\r\n vm.BankAccountId = '';\r\n vm.bpid = '';\r\n vm.accountSelected = {};\r\n vm.showContribution = false;\r\n vm.showValidation = false;\r\n vm.showDonationValidation = false;\r\n vm.message = '';\r\n vm.sucessStatus = '';\r\n vm.errorResult = '';\r\n vm.countButtonClick = 0;\r\n vm.displayDate = '';\r\n vm.displayAmount = '';\r\n vm.accountAddress = '';\r\n vm.negativeAmountSection = false;\r\n vm.otherAmount = '';\r\n $rootScope.bankData = '';\r\n $rootScope.defaultDate = false;\r\n vm.paymentMethod = {};\r\n vm.noSavedACH = false;\r\n vm.kubraerror = false;\r\n vm.payBillPageError = false;\r\n $rootScope.paymybillpage = true;\r\n $rootScope.noSavedACH = false;\r\n $rootScope.paymentSpinner = false;\r\n // $rootScope.isPMB = true;\r\n //new vars\r\n vm.balanceStorage.selectedDate = '';\r\n vm.selectedDate = '';\r\n $rootScope.accountNickName = '';\r\n $rootScope.accountNumber = '';\r\n vm.newAmountsArray = [];\r\n vm.guid = '';\r\n $rootScope.zeroDueFlag = false;\r\n vm.singleAccNegative = false;\r\n vm.multiAccZeroAmount = false;\r\n vm.disableSubmit = true;\r\n const invalidError = 'Invalid Request - Please verify your input data';\r\n $rootScope.isPayMyBill = false;\r\n vm.amountToPay = undefined;\r\n vm.amountLength = undefined;\r\n vm.lengthError = false;\r\n vm.savedOtherAmt = false;\r\n vm.checkSavedAmnt = false;\r\n vm.showModal = false;\r\n vm.totalNoWarmth = 0;\r\n vm.saveAmount = false;\r\n vm.checkForError = false;\r\n vm.getFullDue = 0;\r\n vm.checkLimit = undefined;\r\n vm.amtLimit = undefined;\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n vm.addProgramContribution = addProgramContribution;\r\n vm.formatTotalAmount = formatTotalAmount;\r\n vm.returnToStep = returnToStep;\r\n vm.backToBills = backToBills;\r\n vm.formatLastFourDigits = formatLastFourDigits;\r\n vm.checkContribution = checkContribution;\r\n vm.paymentAmountModal = paymentAmountModal;\r\n vm.paymentDateModal = paymentDateModal;\r\n vm.paymentMethodModal = paymentMethodModal;\r\n vm.changeDate = changeDate;\r\n vm.submitPayment = submitPayment;\r\n vm.previous = previous;\r\n vm.onCancel = onCancel;\r\n vm.formatNewAmounts = formatNewAmounts;\r\n vm.getJurisdictions = getJurisdictions;\r\n vm.addValidation = addValidation;\r\n vm.checkAmoutPaid = checkAmoutPaid;\r\n vm.checkSubmitPayment = checkSubmitPayment;\r\n vm.checkAmountChange = checkAmountChange;\r\n vm.savePayment = savePayment;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n $scope.getLimits = function(\r\n amountLimit,\r\n extraAmountLimit,\r\n accLimit,\r\n nicknameLimit,\r\n ) {\r\n vm.checkLimit = parseInt(extraAmountLimit);\r\n vm.amtLimit = parseInt(amountLimit);\r\n sessionStorageService.set('getAmountLimit', amountLimit);\r\n sessionStorageService.set('getExtraAmountLimit', extraAmountLimit);\r\n sessionStorageService.set('getAccLimit', accLimit);\r\n sessionStorageService.set('getNameLimit', nicknameLimit);\r\n };\r\n\r\n function addProgramContribution(value, secValFromCDP) {\r\n console.log('addProgramContribution value - >', value);\r\n console.log('addProgramContribution secValFromCDP - >', secValFromCDP);\r\n if (\r\n value &&\r\n parseFloat(\r\n Number(value.donationAmount.substring(1).replace(/,/g, '')).toFixed(\r\n _toFixed,\r\n ),\r\n ) > 500\r\n ) {\r\n vm.showDonationValidation = true;\r\n } else {\r\n vm.showDonationValidation = false;\r\n vm.disableSubmit = false;\r\n }\r\n\r\n if (vm.balanceStorage.totalNoWarmth) {\r\n vm.newTotalAmount = parseFloat(\r\n Number(vm.balanceStorage.totalNoWarmth) +\r\n Number(vm.balanceStorage.selectedAccounts[0].donationValue),\r\n );\r\n } else {\r\n vm.newTotalAmount = parseFloat(vm.balanceStorage.totalAmount);\r\n }\r\n vm.balanceStorage.selectedAccounts.forEach((ele, index) => {\r\n if (ele.id == undefined) {\r\n angular.forEach(vm.tempContributeOptions, valu => {\r\n if (ele.accountNumber === valu.contractAccount) {\r\n vm.balanceStorage.selectedAccounts[index].id = valu.id;\r\n vm.balanceStorage.selectedAccounts[index].jurisdiction =\r\n valu.jurisdiction;\r\n }\r\n });\r\n }\r\n if (\r\n value !== undefined &&\r\n ele.id === value.id &&\r\n ele.accountNumber === value.contractAccount\r\n ) {\r\n ele.donationValue = value.donationAmount\r\n ? Number(value.donationAmount.substring(1).replace(/,/g, '')).toFixed(\r\n _toFixed,\r\n )\r\n : 0;\r\n ele.totalDonationAmount =\r\n Number(ele.billAmount) < 0\r\n ? (Number(ele.billAmount) - Number(ele.donationValue)).toFixed(\r\n _toFixed,\r\n )\r\n : (Number(ele.billAmount) + Number(ele.donationValue)).toFixed(\r\n _toFixed,\r\n );\r\n }\r\n });\r\n vm.balanceStorage.contributionForm = vm.form;\r\n changeAmount(vm.newTotalAmount);\r\n }\r\n\r\n function paymentAmountModal() {\r\n pushDL('pay-bill', 'edit', 'payment-amount');\r\n if (\r\n vm.balanceStorage.selectedAccounts.length === 1 &&\r\n (vm.amountSelected == 1 || vm.negativeAmountSection)\r\n ) {\r\n vm.enableInputAmountBox = true;\r\n vm.showValidation = false;\r\n } else modalService.paymentAmountModal();\r\n }\r\n\r\n function paymentDateModal() {\r\n pushDL('pay-bill', 'edit', 'payment-date');\r\n modalService.paymentDateModal();\r\n }\r\n\r\n function paymentMethodModal() {\r\n if (vm.noSavedACH) {\r\n pushVPV('/vpv/de/page/pay-bill/load/pay-my-bill/add-bank-account');\r\n } else {\r\n pushDL('pay-bill', 'edit', 'bank-account');\r\n }\r\n modalService.paymentMethodModal();\r\n }\r\n function nextStep(value) {\r\n if (vm.newAmountsArray.length === 0) {\r\n if (vm.balanceStorage.newAmountsArray !== undefined) {\r\n vm.newAmountsArray = vm.balanceStorage.newAmountsArray;\r\n }\r\n }\r\n\r\n if (value) {\r\n // Run just when Next Step is True\r\n if (!vm.amountSelected) {\r\n vm.warmthValue = 0;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n vm.bindedAmounts = [];\r\n vm.totalNoWarmth = vm.newTotalAmount;\r\n }\r\n }\r\n\r\n vm.balanceStorage.shareWarmth = vm.warmthValue;\r\n vm.balanceStorage.newTotalAmount = vm.newTotalAmount;\r\n vm.balanceStorage.amountSelected = vm.amountSelected;\r\n vm.balanceStorage.newAmounts = vm.bindedAmounts;\r\n vm.balanceStorage.totalNoWarmth = vm.totalNoWarmth;\r\n vm.balanceStorage.newAmountsArray = vm.newAmountsArray;\r\n\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (vm.bindedAmounts && vm.bindedAmounts.length > 0) {\r\n vm.balanceStorage.selectedAccounts[index].billAmount = isNaN(\r\n vm.bindedAmounts[index].charAt(0),\r\n )\r\n ? vm.bindedAmounts[index].substring(1).replace(/,/g, '')\r\n : vm.bindedAmounts[index];\r\n }\r\n });\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n }\r\n\r\n function formatNewAmounts() {\r\n vm.balanceStorage.totalNoWarmth = isNaN(\r\n vm.balanceStorage.totalNoWarmth.charAt(0),\r\n )\r\n ? vm.balanceStorage.totalNoWarmth.substring(1).replace(/,/g, '')\r\n : vm.balanceStorage.totalNoWarmth;\r\n vm.inputAmountvalue[0] = vm.balanceStorage.totalNoWarmth;\r\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\r\n if (Number(vm.balanceStorage.totalNoWarmth <= 0)) {\r\n vm.disableSubmit = true;\r\n } else vm.disableSubmit = false;\r\n vm.balanceStorage.selectedAccounts[0].billAmount =\r\n vm.balanceStorage.totalNoWarmth;\r\n if (\r\n Number(vm.balanceStorage.selectedAccounts[0].donationValue) < 0 &&\r\n vm.form.checkbox[0]\r\n ) {\r\n vm.disableSubmit = true;\r\n } else {\r\n vm.balanceStorage.selectedAccounts[0].totalDonationAmount =\r\n Number(vm.balanceStorage.totalNoWarmth) +\r\n Number(vm.balanceStorage.selectedAccounts[0].donationValue);\r\n }\r\n\r\n //to remove the error when amount length is less than 6\r\n let amountPaid = vm.totalNoWarmth;\r\n vm.amountToPay = String(amountPaid).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.checkLimit) {\r\n vm.lengthError = true;\r\n } else {\r\n vm.lengthError = false;\r\n }\r\n sessionStorageService.set('lengthError', vm.lengthError);\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n checkAmoutPaid();\r\n }\r\n\r\n function formatTotalAmount(amount) {\r\n const formattedAmount = String(amount).split('.');\r\n if (formattedAmount[1]) {\r\n formattedAmount[1] =\r\n formattedAmount[1].length === 1\r\n ? `${formattedAmount[1]}0`\r\n : formattedAmount[1];\r\n } else {\r\n formattedAmount[1] = '00';\r\n }\r\n const formattedIntegerAmount = $filter('number')(\r\n formattedAmount[0],\r\n '0',\r\n ).toLocaleString('en');\r\n return $sce.trustAsHtml(`$${formattedIntegerAmount}.${formattedAmount[1]}`);\r\n }\r\n\r\n function checkContribution(index) {\r\n vm.balanceStorage.contributionForm = vm.form;\r\n if (vm.form.donation[index] == undefined || vm.form.donation[index] == '') {\r\n vm.form.donation[index] = 0;\r\n }\r\n vm.balanceStorage.formIndex = index;\r\n if (!vm.form.checkbox[index]) {\r\n vm.form.donation[index] = 0;\r\n vm.contributeOptions[index].donationAmount = 0;\r\n addProgramContribution();\r\n }\r\n }\r\n\r\n function assignValues(myAccount) {\r\n vm.accountNickName = myAccount.BankDescription\r\n ? myAccount.BankDescription\r\n : 'Account';\r\n vm.routingNumber = myAccount.BankRoutingNumber;\r\n vm.lastFourDigits = myAccount.BankAccountNumber.substr(\r\n myAccount.BankAccountNumber.length - 4,\r\n );\r\n vm.accountNumber = `*****${vm.lastFourDigits}`;\r\n if (vm.balanceStorage.accountType) {\r\n vm.balanceStorage.accountType.forEach(item => {\r\n if (item.text === myAccount.BankAccountType) {\r\n vm.accountType = myAccount.BankAccountType;\r\n } else if (item.value === myAccount.BankAccountType) {\r\n vm.accountType = item.text;\r\n }\r\n });\r\n }\r\n $rootScope.accountNickName = vm.accountNickName;\r\n $rootScope.accountNumber = vm.accountNumber;\r\n }\r\n\r\n function backToBills() {\r\n $scope.$emit(assetService.balanceEvents.EDIT_BILLS, true);\r\n $state.go(assetService.balanceRouteStates.BILLS);\r\n }\r\n\r\n function changeAmount(newTotalAmount) {\r\n vm.tempTotalAmount = 0;\r\n vm.balanceStorage.selectedAccounts.forEach((ele, index) => {\r\n vm.tempTotalAmount =\r\n Number(vm.tempTotalAmount) +\r\n (ele.totalDonationAmount ? Number(ele.totalDonationAmount) : 0);\r\n });\r\n vm.tempCheckbox = vm.form.checkbox.filter(e => e == true);\r\n vm.tempCheckDonationValue = vm.contributeOptions.filter(\r\n item =>\r\n (isNaN(item.donationAmount)\r\n ? Number(item.donationAmount.substr(1).replace(/,/g, ''))\r\n : item.donationAmount) >= 0 &&\r\n (isNaN(item.donationAmount)\r\n ? Number(item.donationAmount.substr(1).replace(/,/g, ''))\r\n : item.donationAmount) <= 500,\r\n );\r\n\r\n if (vm.tempCheckDonationValue.length != vm.tempCheckbox.length) {\r\n vm.disableSubmit = true;\r\n } else {\r\n if (\r\n vm.balanceStorage.selectedAccounts.length === 1 &&\r\n vm.balanceStorage.totalNoWarmth <= 0 &&\r\n vm.balanceStorage.amountSelected !== '0'\r\n ) {\r\n vm.disableSubmit = true;\r\n } else {\r\n vm.disableSubmit = false;\r\n }\r\n }\r\n vm.balanceStorage.newTotalAmount =\r\n vm.tempTotalAmount > 0 ? vm.tempTotalAmount : parseFloat(newTotalAmount);\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $scope.$emit(assetService.balanceEvents.CHANGE_STORAGE, {});\r\n }\r\n\r\n function formatLastFourDigits(number) {\r\n const lastDigits = String(number).slice(12, 16);\r\n return lastDigits;\r\n }\r\n\r\n function returnToStep(value) {\r\n $scope.$emit(assetService.balanceEvents.SET_STEP, { step: value });\r\n $state.go(vm.viewRoutes[value]);\r\n }\r\n\r\n function schedulePayment(paramData) {\r\n $rootScope.isPayMyBill = true;\r\n return payNowOrScheduledService.sitecore.payNowOrScheduled(paramData).then(\r\n result => {\r\n if (result === '') {\r\n $rootScope.paymentSpinner = false;\r\n vm.payBillPageError = true;\r\n $rootScope.isPayMyBill = false;\r\n } else {\r\n vm.successPayment = result;\r\n if (vm.form.checkbox.length > 0 && vm.showContribution) {\r\n _.forEach(vm.form.checkbox, (value, index) => {\r\n pushDL(\r\n 'pay-bill',\r\n `share-the-light-|-${vm.contributeOptions[\r\n index\r\n ].jurisCode.toLowerCase()}`,\r\n 'kpi',\r\n );\r\n });\r\n }\r\n if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n pushDL('pay-bill', 'success-|-multiple', 'kpi');\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/success/pay-my-bill/thank-you-for-payment/na/multiple',\r\n );\r\n } else {\r\n pushDL('pay-bill', 'success-|-single', 'kpi');\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/success/pay-my-bill/thank-you-for-payment/na/single',\r\n );\r\n }\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (vm.successPayment.length > 0) {\r\n vm.successPayment.forEach((sElement, sIndex) => {\r\n if (\r\n sElement.processedResult.accountNumber ===\r\n element.accountNumber\r\n ) {\r\n vm.balanceStorage.selectedAccounts[index].confirmationCode =\r\n sElement.processedResult.paymentId;\r\n vm.balanceStorage.selectedAccounts[\r\n index\r\n ].cpiMessageDisplay = sElement.processedResult.metaData\r\n .cpiPostMessage\r\n ? sElement.processedResult.metaData.cpiPostMessage\r\n : vm.balanceStorage.selectedAccounts[index].message;\r\n }\r\n });\r\n }\r\n });\r\n if (result !== '' && result !== undefined && result !== null) {\r\n if (result.length > 0) {\r\n vm.errorResult = result[0].errorResult;\r\n vm.sucessStatus = result[0].processedResult.status;\r\n }\r\n }\r\n if (result.Error === invalidError) {\r\n $rootScope.paymentSpinner = false;\r\n vm.payBillPageError = true;\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $rootScope.isPayMyBill = false;\r\n }\r\n },\r\n error => {\r\n $rootScope.isPayMyBill = false;\r\n $rootScope.paymentSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function makeContribution() {\r\n _.forEach(vm.form.checkbox, (value, index) => {\r\n if (value) {\r\n const tempContriArray = vm.balanceStorage.selectedAccounts.filter(\r\n o1 => o1.id === vm.contributeOptions[index].id && o1.billAmount > 0,\r\n );\r\n if (tempContriArray.length > 0) {\r\n const dataToPost = {\r\n action:\r\n assetService.serviceActions.makeOneTimeMonthlyContribution\r\n .Donation,\r\n businessPartnerId: vm.accountSelected.primaryBp,\r\n contractAccountId: vm.contributeOptions[index].contractAccount,\r\n programName: vm.contributeOptions[index].id,\r\n donationAmount: isNaN(tempContriArray[0].donationValue)\r\n ? isNaN(tempContriArray[0].donationValue.charAt(0))\r\n ? tempContriArray[0].donationValue\r\n .substring(1)\r\n .replace(/,/g, '')\r\n : String(tempContriArray[0].donationValue)\r\n : String(tempContriArray[0].donationValue),\r\n monthly:\r\n assetService.serviceActions.makeOneTimeMonthlyContribution\r\n .ONE_TIME_PAYMENT,\r\n numberMonths: '0',\r\n };\r\n vm.programsContributions[index] = {\r\n programName: vm.contributeOptions[index].name,\r\n donationAmount: isNaN(tempContriArray[0].donationValue)\r\n ? isNaN(tempContriArray[0].donationValue.charAt(0))\r\n ? tempContriArray[0].donationValue\r\n .substring(1)\r\n .replace(/,/g, '')\r\n : String(tempContriArray[0].donationValue)\r\n : String(tempContriArray[0].donationValue),\r\n contractAccountId: vm.contributeOptions[index].contractAccount,\r\n newAmount: vm.newTotalAmount,\r\n jurisdiction: tempContriArray[0].jurisdiction.replace(/[.]/g, ''),\r\n };\r\n makeOneTimeMonthlyContribution(dataToPost);\r\n }\r\n // To do for make contributions\r\n }\r\n });\r\n vm.balanceStorage.programsContributions = vm.programsContributions;\r\n }\r\n\r\n function getJurisdictions() {\r\n if (vm.accJurisdiction[0].businessArea == 'FL01') {\r\n vm.jurisdiction = $rootScope.deFlorida;\r\n } else if (\r\n vm.accJurisdiction[0].businessArea === 'NC01' ||\r\n vm.accJurisdiction[0].businessArea === 'SC01'\r\n ) {\r\n vm.jurisdiction = $rootScope.deCarolinas;\r\n } else if (\r\n vm.accJurisdiction[0].businessArea === 'SC02' ||\r\n vm.accJurisdiction[0].businessArea === 'NC02'\r\n ) {\r\n vm.jurisdiction = $rootScope.deProgress;\r\n } else if (vm.accJurisdiction[0].businessArea == 'KY01') {\r\n vm.jurisdiction = $rootScope.deKentucky;\r\n } else if (vm.accJurisdiction[0].businessArea == 'OH01') {\r\n vm.jurisdiction = $rootScope.deOhio;\r\n } else if (vm.accJurisdiction[0].businessArea == 'IN01') {\r\n vm.jurisdiction = $rootScope.deIndiana;\r\n } else {\r\n vm.jurisdiction = '';\r\n }\r\n }\r\n\r\n function returnApplicablePrograms(data) {\r\n vm.loadingSpinner = true;\r\n return returnApplicableProgramsService.sitecore\r\n .returnApplicablePrograms(data)\r\n .then(\r\n result => {\r\n _temporalProgram = result.d.Programtores_nav.results[0].ProgramName.split(\r\n ':',\r\n );\r\n\r\n vm.accJurisdiction = vm.balanceStorage.accountStatusByCA.filter(\r\n x =>\r\n x.contractAccountNumber ==\r\n result.d.Programtores_nav.results[0].ContractAccount,\r\n );\r\n\r\n getJurisdictions();\r\n vm.contributeOptionsArray.push({\r\n id: _temporalProgram[0].trim(),\r\n name: _temporalProgram[1]\r\n .toLowerCase()\r\n .split(' ')\r\n .map(s => s.charAt(0).toUpperCase() + s.substring(1))\r\n .join(' '),\r\n contractAccount:\r\n result.d.Programtores_nav.results[0].ContractAccount,\r\n jurisdiction: vm.jurisdiction,\r\n jurisCode: vm.accJurisdiction[0].businessArea,\r\n donationAmount: '',\r\n });\r\n vm.tempcontriarray = vm.contributeOptionsArray.filter(\r\n ele => ele.jurisdiction === $rootScope.deProgress,\r\n );\r\n if (vm.tempcontriarray.length > 0) {\r\n angular.forEach(vm.contributeOptionsArray, valu => {\r\n if (valu.id === 'ENF') {\r\n valu.jurisdiction = $rootScope.deProgress;\r\n }\r\n });\r\n }\r\n vm.tempContributeOptions = [...vm.contributeOptionsArray];\r\n vm.contributeOptions = vm.contributeOptionsArray.filter(\r\n (item, itemValue, element) =>\r\n element.map(elementValue => elementValue.id).indexOf(item.id) ===\r\n itemValue,\r\n );\r\n angular.forEach(vm.tempContributeOptions, valu => {\r\n angular.forEach(\r\n vm.balanceStorage.selectedAccounts,\r\n (item, index) => {\r\n if (item.accountNumber === valu.contractAccount) {\r\n vm.balanceStorage.selectedAccounts[index].id = valu.id;\r\n vm.balanceStorage.selectedAccounts[index].jurisdiction =\r\n valu.jurisdiction;\r\n }\r\n },\r\n );\r\n });\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n },\r\n error => {\r\n //vm.loadingSpinner = false;\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n }\r\n\r\n function makeOneTimeMonthlyContribution(data) {\r\n return makeOneTimeMonthlyContributionService.sitecore\r\n .makeOneTimeMonthlyContribution(data)\r\n .then(\r\n result => {\r\n vm.makeContributionsPayment = {\r\n replyCode: result.d.Message.ZreplyCode,\r\n };\r\n },\r\n error => {\r\n $rootScope.paymentSpinner = false;\r\n responseNotificationsService.errorResponse({\r\n vehicle: assetService.strings.TOAST,\r\n message: error && error.message ? error.message : '',\r\n pageTitle: assetService.strings.PAY_MY_BILL,\r\n });\r\n },\r\n );\r\n }\r\n function notificationError() {\r\n $rootScope.notifHeaders = $scope.analytics.notif_error[0];\r\n $rootScope.notifMessage = angular.element('#DuplicatePayment').val();\r\n $rootScope.primaryCtaLink = $scope.analytics.notif_error[2];\r\n $rootScope.primaryCtaLabel = $scope.analytics.notif_error[3];\r\n $rootScope.secondaryCtaLabel = $scope.analytics.notif_error[4];\r\n $rootScope.secondaryCtaLink = $scope.analytics.notif_error[5];\r\n }\r\n\r\n function addDataToSitecoreCache(payload) {\r\n return ccSitecoreGenericCachingService.addToSitecoreCache(payload).then(\r\n response => response,\r\n () => {},\r\n );\r\n }\r\n\r\n function retrieveDataFromSitecoreCache(payload) {\r\n return ccSitecoreGenericCachingService\r\n .retrieveFromSitecoreCache(payload)\r\n .then(\r\n response => {\r\n vm.bankData = response;\r\n assignValues(vm.bankData);\r\n return response;\r\n },\r\n () => {},\r\n );\r\n }\r\n\r\n function getPrepaidDetails(data) {\r\n return getPrepaidDetailsService.sitecore.getPrepaidDetails(data).then(\r\n result => {\r\n _bankAccountsOriginal = angular.copy(\r\n result.d.PrepaidToBP.results[0].BPToBankDetail.results,\r\n );\r\n vm.loadingSpinner = false;\r\n },\r\n error => {\r\n vm.loadingSpinner = false;\r\n },\r\n );\r\n }\r\n\r\n function loadBankDetails(data) {\r\n getPrepaidDetails(data).then(() => {\r\n if (_bankAccountsOriginal.length > 0) {\r\n (vm.accountNickName = _bankAccountsOriginal[0].BankDescription),\r\n (vm.accountNumber = _bankAccountsOriginal[0].BankAccountNumber),\r\n (vm.bankAccountId = _bankAccountsOriginal[0].BankAccountId),\r\n (vm.displayAccounts = true);\r\n vm.showAddNewAccount = false;\r\n let lastFourDigits = _bankAccountsOriginal[0].BankAccountNumber.substr(\r\n _bankAccountsOriginal[0].BankAccountNumber.length - 4,\r\n );\r\n let accNumber = `*****${lastFourDigits}`;\r\n vm.accountNumber = accNumber;\r\n $rootScope.accountNickName = _bankAccountsOriginal[0].BankDescription;\r\n $rootScope.accountNumber = accNumber;\r\n vm.balanceStorage.accountId = _bankAccountsOriginal[0].BankAccountId;\r\n } else {\r\n $rootScope.noSavedACH = true;\r\n vm.noSavedACH = true;\r\n }\r\n //gat-event\r\n if (vm.balanceStorage.selectedAccounts.length > 1) {\r\n if (vm.noSavedACH == true) {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/unsaved-ach-bank-details/na/multiple',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/saved-ach-bank-details/na/multiple',\r\n );\r\n }\r\n pushDL('pay-bill', 'intent-|-multiple', 'kpi');\r\n } else {\r\n if (vm.noSavedACH == true) {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/unsaved-ach-bank-details/na/single',\r\n );\r\n } else {\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/load/pay-my-bill/saved-ach-bank-details/na/single',\r\n );\r\n }\r\n pushDL('pay-bill', 'intent-|-single', 'kpi');\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $rootScope.paymentSpinner = false;\r\n });\r\n }\r\n\r\n vm.submitAmount = ($event, isOnBlur) => {\r\n if (\r\n isOnBlur &&\r\n vm.balanceStorage.totalNoWarmth !== 0 &&\r\n vm.balanceStorage.totalNoWarmth !== '0.00'\r\n ) {\r\n vm.enableInputAmountBox = false;\r\n } else if (\r\n $event.key === 'Enter' &&\r\n vm.balanceStorage.totalNoWarmth !== 0 &&\r\n vm.balanceStorage.totalNoWarmth !== '0.00'\r\n ) {\r\n vm.enableInputAmountBox = false;\r\n }\r\n if (vm.balanceStorage.totalNoWarmth.length > vm.checkLimit) {\r\n vm.enableInputAmountBox = true;\r\n }\r\n };\r\n\r\n //Function to show error when amount length is greater than 6\r\n function checkAmountChange() {\r\n vm.totalNoWarmth = vm.balanceStorage.totalNoWarmth;\r\n let amountPaid = vm.totalNoWarmth;\r\n vm.amountToPay = String(amountPaid).split('');\r\n vm.amountLength = vm.amountToPay.length;\r\n if (vm.amountLength > vm.amtLimit) {\r\n vm.lengthError = true;\r\n } else {\r\n vm.lengthError = false;\r\n }\r\n }\r\n\r\n function addValidation() {\r\n const value = isNaN(vm.balanceStorage.totalNoWarmth)\r\n ? Number(vm.balanceStorage.totalNoWarmth.substring(1).replace(/,/g, ''))\r\n : vm.balanceStorage.totalNoWarmth;\r\n if (value <= 0) {\r\n vm.showValidation = true;\r\n } else {\r\n vm.showValidation = false;\r\n }\r\n }\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n guid: vm.guid ? vm.guid : '',\r\n });\r\n };\r\n\r\n function setModels() {\r\n vm.cacheId = sessionStorageService.get('cacheId');\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n payNowstatus = sessionStorageService.get('disableContribution');\r\n if (payNowstatus !== null && payNowstatus !== undefined) {\r\n vm.isPayNow = payNowstatus;\r\n } else {\r\n vm.isPayNow = true;\r\n }\r\n vm.ACIvalidationErr = $rootScope.bankError;\r\n vm.noSavedACH = $rootScope.noSavedACH;\r\n vm.savedOtherAmt = sessionStorageService.get('savedOtherAmount');\r\n if (vm.savedOtherAmt == true) {\r\n vm.checkSavedAmnt = true;\r\n } else {\r\n vm.checkSavedAmnt = false;\r\n }\r\n if (vm.cacheId) {\r\n retrieveDataFromSitecoreCache(vm.cacheId);\r\n }\r\n if (vm.balanceStorage.contributionForm === undefined) {\r\n vm.form.checkbox = [];\r\n }\r\n\r\n if (\r\n Number(vm.balanceStorage.newTotalAmount) <\r\n Number(vm.balanceStorage.totalAmount)\r\n ) {\r\n vm.showContribution = false;\r\n } else {\r\n vm.showContribution = true;\r\n }\r\n if (!$rootScope.zeroDueFlag) {\r\n vm.disableSubmit = false;\r\n }\r\n if (\r\n Number(vm.balanceStorage.newTotalAmount) > 0 ||\r\n Number(vm.balanceStorage.totalNoWarmth) > 0\r\n ) {\r\n vm.disableSubmit = false;\r\n } else {\r\n vm.disableSubmit = true;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.guid = angular.element('#guid').val();\r\n // First: Load sessionStorageService\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n //To be used in PaymentAmount\r\n sessionStorageService.set(\r\n assetService.storageKeys.filterAmountCheck,\r\n false,\r\n );\r\n if (Number(vm.balanceStorage.newTotalAmount) == 0) {\r\n vm.disableSubmit = true;\r\n } else vm.disableSubmit = false;\r\n vm.accountLength = sessionStorageService.get(\r\n assetService.storageKeys.accountLength,\r\n );\r\n if (\r\n vm.balanceStorage.selectedAccounts.length > 1 &&\r\n Number(vm.balanceStorage.newTotalAmount) == 0\r\n ) {\r\n $rootScope.zeroDueFlag = true;\r\n vm.multiAccZeroAmount = true;\r\n }\r\n\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (vm.balanceStorage.selectedAccounts.length > 0) {\r\n vm.balanceStorage.selectedAccounts[index].billAmount =\r\n vm.balanceStorage.selectedAccounts[index].amount;\r\n }\r\n });\r\n if (\r\n vm.balanceStorage.selectedAccounts.length == 1 &&\r\n vm.balanceStorage.totalAmount <= 0\r\n ) {\r\n vm.singleAccNegative = true;\r\n }\r\n if (\r\n vm.balanceStorage.selectedAccounts.length === 1 &&\r\n (vm.amountSelected == 1 || vm.singleAccNegative)\r\n ) {\r\n vm.enableInputAmountBox = true;\r\n vm.disableSubmit = true;\r\n }\r\n if (\r\n Number(vm.balanceStorage.totalAmount) <=\r\n Number(vm.balanceStorage.newTotalAmount)\r\n ) {\r\n vm.showContribution = true;\r\n if (vm.balanceStorage.contributionForm !== undefined) {\r\n vm.donationTotal = 0;\r\n vm.balanceStorage.contributionForm.checkbox.forEach((item, index) => {\r\n if (item !== undefined && item == true) {\r\n vm.donationTotal += isNaN(\r\n vm.balanceStorage.contributionForm.donation[index].charAt(0),\r\n )\r\n ? Number(\r\n vm.balanceStorage.contributionForm.donation[index]\r\n .substring(1)\r\n .replace(/,/g, ''),\r\n )\r\n : Number(vm.balanceStorage.contributionForm.donation[index]);\r\n }\r\n });\r\n } else {\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n element.donationValue = 0;\r\n });\r\n }\r\n } else {\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n element.donationValue = 0;\r\n });\r\n }\r\n vm.balanceStorage.selectedAccounts.forEach((element, index) => {\r\n if (\r\n vm.balanceStorage.newAmountsArray !== undefined &&\r\n vm.balanceStorage.newAmountsArray.length > 0\r\n ) {\r\n vm.balanceStorage.newAmountsArray.forEach((sElement, sIndex) => {\r\n if (sElement != null) {\r\n if (\r\n vm.balanceStorage.selectedAccounts[index].accountNumber ===\r\n vm.balanceStorage.newAmountsArray[sIndex].id\r\n ) {\r\n vm.bindedAmounts[\r\n index\r\n ] = `${vm.balanceStorage.newAmountsArray[sIndex].bill}`;\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n } else if (vm.bindedAmounts[index] === undefined) {\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = `${element.amount}`;\r\n }\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n }\r\n }\r\n });\r\n } else if (vm.balanceStorage.newAmounts !== undefined) {\r\n if (vm.balanceStorage.newAmounts[index] !== undefined) {\r\n vm.bindedAmounts[index] = `${vm.balanceStorage.newAmounts[index]}`;\r\n } else {\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = `${element.amount}`;\r\n }\r\n }\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n vm.newTotalAmount += Number(element.amount);\r\n } else {\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.bindedAmounts[index] = '0';\r\n } else {\r\n vm.bindedAmounts[index] = `${element.amount}`;\r\n }\r\n vm.inputAmount[index] = vm.bindedAmounts[index];\r\n vm.newTotalAmount += Number(element.amount);\r\n }\r\n\r\n if (\r\n vm.balanceStorage.amountSelected !== undefined &&\r\n vm.balanceStorage.amountSelected !== ''\r\n ) {\r\n vm.amountSelected = vm.balanceStorage.amountSelected;\r\n $scope.$parent.vm.mainBtnActivate = false;\r\n } else {\r\n vm.amountSelected = '';\r\n }\r\n if (vm.amountSelected === '1') {\r\n vm.amountSection = true;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n } else {\r\n vm.amountSection = false;\r\n vm.newTotalAmount = vm.balanceStorage.newTotalAmount;\r\n }\r\n if (element.amount <= 0) {\r\n vm.negativeAmountSection = true;\r\n vm.balanceStorage.totalNoWarmth = vm.balanceStorage.newTotalAmount;\r\n }\r\n });\r\n\r\n vm.bpid = vm.balanceStorage.globalSelectedAccount.businessPartner;\r\n /* get bills dynamically from session storage */\r\n vm.bills = _.map(vm.balanceStorage.selectedAccounts, item => ({\r\n contractAccountId: item.accountNumber,\r\n }));\r\n const promises = [];\r\n _.forEach(vm.bills, account => {\r\n promises.push(returnApplicablePrograms(account));\r\n });\r\n\r\n commonService.executePromises(promises).then(() => {\r\n // --Start Validation: If balanceStorage has already data\r\n if (vm.balanceStorage.dateSelected !== undefined) {\r\n if (vm.balanceStorage.dateSelected.index === _otherDateValue) {\r\n vm.otherPaymentDate = true;\r\n } else {\r\n vm.otherPaymentDate = false;\r\n }\r\n } else {\r\n vm.otherPaymentDate = false;\r\n }\r\n if (vm.balanceStorage.newTotalAmount !== undefined) {\r\n vm.newPaymentAmount = true;\r\n } else {\r\n vm.newPaymentAmount = false;\r\n }\r\n if (vm.balanceStorage.shareWarmth !== undefined) {\r\n vm.warmth = true;\r\n } else {\r\n vm.warmth = false;\r\n }\r\n if (vm.balanceStorage.contributionForm !== undefined) {\r\n vm.donationTotal = 0;\r\n vm.balanceStorage.contributionForm.checkbox.forEach((item, index) => {\r\n if (item !== undefined && item == true) {\r\n vm.donationTotal += isNaN(\r\n vm.balanceStorage.contributionForm.donation[index].charAt(0),\r\n )\r\n ? Number(\r\n vm.balanceStorage.contributionForm.donation[index]\r\n .substring(1)\r\n .replace(/,/g, ''),\r\n )\r\n : Number(vm.balanceStorage.contributionForm.donation[index]);\r\n vm.form.checkbox[index] = true;\r\n vm.form.donation[index] = isNaN(\r\n vm.balanceStorage.contributionForm.donation[index].charAt(0),\r\n )\r\n ? Number(\r\n vm.balanceStorage.contributionForm.donation[index]\r\n .substring(1)\r\n .replace(/,/g, ''),\r\n )\r\n : Number(vm.balanceStorage.contributionForm.donation[index]);\r\n }\r\n });\r\n if (\r\n (vm.donationTotal + Number(vm.balanceStorage.totalAmount)).toFixed(\r\n _toFixed,\r\n ) === vm.balanceStorage.newTotalAmount\r\n ) {\r\n vm.showContribution = true;\r\n }\r\n } else {\r\n vm.form = {\r\n checkbox: [],\r\n donation: [],\r\n };\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n });\r\n }\r\n\r\n function changeDate() {\r\n if (\r\n vm.balanceStorage.calendarDate &&\r\n vm.balanceStorage.dateSelected.index === '2'\r\n ) {\r\n vm.selectedDate = vm.balanceStorage.calendarDate.replace(/ /g, '');\r\n var currentDate = new Date();\r\n var d = String(currentDate.getDate()).padStart(2, '0');\r\n var m = String(currentDate.getMonth() + 1).padStart(2, '0');\r\n var y = currentDate.getFullYear();\r\n var dateFormat = m + '/' + d + '/' + y;\r\n if (dateFormat == vm.selectedDate) {\r\n var currESTDate = currentDate.toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n });\r\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\r\n }\r\n } else if (\r\n vm.balanceStorage.dateSelected &&\r\n vm.balanceStorage.dateSelected.index === '0'\r\n ) {\r\n // var vm.selectedDate = vm.balanceStorage.displayDate;\r\n const currentDate = new Date();\r\n var currESTDate = currentDate.toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n });\r\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\r\n vm.displayDate = vm.selectedDate;\r\n } else if (\r\n vm.balanceStorage.dateSelected &&\r\n vm.balanceStorage.dateSelected.index === '1'\r\n ) {\r\n const currentDate = new Date();\r\n var currESTDate = currentDate.toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n });\r\n vm.balanceStorage.selectedAccounts.forEach(account => {\r\n account.dueDate =\r\n new Date(account.dueDate).getTime() > currentDate.getTime()\r\n ? account.dueDate\r\n : moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\r\n });\r\n }\r\n }\r\n\r\n $scope.$on(assetService.events.refreshPaymentPage, () => {\r\n setModels();\r\n });\r\n\r\n $scope.$on(assetService.events.submitPayment, () => {\r\n submitPayment();\r\n });\r\n\r\n $scope.$on(assetService.events.kubraDuplicateErrorPayBill, (event, data) => {\r\n if (data) {\r\n if (data.errorCode === 'CD002') {\r\n vm.kubraerror = true;\r\n $rootScope.paymentSpinner = false;\r\n //for GAT\r\n pushVPV(\r\n '/vpv/de/page/pay-bill/error/pay-my-bill/na/na/' + data.errorCode,\r\n );\r\n var errorMsg = 'We are unable to process payments at this time.';\r\n pushDL(\r\n 'pay-bill_error',\r\n data.errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.payNowOrScheduled}`,\r\n 'pay-my-bill',\r\n );\r\n }\r\n if (data.errorVal) {\r\n vm.payBillPageError = true;\r\n $rootScope.paymentSpinner = false;\r\n broadcastService.pageNotificationTriggered({ type: 'RESET' });\r\n //for GAT\r\n pushVPV('/vpv/de/page/pay-bill/error/pay-my-bill/na/na/' + 'not-set');\r\n var errorMsg = 'We are unable to process payments at this time.';\r\n pushDL(\r\n 'pay-bill_error',\r\n 'not-set' +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMsg) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.payNowOrScheduled}`,\r\n 'pay-my-bill',\r\n );\r\n }\r\n }\r\n });\r\n\r\n function onCancel() {\r\n window.location.href = '/my-account/Dashboard';\r\n }\r\n\r\n function previous() {\r\n if (\r\n vm.accountLength !== null &&\r\n vm.accountLength.length > 1 &&\r\n vm.accountLength.length <= 20\r\n ) {\r\n $state.go(assetService.balanceRouteStates.BILLS);\r\n } else {\r\n vm.balanceStorage.dateSelected = undefined;\r\n vm.balanceStorage.totalNoWarmth = undefined;\r\n vm.balanceStorage.contributionForm = undefined;\r\n vm.balanceStorage.newAmountsArray = undefined;\r\n vm.balanceStorage.newAmounts = undefined;\r\n vm.balanceStorage.newTotalAmount = vm.balanceStorage.totalAmount;\r\n vm.balanceStorage.selectedAccounts[0].totalDonationAmount = undefined;\r\n vm.form.checkbox = [];\r\n vm.balanceStorage.amountSelected = undefined;\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n $state.go(assetService.balanceRouteStates.HOW_TO_PAY);\r\n }\r\n }\r\n\r\n //Function to check if amount entered is greater than due\r\n function checkAmoutPaid() {\r\n const totalDueAmt = vm.balanceStorage.totalAmount;\r\n const totalAmtToPay = vm.balanceStorage.totalNoWarmth;\r\n if (totalAmtToPay > totalDueAmt) {\r\n vm.checkSavedAmnt = true;\r\n } else {\r\n vm.checkSavedAmnt = false;\r\n }\r\n sessionStorageService.set('savedOtherAmount', vm.checkSavedAmnt);\r\n\r\n if (vm.checkSavedAmnt == true || vm.lengthError == true) {\r\n vm.checkForError = true;\r\n } else {\r\n vm.checkForError = false;\r\n }\r\n }\r\n\r\n function savePayment() {\r\n if (vm.lengthError == false && vm.checkSavedAmnt == true) {\r\n checkSubmitPayment();\r\n } else {\r\n document.getElementById('noBalance').focus();\r\n }\r\n }\r\n\r\n //Function to show the modal when amount is greater than due\r\n function checkSubmitPayment() {\r\n if (vm.checkSavedAmnt == true) {\r\n vm.showModal = true;\r\n } else {\r\n vm.showModal = false;\r\n }\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n modalService.checkSubmitPayment();\r\n }\r\n\r\n function submitPayment() {\r\n addProgramContribution();\r\n $rootScope.paymentSpinner = true;\r\n $window.scrollTo(0, 0);\r\n // $scope.$on(assetService.balanceEvents.SAVE_STEPS, () => {\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n notificationError();\r\n vm.countButtonClick += 1;\r\n //This needs to be checked\r\n if (vm.countButtonClick == 1) {\r\n $scope.$parent.vm.mainBtnActivate = true;\r\n } else {\r\n $scope.$parent.vm.mainBtnActivate = false;\r\n }\r\n changeDate();\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n\r\n const _businessPartnerId = orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : vm.balanceStorage.globalSelectedAccount.businessPartner;\r\n\r\n vm.paramDataTemp = _.map(vm.balanceStorage.selectedAccounts, bill => {\r\n let paymentDate = vm.selectedDate;\r\n if (\r\n vm.balanceStorage.dateSelected &&\r\n vm.balanceStorage.dateSelected.index === '1'\r\n ) {\r\n paymentDate =\r\n new Date(bill.dueDate) < new Date()\r\n ? moment(\r\n new Date().toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n }),\r\n 'MM/DD/YYYY',\r\n ).format('MM/DD/YY')\r\n : bill.dueDate;\r\n }\r\n return {\r\n language: assetService.strings.EN,\r\n BusinessPartner: _businessPartnerId,\r\n clientReferenceId: '',\r\n payType: {\r\n mode: assetService.strings.BANK_ACCOUNT,\r\n routing: assetService.strings.STANDARD,\r\n },\r\n // vm.balanceStorage.newTotalAmount,\r\n amount:\r\n vm.balanceStorage.selectedAccounts.length > 1\r\n ? bill.donationValue\r\n ? Number(bill.billAmount) <= 0\r\n ? (\r\n Number(bill.billAmount) - Number(bill.donationValue)\r\n ).toFixed(_toFixed)\r\n : (\r\n Number(bill.billAmount) + Number(bill.donationValue)\r\n ).toFixed(_toFixed)\r\n : String(bill.billAmount)\r\n : vm.balanceStorage.newTotalAmount,\r\n date:\r\n paymentDate ||\r\n (new Date(bill.dueDate) < new Date()\r\n ? moment(\r\n new Date().toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n }),\r\n 'MM/DD/YYYY',\r\n ).format('MM/DD/YY')\r\n : bill.dueDate),\r\n accountNumber: bill.accountNumber ? bill.accountNumber : '',\r\n payer: {\r\n payerName: `${vm.balanceStorage.globalSelectedAccount.payerFirstName} ${vm.balanceStorage.globalSelectedAccount.payerLastName}`\r\n ? `${vm.balanceStorage.globalSelectedAccount.payerFirstName} ${vm.balanceStorage.globalSelectedAccount.payerLastName}`\r\n : '',\r\n eMail: vm.balanceStorage.currentUser.emailId\r\n ? vm.balanceStorage.currentUser.emailId\r\n : '',\r\n },\r\n paySource: {\r\n channel: {\r\n type: assetService.strings.ENROLLED,\r\n enrolled: assetService.strings.WEB,\r\n unEnrolled: assetService.strings.NONE,\r\n },\r\n },\r\n sapWalletProfile: {\r\n sapBankAccountId: vm.balanceStorage.accountId,\r\n sapBankBp: _businessPartnerId,\r\n },\r\n };\r\n });\r\n\r\n if (\r\n vm.form.checkbox.length > 0 &&\r\n vm.form.donation.length > 0 &&\r\n vm.showContribution\r\n ) {\r\n makeContribution();\r\n vm.paramDataTemp = _.filter(\r\n vm.paramDataTemp,\r\n account => account.amount > 0,\r\n );\r\n schedulePayment(vm.paramDataTemp).then(() => {\r\n if (vm.errorResult === null && vm.sucessStatus === 'SCHEDULED') {\r\n sessionStorageService.set('cacheId', vm.BankAccountId);\r\n $state.go(assetService.balanceRouteStates.SUCCESS_PAY);\r\n }\r\n });\r\n } else {\r\n vm.paramDataTemp = _.filter(\r\n vm.paramDataTemp,\r\n account => account.amount > 0,\r\n );\r\n schedulePayment(vm.paramDataTemp).then(() => {\r\n if (vm.errorResult === null && vm.sucessStatus === 'SCHEDULED') {\r\n sessionStorageService.set('cacheId', vm.BankAccountId);\r\n $state.go(assetService.balanceRouteStates.SUCCESS_PAY);\r\n }\r\n });\r\n }\r\n sessionStorageService.set(\r\n assetService.storageKeys.balanceStorage,\r\n vm.balanceStorage,\r\n );\r\n // });\r\n }\r\n\r\n $scope.$watch('programForm.$invalid', data => {\r\n // Always observe the value from the form to send the disable\r\n $scope.$parent.vm.mainBtnActivate = data;\r\n });\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n $rootScope.paymentSpinner = true;\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n vm.accountSelected = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n ).accountSelected;\r\n const relatedBP = sessionStorageService.get(\r\n assetService.storageKeys.relatedBPNumber,\r\n );\r\n\r\n const orgBP = sessionStorageService.get(assetService.storageKeys.orgBP);\r\n\r\n const data = {\r\n businessPartnerId: orgBP\r\n ? orgBP\r\n : relatedBP\r\n ? relatedBP\r\n : vm.accountSelected.primaryBp,\r\n contractAccountId: vm.balanceStorage.globalSelectedAccount.accountNumber,\r\n };\r\n\r\n vm.acctNickName = vm.balanceStorage.selectedAccounts[0].accountNickname;\r\n vm.acctAddress = vm.balanceStorage.selectedAccounts[0].address;\r\n vm.acctNo = vm.balanceStorage.selectedAccounts[0].accountNumber;\r\n vm.tooltipMessage = vm.balanceStorage.selectedAccounts[0].message;\r\n let currentDate = new Date();\r\n let currESTDate = currentDate.toLocaleString('en-US', {\r\n timeZone: 'America/New_York',\r\n });\r\n vm.selectedDate = moment(currESTDate, 'MM/DD/YYYY').format('MM/DD/YY');\r\n loadBankDetails(data);\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('SubmitPayment', SubmitPayment);\r\n\r\nSubmitPayment.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$scope',\r\n '$rootScope',\r\n '$filter',\r\n '$sce',\r\n 'commongaTaggingService',\r\n 'broadcastService',\r\n '$modalInstance',\r\n '$window',\r\n];\r\n\r\nfunction SubmitPayment(\r\n sessionStorageService,\r\n assetService,\r\n $scope,\r\n $rootScope,\r\n $filter,\r\n $sce,\r\n commongaTaggingService,\r\n broadcastService,\r\n $modalInstance,\r\n $window,\r\n) {\r\n /* --------------Gloabl Vars-----------------------*/\r\n const vm = this;\r\n $rootScope.apiValidation = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.closeModal = closeModal;\r\n vm.makePayment = makePayment;\r\n vm.updatePayment = updatePayment;\r\n vm.paymentSubmit = paymentSubmit;\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n function closeModal() {\r\n broadcastService.closePaymentModal();\r\n $modalInstance.close();\r\n }\r\n\r\n function makePayment() {\r\n broadcastService.submitPaymentButton();\r\n closeModal();\r\n $window.scrollTo(0, 0);\r\n }\r\n\r\n function updatePayment() {\r\n broadcastService.savePaymentButton();\r\n $modalInstance.close();\r\n }\r\n\r\n function paymentSubmit(a) {\r\n if (a == 'PayMyBill') {\r\n makePayment();\r\n } else if (a == 'ManageSchedulePay') {\r\n updatePayment();\r\n }\r\n }\r\n\r\n function load() {\r\n vm.balanceStorage = sessionStorageService.get(\r\n assetService.storageKeys.balanceStorage,\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n pushVPV(\r\n '/vpv/de/lite-auth/pay-bill/load/payment-amount/payment-creates-credit-balance',\r\n );\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('bpBannerController', bpBannerController);\r\nbpBannerController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'getAccountConditionService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction bpBannerController(\r\n $log,\r\n $scope,\r\n assetService,\r\n getAccountConditionService,\r\n sessionStorageService,\r\n) {\r\n /** Scope Vars */\r\n\r\n const vm = this;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n const params = {};\r\n const rc_UpdatePhoneNumber = '009';\r\n const noPhoneNumberFlag = 'No_Phone_Number_Flag';\r\n const rc_UpdateEmail = '009';\r\n\r\n /** Global Vars */\r\n vm.response = {\r\n displayBPBanner: false,\r\n message: null,\r\n ctaLink: {\r\n url: null,\r\n label: null,\r\n },\r\n };\r\n vm.errorMsg = assetService.messageType.error;\r\n vm.informationalMsg = assetService.messageType.informational;\r\n vm.successMsg = assetService.messageType.success;\r\n vm.msgType = null;\r\n vm.loadingSpinner = true;\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => { // Global Switcher Account\r\n vm.loadingSpinner = true;\r\n globalAccountInfo = sessionStorageService.get(assetService.storageKeys.selectedAddressData);\r\n if (globalAccountInfo && globalAccountInfo.hasOwnProperty('accountSelected')) {\r\n if (globalAccountInfo.accountSelected.length) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n load();\r\n }\r\n }\r\n });\r\n\r\n /** Function Definitions */\r\n function load() {\r\n const params = {\r\n contractAccountId: globalSelectedAccount.accountNum,\r\n };\r\n\r\n getAccountCondition(params).then(\r\n () => {\r\n\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function getAccountCondition(data) {\r\n return getAccountConditionService.sitecore.accountCondition(data)\r\n .then(\r\n (result) => {\r\n const updatePhoneNumber = _.filter(_.map(result.ReturnCodes, returnCode => ({\r\n message: returnCode.ContractAccounts.Response[1].Value,\r\n })), returnCode => returnCode.returnCode.length && returnCode.ReturnCode === rc_UpdatePhoneNumber && returnCode.ContractAccounts.Response.length && returnCode.ContractAccounts.Response[0].Name === noPhoneNumberFlag && returnCode.ContractAccounts.Response[0].Value === 'X');\r\n\r\n const response = _.map(result.getAccountAndBillingInfoResList[0].messageList, msg => ({\r\n displayBPBanner: true,\r\n message: msg.message,\r\n }));\r\n\r\n vm.response = response[0];\r\n vm.loadingSpinner = false;\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n /** Initialize */\r\n let init = function () {};\r\n\r\n init();\r\n}\r\n","app.controller('caBannerController', caBannerController);\r\ncaBannerController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'getAccountBalanceForRegularAccountService',\r\n 'sessionStorageService',\r\n '$rootScope',\r\n];\r\n\r\nfunction caBannerController(\r\n $log,\r\n $scope,\r\n assetService,\r\n getAccountBalanceForRegularAccountService,\r\n sessionStorageService,\r\n $rootScope,\r\n) {\r\n /** Scope Vars */\r\n\r\n const vm = this;\r\n vm.displayCABanner = false;\r\n let globalAccountInfo = {};\r\n let globalSelectedAccount = {};\r\n const params = {};\r\n /** Global Vars */\r\n vm.response = {\r\n displayCABanner: false,\r\n message: null,\r\n ctaLink: {\r\n url: null,\r\n label: null,\r\n },\r\n };\r\n vm.errorMsg = assetService.messageType.error;\r\n vm.informationalMsg = assetService.messageType.informational;\r\n vm.successMsg = assetService.messageType.success;\r\n vm.msgType = vm.errorMsg;\r\n vm.loadingSpinner = true;\r\n\r\n /** Watchers */\r\n $scope.$on(assetService.events.globalSwitcherAccount, () => {\r\n // Global Switcher Account\r\n vm.loadingSpinner = true;\r\n globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n if (\r\n globalAccountInfo &&\r\n globalAccountInfo.hasOwnProperty('accountSelected')\r\n ) {\r\n if (globalAccountInfo.accountSelected) {\r\n globalSelectedAccount = globalAccountInfo.accountSelected;\r\n load();\r\n }\r\n }\r\n });\r\n\r\n /** Function Definitions */\r\n function load() {\r\n const params = {\r\n accountList: [\r\n {\r\n contractAccountNumber: globalSelectedAccount.accountNum,\r\n zipCode: globalSelectedAccount.zipCode,\r\n },\r\n ],\r\n };\r\n\r\n getAccountBalanceForRegularAccount(params).then(\r\n () => {},\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n\r\n function getAccountBalanceForRegularAccount(data) {\r\n // check if value exists in rootScope\r\n if ($rootScope.firstTimeDashboard && $rootScope.accountBalanceResult) {\r\n const result = $rootScope.accountBalanceResult;\r\n setAccountBalanceModel(result);\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n\r\n return getAccountBalanceForRegularAccountService.sitecore\r\n .getAccountBalanceForRegularAccount(data)\r\n .then(\r\n result => {\r\n setAccountBalanceModel(result);\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n\r\n function setAccountBalanceModel(result) {\r\n let msgPriority =\r\n result.getAccountAndBillingInfoResList[0].messageList[0].messagePriority;\r\n let acountInfoRestSelected = result.getAccountAndBillingInfoResList.filter(\r\n account =>\r\n account.contractAccountNumber == globalSelectedAccount.accountNum,\r\n );\r\n if (acountInfoRestSelected) {\r\n if (\r\n acountInfoRestSelected[0].messageList.length > 0 &&\r\n acountInfoRestSelected[0].messageList[0].messageCode !== '80 ' &&\r\n acountInfoRestSelected[0].messageList[0].messageCode !== 'PO' &&\r\n acountInfoRestSelected[0].messageList[0].messagePriority === 1000 &&\r\n msgPriority !== null &&\r\n msgPriority !== ''\r\n ) {\r\n const response = _.map(acountInfoRestSelected[0].messageList, msg => ({\r\n displayCABanner: true,\r\n message: msg.message,\r\n }));\r\n\r\n vm.response = response[0];\r\n vm.displayCABanner = true;\r\n } else {\r\n vm.displayCABanner = false;\r\n }\r\n vm.loadingSpinner = false;\r\n }\r\n }\r\n\r\n /** Initialize */\r\n let init = function() {};\r\n\r\n init();\r\n}\r\n","app.controller('FPDashboardController', FPDashboardController);\r\nFPDashboardController.$inject = [\r\n '$log',\r\n '$location',\r\n 'assetService',\r\n 'apiConfigService',\r\n 'apiApigeeConfigService',\r\n 'FPAddendumService',\r\n 'FPAppService',\r\n 'FPBroadcastService',\r\n 'FPCurrentUserService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'sessionStorageService',\r\n 'FPSitecoreServices',\r\n 'acceptedOrdersWebWorkerService',\r\n 'invoiceOrdersWebWorkerService',\r\n 'getCEPAddendumService',\r\n 'getCEPCompanyDetailsService',\r\n 'getCEPUsersService',\r\n];\r\n\r\nfunction FPDashboardController(\r\n $log,\r\n $location,\r\n assetService,\r\n apiConfigService,\r\n apiApigeeConfigService,\r\n addendumService,\r\n appService,\r\n broadcastService,\r\n currentUserService,\r\n commonService,\r\n dtoService,\r\n indexedDbService,\r\n sessionStorageService,\r\n sitecoreServices,\r\n acceptedOrdersWebWorkerService,\r\n invoiceOrdersWebWorkerService,\r\n getCEPAddendumService,\r\n getCEPCompanyDetailsService,\r\n getCEPUsersService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n const _acceptedOrders = [];\r\n let _addendum = {};\r\n const _baseUrl = window.location.origin;\r\n const _errorsPageUrl = assetService.pageUrls.errorPage;\r\n const _invoiceOrders = [];\r\n const _roleContractor = assetService.userRoles.contractor;\r\n const _roleTechnician = assetService.userRoles.technician;\r\n let _user = {};\r\n let _users = [];\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.acceptedOrdersLoaded = false;\r\n vm.cdpUserId = null;\r\n vm.clearIndexedDb = false;\r\n vm.currentUserRole = currentUserService.getUserRole();\r\n vm.loaded = false;\r\n vm.loadingSpinner = true;\r\n vm.invoiceOrdersLoaded = false;\r\n vm.isContractor = false;\r\n vm.serviceHost = null;\r\n vm.serviceOrder = null;\r\n vm.sessionCdpUserId = null;\r\n vm.showOrdersRequest = false;\r\n vm.workOrderHeader = {};\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n appService.initDataLoad();\r\n\r\n const promises = [getAddendum(), getCompanyDetails(), getUsers()];\r\n commonService.executePromises(promises).then(() => {\r\n broadcastService.companyDetailsLoaded();\r\n broadcastService.usersLoaded();\r\n const qPromises = addendumService.parseAddendumIndexedDb(_addendum);\r\n commonService.executePromises(qPromises).then(\r\n () => {\r\n const _dataObj = appService.getDataLoad();\r\n _dataObj.companyDetails = true;\r\n _dataObj.addendum = true;\r\n _dataObj.users = true;\r\n if (!appService.validateDataLoad(_dataObj)) {\r\n appService.setDataLoad(_dataObj);\r\n }\r\n\r\n broadcastService.addendumLoaded();\r\n\r\n const queue = [];\r\n queue.push(\r\n indexedDbService.getAcceptedOrders().then((result) => {\r\n if (result.length === 0) {\r\n getAcceptedOrders();\r\n } else {\r\n const _dataObj = appService.getDataLoad();\r\n _dataObj.acceptedOrders = true;\r\n if (!appService.validateDataLoad(_dataObj)) {\r\n appService.setDataLoad(_dataObj);\r\n }\r\n broadcastService.acceptedOrdersLoaded();\r\n }\r\n }),\r\n );\r\n queue.push(\r\n indexedDbService.getInvoiceOrders().then((result) => {\r\n if (result.length === 0) {\r\n getInvoiceOrders();\r\n } else {\r\n const _dataObj = appService.getDataLoad();\r\n _dataObj.acceptedOrders = true;\r\n if (!appService.validateDataLoad(_dataObj)) {\r\n appService.setDataLoad(_dataObj);\r\n }\r\n broadcastService.invoiceOrdersLoaded();\r\n }\r\n }),\r\n );\r\n commonService.executePromises(queue).then(\r\n (result) => {},\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n });\r\n\r\n function getAddendum() {\r\n return getCEPAddendumService.sitecore.getCEPAddendum(vm.currentUser).then(\r\n (result) => {\r\n _addendum = dtoService.validateFullAddendum(result.addendum);\r\n addendumService.parseFullAddendum(_addendum);\r\n },\r\n (error) => {\r\n s;\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getAcceptedOrders() {\r\n setFlag(assetService.storageKeys.toggleFlags.acceptedOrders);\r\n let url = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n url = apiApigeeConfigService.get.getCEPAcceptedOrdersUrl(\r\n vm.currentUser,\r\n );\r\n } else {\r\n url = `${window.location.origin}/${apiConfigService.get.getCEPAcceptedOrdersUrl()}`;\r\n }\r\n\r\n return acceptedOrdersWebWorkerService.callWebWorker(url).then(\r\n (result) => {\r\n if (result.data.serviceOrders) {\r\n // Temp solution\r\n indexedDbService.putAcceptedOrders(result.data.serviceOrders).then(\r\n (result) => {\r\n const _dataObj = appService.getDataLoad();\r\n _dataObj.acceptedOrders = true;\r\n if (!appService.validateDataLoad(_dataObj)) {\r\n appService.setDataLoad(_dataObj);\r\n }\r\n broadcastService.acceptedOrdersLoaded();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getInvoiceOrders() {\r\n setFlag(assetService.storageKeys.toggleFlags.invoiceOrders);\r\n let url = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n url = apiApigeeConfigService.get.getCEPInvoiceOrdersUrl(vm.currentUser);\r\n } else {\r\n url = `${window.location.origin}/${apiConfigService.get.getCEPInvoiceOrdersUrl()}`;\r\n }\r\n\r\n return invoiceOrdersWebWorkerService.callWebWorker(url).then(\r\n (result) => {\r\n if (result.data.serviceOrders) {\r\n // Temp solution\r\n indexedDbService.putInvoiceOrders(result.data.serviceOrders).then(\r\n (result) => {\r\n const _dataObj = appService.getDataLoad();\r\n _dataObj.acceptedOrders = true;\r\n if (!appService.validateDataLoad(_dataObj)) {\r\n appService.setDataLoad(_dataObj);\r\n }\r\n broadcastService.invoiceOrdersLoaded();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getCompanyDetails() {\r\n return getCEPCompanyDetailsService.sitecore\r\n .getCEPCompanyDetails(vm.currentUser)\r\n .then(\r\n (result) => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.widgetsData.companyDetails,\r\n result,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getUsers() {\r\n setFlag(assetService.storageKeys.toggleFlags.users);\r\n return getCEPUsersService.sitecore.getCEPUsers(vm.currentUser).then(\r\n (result) => {\r\n // _users = result.users;\r\n _users = result.users;\r\n const currentUser = _.find(\r\n _users,\r\n user => user.cdpId === vm.cdpUserId,\r\n );\r\n currentUserService.setUserName(currentUser.name);\r\n _.forEach(_users, (user) => {\r\n user.toggleFlag = sessionStorageService.get(\r\n assetService.storageKeys.toggleFlags.users,\r\n );\r\n });\r\n sessionStorageService.set(\r\n assetService.storageKeys.widgetsData.users,\r\n _users,\r\n );\r\n _user = _.find(_users, user => user.cdpId === vm.cdpUserId);\r\n if (_user) {\r\n if (_user.role.toLowerCase() === _roleContractor) {\r\n vm.isContractor = true;\r\n vm.currentUserRole = assetService.userTypes.CONTRACTOR;\r\n currentUserService.setUserRole(assetService.userTypes.CONTRACTOR);\r\n } else if (_user.role.toLowerCase() === _roleTechnician) {\r\n vm.isContractor = false;\r\n vm.currentUserRole = assetService.userTypes.TECHNICIAN;\r\n currentUserService.setUserRole(assetService.userTypes.TECHNICIAN);\r\n } else {\r\n vm.currentUserRole = assetService.strings.UNAUTHORIZED;\r\n currentUserService.setUserRole(assetService.strings.UNAUTHORIZED);\r\n if(assetService.apiConfig.showAppErrors) $log.error(assetService.errors.userNotAuthorized);\r\n }\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setFlag(flag) {\r\n let toggleFlag = sessionStorageService.get(flag);\r\n toggleFlag = !toggleFlag ? '1' : toggleFlag === 1 ? '0' : '1';\r\n\r\n sessionStorageService.set(flag, toggleFlag);\r\n }\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n vm.sessionCdpUserId = currentUserService.getCdpUserId();\r\n\r\n if (assetService.apiConfig.useLocalHost) {\r\n vm.currentUser = {\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpUserId: $location.search().cdpId, // Get Primary Bp\r\n };\r\n\r\n indexedDbService.ensureDb().then(\r\n () => {\r\n vm.cdpUserId = vm.currentUser.cdpUserId;\r\n sessionStorageService.set(\r\n assetService.storageKeys.cdpUserId,\r\n vm.cdpUserId,\r\n );\r\n\r\n if (vm.sessionCdpUserId && vm.cdpUserId !== vm.sessionCdpUserId) {\r\n if (vm.clearIndexedDb) {\r\n sessionStorageService.clear();\r\n\r\n const qPromises = [\r\n indexedDbService.clearAcceptedOrders(),\r\n indexedDbService.clearInvoiceOrders(),\r\n indexedDbService.clearCompanyOverview(),\r\n indexedDbService.clearUsers(),\r\n indexedDbService.clearCancelledReasonTypes(),\r\n indexedDbService.clearDeclinedReasonTypes(),\r\n indexedDbService.clearStatusTypes(),\r\n indexedDbService.clearSRResolutionTypes(),\r\n indexedDbService.clearSRRepairTypes(),\r\n indexedDbService.clearSRStatusTypes(),\r\n indexedDbService.clearWOResolutionTypes(),\r\n indexedDbService.clearWOStatusTypes(),\r\n ];\r\n\r\n commonService.executePromises(qPromises).then(() => {\r\n vm.loaded = true;\r\n load();\r\n });\r\n }\r\n } else {\r\n vm.loaded = true;\r\n load();\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n const promises = [\r\n getHost(),\r\n getCdpId(),\r\n indexedDbService.ensureDb(),\r\n ];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n if (vm.clearIndexedDb) {\r\n sessionStorageService.clear();\r\n\r\n const qPromises = [\r\n indexedDbService.clearAcceptedOrders(),\r\n indexedDbService.clearInvoiceOrders(),\r\n indexedDbService.clearCompanyOverview(),\r\n indexedDbService.clearUsers(),\r\n indexedDbService.clearCancelledReasonTypes(),\r\n indexedDbService.clearDeclinedReasonTypes(),\r\n indexedDbService.clearStatusTypes(),\r\n indexedDbService.clearSRResolutionTypes(),\r\n indexedDbService.clearSRRepairTypes(),\r\n indexedDbService.clearSRStatusTypes(),\r\n indexedDbService.clearWOResolutionTypes(),\r\n indexedDbService.clearWOStatusTypes(),\r\n ];\r\n\r\n commonService.executePromises(qPromises).then(() => {\r\n // re-init session vars\r\n sessionStorageService.set(\r\n assetService.storageKeys.cdpUserId,\r\n vm.cdpUserId,\r\n );\r\n\r\n vm.loaded = true;\r\n load();\r\n });\r\n } else {\r\n vm.loaded = true;\r\n load();\r\n }\r\n });\r\n\r\n function getHost() {\r\n return sitecoreServices.getApigeeAccessInfo().then(\r\n (result) => {\r\n sessionStorageService.set(\r\n assetService.storageKeys.serviceHost,\r\n result.ServiceHost,\r\n );\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getCdpId() {\r\n return sitecoreServices.getCdpId().then(\r\n (result) => {\r\n vm.cdpUserId = result;\r\n sessionStorageService.set(\r\n assetService.storageKeys.cdpUserId,\r\n result,\r\n );\r\n\r\n if (vm.sessionCdpUserId && vm.cdpUserId !== vm.sessionCdpUserId) {\r\n vm.clearIndexedDb = true;\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPCompanyInvoicesController', FPCompanyInvoicesController);\r\nFPCompanyInvoicesController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'apiConfigService',\r\n 'FPCurrentUserService',\r\n 'FPDataModelsDTOService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPInvoiceService',\r\n 'sessionStorageService',\r\n 'invoiceOrdersPollingWebWorkerService',\r\n 'screenSize',\r\n];\r\n\r\nfunction FPCompanyInvoicesController(\r\n $log,\r\n $scope,\r\n assetService,\r\n apiConfigService,\r\n currentUserService,\r\n dtoService,\r\n genericHelperService,\r\n indexedDbService,\r\n invoiceService,\r\n sessionStorageService,\r\n invoiceOrdersPollingWebWorkerService,\r\n screenSize,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const _baseUrl = window.location.origin;\r\n const _errorsPageUrl = assetService.pageUrls.errorPage;\r\n const _filterFields = {\r\n status: {},\r\n };\r\n const _ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\r\n const _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.buttons = {\r\n refreshData: {\r\n label: _refreshDataButtonLabel,\r\n },\r\n };\r\n vm.column = {\r\n contractorInvoiceNumber:\r\n assetService.tableCols.invoices.contractorInvoiceNumber,\r\n invoiceTotal: assetService.tableCols.invoices.invoiceTotal,\r\n orderCount: assetService.tableCols.invoices.orderCount,\r\n status: assetService.tableCols.invoices.status,\r\n };\r\n vm.columnSelected = vm.column.contractorInvoiceNumber;\r\n vm.companyInvoices = null;\r\n vm.data = {\r\n serviceOrders: [],\r\n statusBarValue: 0,\r\n statusSelector: assetService.status.READY_FOR_INVOICE.code,\r\n };\r\n vm.dropdowns = {\r\n statusSelector: null,\r\n };\r\n vm.loadingSpinner = true;\r\n vm.invoicesReady = false;\r\n vm.originalServiceOrders = [];\r\n vm.reverse = false;\r\n vm.showRefreshBanner = false;\r\n vm.isLastRange = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.onSelectItem = onSelectItem;\r\n vm.gotoDetails = gotoDetails;\r\n vm.sortColumn = sortColumn;\r\n vm.takeStatus = takeStatus;\r\n vm.exportPdf = exportPdf;\r\n vm.refreshData = refreshData;\r\n\r\n /**\r\n * Brodcast Watchers\r\n */\r\n $scope.$on(assetService.events.refreshInvoiceOrders, () => {\r\n vm.showRefreshBanner = true;\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function applyFilter() {\r\n if (vm.data.statusSelector !== '') {\r\n const filtersApplied = [];\r\n let workingSetServiceOrders = [];\r\n const serviceOrdersCollection = new DataCollection(\r\n vm.originalServiceOrders,\r\n );\r\n\r\n _filterFields.status[`${assetService.fieldFilterKeys.status}__in`] = vm.data.statusSelector;\r\n\r\n filtersApplied.push(_filterFields.status);\r\n\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n\r\n vm.data.serviceOrders = invoiceService.applyGrouping(\r\n workingSetServiceOrders,\r\n );\r\n } else {\r\n vm.data.serviceOrders = invoiceService.applyGrouping(\r\n vm.originalServiceOrders,\r\n );\r\n }\r\n }\r\n\r\n function exportPdf() {\r\n return console.log('exporting');\r\n }\r\n\r\n function gotoDetails(invoice) {\r\n const selectedFilters = setInvoiceNumbersFilter([\r\n {\r\n value: invoice.contractorInvoiceNumber,\r\n text: invoice.contractorInvoiceNumber,\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function load() {\r\n loadInvoiceOrders().then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n },\r\n (error) => {},\r\n );\r\n }\r\n\r\n function loadInvoiceOrders() {\r\n return indexedDbService.getInvoiceOrders().then((result) => {\r\n if (result) {\r\n vm.originalServiceOrders = dtoService.transformServiceOrders(\r\n result,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n vm.companyInvoices = angular.copy(vm.originalServiceOrders);\r\n setDropdowns();\r\n setModels();\r\n vm.loadingSpinner = false;\r\n startPollingInvoiceOrders();\r\n vm.invoicesReady = true;\r\n }\r\n });\r\n }\r\n\r\n function onSelectItem(item) {\r\n applyFilter();\r\n sortColumn(vm.column.status);\r\n vm.reverse = true;\r\n vm.isLastRange = false;\r\n if (screenSize.is('xs, sm')) {\r\n vm.dropdowns.statusBarSelector = [];\r\n if (item.id === assetService.statusTrackerInvoices.length - 1) {\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id - 2],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id - 1],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id],\r\n );\r\n vm.isLastRange = true;\r\n vm.data.statusBarValue = 5;\r\n } else {\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id - 1],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[item.id + 1],\r\n );\r\n vm.data.statusBarValue = 3;\r\n vm.isLastRange = false;\r\n }\r\n } else {\r\n vm.dropdowns.statusBarSelector = assetService.statusTrackerInvoices.filter(\r\n status => status.id > 0,\r\n );\r\n vm.data.statusBarValue = _.findIndex(\r\n assetService.statusTrackerInvoices,\r\n status => status.value === item.value,\r\n );\r\n }\r\n }\r\n\r\n function refreshData() {\r\n loadInvoiceOrders().then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n },\r\n (error) => {},\r\n );\r\n }\r\n\r\n function setInvoiceNumbersFilter(invoiceNumFilter) {\r\n return {\r\n selectedAssignedTechnicianFilter: [],\r\n selectedContactForAppointment: [],\r\n selectedCustomersFilter: [],\r\n selectedInvoiceNumbersFilter: invoiceNumFilter,\r\n selectedInvoiceStatusFilter: [],\r\n selectedJurisdictionFilter: [],\r\n selectedPostalCodesFilter: [],\r\n selectedProgramsFilter: [],\r\n selectedRushOrderFilter: [],\r\n selectedStatusesFilter: [],\r\n selectedSLAFilter: [],\r\n selectedTypesFilter: [],\r\n };\r\n }\r\n\r\n function setDropdowns() {\r\n if (screenSize.is('xs, sm')) {\r\n vm.dropdowns.statusBarSelector = [];\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[1],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[2],\r\n );\r\n vm.dropdowns.statusBarSelector.push(\r\n assetService.statusTrackerInvoices[3],\r\n );\r\n vm.dropdowns.statusSelector = genericHelperService.setSelectedProp(\r\n assetService.statusTrackerInvoices,\r\n 'value',\r\n '',\r\n );\r\n } else {\r\n vm.dropdowns.statusBarSelector = assetService.statusTrackerInvoices.filter(\r\n x => x.value !== '',\r\n );\r\n\r\n vm.dropdowns.statusSelector = genericHelperService.setSelectedProp(\r\n assetService.statusTrackerInvoices,\r\n 'value',\r\n '',\r\n );\r\n }\r\n }\r\n\r\n function setModels() {\r\n vm.data.serviceOrders = invoiceService.applyGrouping(vm.companyInvoices);\r\n }\r\n\r\n function sortColumn(col) {\r\n vm.columnSelected = col;\r\n if (vm.reverse) {\r\n vm.reverse = false;\r\n } else {\r\n vm.reverse = true;\r\n }\r\n }\r\n\r\n function startPollingInvoiceOrders() {\r\n const _url = `${window.location.origin}/${apiConfigService.get.getCEPInvoiceOrdersUrl()}`;\r\n return invoiceOrdersPollingWebWorkerService.callWebWorker(_url).then(\r\n (result) => {\r\n if (result.serviceOrders) {\r\n vm.showRefreshBanner = true;\r\n }\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function takeStatus(serviceOrder) {\r\n return invoiceService.takeStatus(serviceOrder);\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n indexedDbService.ensureDb().then(\r\n () => {\r\n load();\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPOrderDetailsController', FPOrderDetailsController);\r\nFPOrderDetailsController.$inject = [\r\n '$log',\r\n '$location',\r\n '$scope',\r\n '$state',\r\n 'assetService',\r\n 'apiConfigService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPCurrentUserService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'sessionStorageService',\r\n 'FPSitecoreServices',\r\n 'FPPdfFactory',\r\n 'screenSize',\r\n 'serviceOrderPollingWebWorkerService',\r\n 'FPModalService',\r\n 'getCEPServiceOrderService',\r\n];\r\n\r\nfunction FPOrderDetailsController(\r\n $log,\r\n $location,\r\n $scope,\r\n $state,\r\n assetService,\r\n apiConfigService,\r\n broadcastService,\r\n commonService,\r\n currentUserService,\r\n dtoService,\r\n indexedDbDataService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n sessionStorageService,\r\n sitecoreServices,\r\n FPPdfFactory,\r\n screenSize,\r\n serviceOrderPollingWebWorkerService,\r\n FPModalService,\r\n getCEPServiceOrderService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n const _baseUrl = window.location.origin;\r\n const _errorsPageUrl = assetService.pageUrls.errorPage;\r\n const _kwCode = assetService.strings.CODE;\r\n const _kwValue = assetService.strings.VALUE;\r\n const _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\r\n const _serviceOrders = [];\r\n let _serviceOrderId;\r\n let _url = null;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.addendum = null;\r\n vm.buttons = {\r\n refreshData: {\r\n label: _refreshDataButtonLabel,\r\n },\r\n };\r\n vm.cdpUserId = null;\r\n vm.disableSaveBtn = false;\r\n vm.currentOrderStatus = {};\r\n vm.currentUserRole = assetService.strings.CUSTOM_ROLE_HEADER;\r\n vm.loadingSpinner = true;\r\n vm.isInvoiceSession = false;\r\n vm.serviceHost = null;\r\n vm.serviceOrder = null;\r\n vm.setTracker = {\r\n orderDetailsStatus: null,\r\n value: null,\r\n };\r\n vm.showModalAssignWorkOrder = false;\r\n vm.showModalDispatch = false;\r\n vm.showModalWorkComplete = false;\r\n vm.showModalReview = false;\r\n vm.showModalReadyForInvoice = false;\r\n vm.showModalBundleWorkOrder = false;\r\n vm.showRefreshBanner = false;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR.code;\r\n vm.statusAccepted = assetService.status.ACCEPTED.code;\r\n vm.statusScheduled = assetService.status.SCHEDULED.code;\r\n vm.statusDispatched = assetService.status.DISPATCHED.code;\r\n vm.statusCompleted = assetService.status.COMPLETED.code;\r\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.code;\r\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.code;\r\n vm.statusInvoiceApproved = assetService.status.INVOICE_APPROVED.code;\r\n vm.workOrderHeader = {};\r\n vm.workOrderFooterActions = {\r\n btn1: {\r\n label: null,\r\n modalTarget: null,\r\n disabled: false,\r\n visible: true,\r\n },\r\n btn2: {\r\n label: null,\r\n modalTarget: null,\r\n disabled: false,\r\n visible: true,\r\n },\r\n btn3: {\r\n label: null,\r\n modalTarget: null,\r\n disabled: false,\r\n visible: true,\r\n },\r\n };\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.btn1ClickAction = btn1ClickAction;\r\n vm.btn2ClickAction = btn2ClickAction;\r\n vm.btn3ClickAction = btn3ClickAction;\r\n vm.isSet = isSet;\r\n vm.refreshData = refreshData;\r\n vm.setTab = setTab;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n vm.disableSaveBtn = false;\r\n setWorkOrderFooterLabels();\r\n });\r\n $scope.$on(assetService.events.addendumLoaded, (event, ars) => {\r\n currentUserService.setUserName();\r\n });\r\n $scope.$on(assetService.events.refreshAcceptedOrders, () => {\r\n vm.showRefreshBanner = true;\r\n });\r\n\r\n $scope.$on(assetService.events.refreshInvoiceOrders, () => {\r\n vm.showRefreshBanner = true;\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinner, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function btn1ClickAction(modal) {\r\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\r\n broadcastService.reloadServiceOrder();\r\n modal();\r\n }\r\n\r\n function btn2ClickAction(modal) {\r\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\r\n broadcastService.reloadServiceOrder();\r\n modal();\r\n }\r\n\r\n function btn3ClickAction() {\r\n FPPdfFactory._downloadServiceOrder(vm.serviceOrder, 'ServiceOrder.pdf');\r\n }\r\n\r\n function calculateValueForStatusTracker(actualStatusId) {\r\n const statuses = assetService.statusTrackerOrderDetails.filter(\r\n status => status.id <= actualStatusId,\r\n );\r\n\r\n const lastStatusFromStatuses = statuses.slice(-1)[0];\r\n\r\n assetService.statusTrackerOrderDetails.forEach((status, index) => {\r\n if (status.id === lastStatusFromStatuses.id) {\r\n vm.setTracker.value = index + 1;\r\n }\r\n });\r\n }\r\n\r\n function initialize() {\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n calculateValueForStatusTracker(\r\n assetService.status[vm.currentOrderStatus.code].id,\r\n );\r\n vm.workOrderHeader = {\r\n title: `${vm.serviceOrder.soTypeName} - ${vm.serviceOrder.programName}`,\r\n workOrderId: vm.serviceOrder.serviceOrderId,\r\n workOrderStatuses: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n assetService.serviceOrderStatus,\r\n _kwCode,\r\n _kwValue,\r\n ),\r\n _kwValue,\r\n vm.serviceOrder.soStatus,\r\n ),\r\n workOrderStatus: vm.serviceOrder.soStatusName,\r\n };\r\n\r\n if (screenSize.is('xs, sm')) {\r\n // it's a mobile device so fetch a small image\r\n vm.setTracker.value = 3;\r\n vm.setTracker.orderDetailsStatus = [];\r\n const startTrackerFiller = {\r\n id: 0,\r\n value: 'Init',\r\n text: 'Init',\r\n };\r\n const endTrackerFiller = {\r\n id: assetService.statusTrackerOrderDetails.length,\r\n value: 'Paid Invoice Complete',\r\n text: 'Paid Invoice Complete',\r\n };\r\n const currentStatusIndexId = _.findIndex(\r\n assetService.statusTrackerOrderDetails,\r\n statusTracker => statusTracker.value === vm.serviceOrder.soStatus,\r\n );\r\n\r\n if (\r\n currentStatusIndexId > 0\r\n && currentStatusIndexId < assetService.statusTrackerOrderDetails.length - 1\r\n ) {\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[currentStatusIndexId - 1],\r\n );\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[currentStatusIndexId],\r\n );\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[currentStatusIndexId + 1],\r\n );\r\n } else if (currentStatusIndexId === 0) {\r\n vm.setTracker.orderDetailsStatus.push(startTrackerFiller);\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[0],\r\n );\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[1],\r\n );\r\n } else if (\r\n currentStatusIndexId\r\n === assetService.statusTrackerOrderDetails.length - 1\r\n ) {\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[currentStatusIndexId - 1],\r\n );\r\n vm.setTracker.orderDetailsStatus.push(\r\n assetService.statusTrackerOrderDetails[currentStatusIndexId],\r\n );\r\n vm.setTracker.orderDetailsStatus.push(endTrackerFiller);\r\n }\r\n } else {\r\n // it's a desktop size so do the complicated calculations and render that\r\n vm.setTracker.orderDetailsStatus = assetService.statusTrackerOrderDetails;\r\n }\r\n\r\n setWorkOrderFooterLabels();\r\n\r\n vm.setTab(1);\r\n }\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n function load() {\r\n getCEPServiceOrderService.sitecore.getCEPServiceOrder(vm.currentUser)\r\n .then((result) => {\r\n if (result) {\r\n if (result.serviceOrders.length === 1) {\r\n vm.notAnInvoiceSession = assetService.urlTokens.acceptedOrdersStatuses.includes(\r\n result.serviceOrders[0].soStatus.code.toUpperCase(),\r\n );\r\n if (!vm.notAnInvoiceSession) {\r\n vm.orders = dtoService.transformServiceOrders(\r\n result.serviceOrders,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n } else {\r\n vm.orders = dtoService.transformServiceOrders(\r\n result.serviceOrders,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n }\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.currentServiceOrder,\r\n result.serviceOrders[0],\r\n );\r\n vm.serviceOrder = vm.orders[0];\r\n configureServiceOrder();\r\n initialize();\r\n vm.loadingSpinner = false;\r\n $state.go(assetService.stateRoutes.customerLogistics.state);\r\n startPollingOrderDetails();\r\n }\r\n }\r\n });\r\n\r\n broadcastService.appLoaded();\r\n }\r\n\r\n function configureServiceOrder() {\r\n let timeoutPromise;\r\n\r\n vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar = null;\r\n vm.serviceOrder.rescheduledStartDateDukeCalendar = null;\r\n vm.serviceOrder.scheduledStartDateDukeCalendar = null;\r\n vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = null;\r\n vm.serviceOrder.toggleFlag = assetService.status[vm.serviceOrder.soStatus].id < 9\r\n ? sessionStorageService.get(\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n )\r\n : sessionStorageService.get(\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n\r\n if (vm.serviceOrder.assignedTechnician.cdpId) {\r\n const users = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n const contractor = _.find(\r\n users,\r\n user => user.cdpId === vm.serviceOrder.assignedTechnician.cdpId,\r\n );\r\n\r\n if (contractor) {\r\n vm.serviceOrder.assignedTechnician = angular.copy(contractor);\r\n }\r\n\r\n if (timeoutPromise) {\r\n setTimeout.cancel(timeoutPromise); // cancelling previous promises\r\n }\r\n }\r\n\r\n _serviceOrders.push(vm.serviceOrder);\r\n serviceOrdersFactory._setSelectedOrder(vm.serviceOrder);\r\n serviceOrdersFactory._setSelectedOrders(_serviceOrders);\r\n }\r\n\r\n function refreshData() {\r\n vm.loadingSpinner = true;\r\n getCEPServiceOrderService.sitecore.getCEPServiceOrder({ serviceOrderId: _serviceOrderId })\r\n .then((result) => {\r\n if (result) {\r\n vm.orders = dtoService.transformServiceOrders(\r\n result.serviceOrders,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n if (vm.orders.length === 1) {\r\n vm.serviceOrder = vm.orders[0];\r\n vm.isInvoiceSession = assetService.urlTokens.acceptedOrdersStatuses.includes(\r\n vm.serviceOrder.soStatus,\r\n );\r\n configureServiceOrder(result);\r\n initialize();\r\n startPollingOrderDetails();\r\n $state.reload();\r\n vm.showRefreshBanner = false;\r\n vm.loadingSpinner = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function setTab(tabId) {\r\n vm.tab = tabId;\r\n }\r\n\r\n function setWorkOrderFooterLabels() {\r\n vm.workOrderFooterActions.btn3.label = assetService.btnLabels.EXPORT_PDF;\r\n vm.workOrderFooterActions.btn3.disabled = false;\r\n switch (vm.serviceOrder.soStatus) {\r\n case assetService.status.SENT_TO_CONTRACTOR.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.DECLINE;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.declineModal;\r\n vm.workOrderFooterActions.btn1.disabled = false;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.ACCEPT;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.acceptWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = true;\r\n break;\r\n case assetService.status.ACCEPTED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.SCHEDULE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.scheduleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = true;\r\n break;\r\n case assetService.status.SCHEDULED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.DISPATCH;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.dispatchModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = true;\r\n break;\r\n case assetService.status.DISPATCHED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.COMPLETE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.workCompleteModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = true;\r\n break;\r\n case assetService.status.COMPLETED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.REVIEW;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.reviewModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = true;\r\n break;\r\n case assetService.status.CONTRACTOR_REVIEWED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = true;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.READY_FOR_INVOICE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.readyForInvoiceModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n case assetService.status.READY_FOR_INVOICE.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = false;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n case assetService.status.INVOICE_READY_FOR_REVIEW.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = false;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n case assetService.status.APPROVED_FOR_INVOICING.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = false;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n case assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = false;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n case assetService.status.INVOICE_APPROVED.code:\r\n vm.workOrderFooterActions.btn1.label = assetService.btnLabels.SAVE_CHANGES;\r\n vm.workOrderFooterActions.btn1.modalTarget = FPModalService.saveChangesModal;\r\n vm.workOrderFooterActions.btn1.disabled = vm.disableSaveBtn;\r\n vm.workOrderFooterActions.btn1.visible = false;\r\n\r\n vm.workOrderFooterActions.btn2.label = assetService.btnLabels.APPROVE;\r\n vm.workOrderFooterActions.btn2.modalTarget = FPModalService.bundleWorkOrderModal;\r\n vm.workOrderFooterActions.btn2.disabled = false;\r\n vm.workOrderFooterActions.btn2.visible = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function startPollingOrderDetails() {\r\n _url = `${window.location.origin}/${apiConfigService.get.getCEPServiceOrderUrl(vm.currentUser)}`;\r\n return serviceOrderPollingWebWorkerService.callWebWorker(_url).then(\r\n (result) => {\r\n if (result.length > 0) {\r\n vm.showRefreshBanner = true;\r\n }\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n _serviceOrderId = $location.search().orderid;\r\n\r\n serviceOrdersFactory._deleteSelectedOrder();\r\n\r\n if (assetService.apiConfig.useLocalHost) {\r\n vm.currentUser = {\r\n emailId: $location.search().emailId, // Get Primary Bp\r\n cdpUserId: $location.search().cdpId, // Get Primary Bp\r\n serviceOrderId: _serviceOrderId,\r\n };\r\n\r\n vm.cdpUserId = vm.currentUser.cdpId;\r\n indexedDbDataService.ensureDb().then(\r\n () => {\r\n load();\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n const promises = [getCdpId(), indexedDbDataService.ensureDb()];\r\n\r\n commonService.executePromises(promises).then((data) => {\r\n load();\r\n });\r\n\r\n function getCdpId() {\r\n return sitecoreServices.getCdpId().then(\r\n (result) => {\r\n vm.currentUser = {\r\n cdpUserId: result,\r\n serviceOrderId: _serviceOrderId,\r\n };\r\n },\r\n (error) => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPTechnicalPricingServiceRequest', FPTechnicalPricingServiceRequest);\r\nFPTechnicalPricingServiceRequest.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory'];\r\n\r\nfunction FPTechnicalPricingServiceRequest($scope, assetService, genericHelperService, serviceOrdersFactory) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.coveredRepairsDescription = null;\r\n vm.currentOrderStatus = new Object();\r\n vm.disableAll = false;\r\n vm.form = {\r\n serviceOrderBalance: {\r\n value: 0,\r\n },\r\n programEntitlementBalance: {\r\n value: 0,\r\n },\r\n descriptionOfWorkQtyPartsCovered: null,\r\n descriptionOfWorkQtyPartsNonCovered: null,\r\n orderCostTimeDetails: {\r\n regularLaborHours: 0,\r\n regularLaborCost: 0,\r\n laborCost: {\r\n value: 0,\r\n },\r\n laborCostNotCovered: {\r\n value: 0,\r\n },\r\n entitlementLaborHours: 0,\r\n entitlementLaborCost: {\r\n value: 0,\r\n },\r\n partsCost: {\r\n value: 0,\r\n },\r\n partsCostNotCovered: {\r\n value: 0,\r\n },\r\n tripFee: {\r\n value: 0,\r\n },\r\n },\r\n soType: null,\r\n };\r\n vm.groundingRepairsNeededOptions = assetService.yesNoOptions;\r\n vm.serviceOrderLoaded = false;\r\n vm.noncoveredRepairsDescription = null;\r\n vm.serviceOrder = null;\r\n vm.singlePointGroundingOptions = assetService.yesNoOptions;\r\n vm.statusCompleted = assetService.status.COMPLETED.value;\r\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.value;\r\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.value;\r\n vm.typeEntitlement = assetService.strings.ENTITLEMENT;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n vm.loadingSpinner = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.totalLaborCost = totalLaborCost;\r\n vm.totalCost = totalCost;\r\n vm.totalUncoveredCost = totalUncoveredCost;\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.reloadServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n\r\n setModels();\r\n });\r\n\r\n $scope.$watch('vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n }, true);\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\r\n\r\n if (vm.currentOrderStatus.id >= 10) { vm.disableAll = true; }\r\n\r\n setModels();\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderBalance: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.serviceOrderBalance.value),\r\n },\r\n programEntitlementBalance: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.programEntitlementBalance.value),\r\n },\r\n descriptionOfWorkQtyPartsCovered: vm.serviceOrder.descriptionOfWorkQtyPartsCovered,\r\n descriptionOfWorkQtyPartsNonCovered: vm.serviceOrder.descriptionOfWorkQtyPartsNonCovered,\r\n orderCostTimeDetails: {\r\n regularLaborHours: vm.serviceOrder.orderCostTimeDetails.regularLaborHours,\r\n regularLaborCost: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.regularLaborCost.value),\r\n },\r\n laborCostNotCovered: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCostNotCovered.value),\r\n },\r\n entitlementLaborHours: vm.serviceOrder.orderCostTimeDetails.entitlementLaborHours,\r\n entitlementLaborCost: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.entitlementLaborCost.value),\r\n },\r\n partsCost: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCost.value),\r\n },\r\n partsCostNotCovered: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.partsCostNotCovered.value),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value),\r\n },\r\n },\r\n soType: vm.serviceOrder.soType,\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n vm.formLoaded = true;\r\n }\r\n\r\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\r\n return parseFloat((!regularLaborCost ? '0.0' : regularLaborCost))\r\n + parseFloat((!entitlementLaborCost ? '0.0' : entitlementLaborCost));\r\n }\r\n\r\n function totalCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\r\n return parseFloat((!regularLaborCost ? '0.0' : regularLaborCost))\r\n + parseFloat((!entitlementLaborCost ? '0.0' : entitlementLaborCost))\r\n + parseFloat((!partsCost ? '0.0' : partsCost))\r\n + parseFloat((!tripFee ? '0.0' : tripFee));\r\n }\r\n\r\n function totalUncoveredCost(laborCostNotCovered, partsCostNotCovered) {\r\n return parseFloat((!laborCostNotCovered ? '0.0' : laborCostNotCovered))\r\n + parseFloat((!partsCostNotCovered ? '0.0' : partsCostNotCovered));\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller('FPTechnicalPricingWorkOrder', FPTechnicalPricingWorkOrder);\r\nFPTechnicalPricingWorkOrder.$inject = ['$scope', 'FPAssetService', 'FPGenericHelperService', 'FPServiceOrdersFactory'];\r\n\r\nfunction FPTechnicalPricingWorkOrder($scope, assetService, genericHelperService, serviceOrdersFactory) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.currentOrderStatus = new Object();\r\n vm.description = null;\r\n vm.disableAll = false;\r\n vm.form = {\r\n orderCostTimeDetails: {\r\n tripFee: {\r\n value: 0,\r\n },\r\n materialCost: {\r\n value: 0,\r\n },\r\n laborCost: {\r\n value: 0,\r\n },\r\n totalOrderCost: {\r\n value: 0,\r\n },\r\n },\r\n\r\n descriptionOfWorkQtyParts: null,\r\n };\r\n vm.groundingRepairsNeededOptions = assetService.yesNoOptions;\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrder = null;\r\n vm.singlePointGroundingOptions = assetService.yesNoOptions;\r\n vm.statusCompleted = assetService.status.COMPLETED.value;\r\n vm.statusReviewed = assetService.status.CONTRACTOR_REVIEWED.value;\r\n vm.statusReadyForInvoice = assetService.status.READY_FOR_INVOICE.value;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n vm.loadingSpinner = true;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.totalOrderCost = totalOrderCost;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.reloadServiceOrder, (event, ars) => {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n\r\n setModels();\r\n });\r\n\r\n $scope.$watch('vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n }, true);\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(vm.serviceOrder);\r\n\r\n if (vm.currentOrderStatus.id >= 10) { vm.disableAll = true; }\r\n\r\n setModels();\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.materialCost.value),\r\n },\r\n laborCost: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.laborCost.value),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(vm.serviceOrder.orderCostTimeDetails.tripFee.value),\r\n },\r\n },\r\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\r\n };\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n vm.formLoaded = true;\r\n }\r\n\r\n function totalOrderCost(tripFee, laborCost, materialCost) {\r\n return parseFloat(tripFee)\r\n + parseFloat(laborCost)\r\n + parseFloat(materialCost);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function () {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller('FPHeaderController', FPHeaderController);\r\nFPHeaderController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPCurrentUserService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction FPHeaderController($scope, assetService, currentUserService, sessionStorageService) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n const roleContractor = assetService.userTypes.CONTRACTOR;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.appLoaded = false;\r\n vm.homeUrl = assetService.sitePagesUrlPaths.DASHBOARD;\r\n vm.invoiceOrdersUrl = assetService.sitePagesUrlPaths.INVOICE_ORDERS;\r\n vm.isContractor = false;\r\n vm.ordersUrl = assetService.sitePagesUrlPaths.ORDERS;\r\n vm.checkAllOrders = true;\r\n /**\r\n * Function Declarations\r\n */\r\n vm.setTab = setTab;\r\n vm.isSet = isSet;\r\n vm.clearSession = clearSession;\r\n vm.goHome = goHome;\r\n\r\n /**\r\n * Broadcast Watchers\r\n */\r\n $scope.$on(assetService.events.usersLoaded, (event, ars) => {\r\n const userRole = currentUserService.getUserRole();\r\n if (userRole.toLowerCase() === roleContractor) {\r\n vm.isContractor = true;\r\n }\r\n });\r\n /**\r\n * Function Definitions\r\n */\r\n function setTab(tabId) {\r\n vm.tab = tabId;\r\n }\r\n\r\n function isSet(tabId) {\r\n return vm.tab === tabId;\r\n }\r\n\r\n function clearSession()\r\n {\r\n sessionStorageService.set('checkAllOrders', vm.checkAllOrders);\r\n }\r\n\r\n function goHome()\r\n {\r\n if(vm.checkAllOrders == true)\r\n {\r\n vm.checkAllOrders = false;\r\n }\r\n sessionStorageService.set('checkAllOrders', vm.checkAllOrders);\r\n }\r\n\r\n \r\n /**\r\n * Initialization\r\n */\r\n const init = function() {\r\n const userRole = currentUserService.getUserRole();\r\n if (userRole && userRole.toLowerCase() === roleContractor) {\r\n vm.isContractor = true;\r\n }\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPOrdersController', FPOrdersController);\r\nFPOrdersController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'assetService',\r\n 'acceptedOrdersPollingWebWorkerService',\r\n 'invoiceOrdersPollingWebWorkerService',\r\n 'apiConfigService',\r\n 'FPDataModelsDTOService',\r\n 'FPServiceOrdersFactory',\r\n 'FPCurrentUserService',\r\n 'FPIndexedDbDataService',\r\n 'FPGenericHelperService',\r\n 'pagerService',\r\n 'sessionStorageService',\r\n 'FPCSVServiceOrders',\r\n 'FPServiceOrderService',\r\n 'FPBroadcastService',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPOrdersController(\r\n $log,\r\n $scope,\r\n assetService,\r\n acceptedOrdersPollingWebWorkerService,\r\n invoiceOrdersPollingWebWorkerService,\r\n apiConfigService,\r\n dtoService,\r\n serviceOrdersFactory,\r\n currentUserService,\r\n indexedDbService,\r\n genericHelperService,\r\n pagerService,\r\n sessionStorageService,\r\n csvServiceOrders,\r\n serviceOrderService,\r\n broadcastService,\r\n FPModalService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n const _assignButtonLabel = assetService.btnLabels.ASSIGN_BUTTON;\r\n const _assignedTechnician = assetService.strings.ASSIGNED_TECHNICIAN;\r\n const _baseUrl = window.location.origin;\r\n const _customer = assetService.strings.CUSTOMER;\r\n const _defaultSortOption = assetService.sortByOptions[1].value;\r\n const _dispatchButtonLabel = assetService.btnLabels.DISPATCH_BUTTON;\r\n const _errorsPageUrl = assetService.pageUrls.errorPage;\r\n const _filterFields = {\r\n customerName: {},\r\n postalCode: {},\r\n program: {},\r\n status: {},\r\n type: {},\r\n invoiceNumber: {},\r\n assignedTechnician: {},\r\n invoiceStatus: {},\r\n rushOrder: {},\r\n isCompleteWorkOrder: {},\r\n isContactWorkOrder: {},\r\n isInvoiceWorkOrder: {},\r\n isNewWorkOrder: {},\r\n isScheduleWorkOrder: {},\r\n isCompleteServiceRequestOrder: {},\r\n isContactServiceRequestOrder: {},\r\n isInvoiceServiceRequestOrder: {},\r\n isNewServiceRequestOrder: {},\r\n isScheduleServiceRequestOrder: {},\r\n jurisdiction: {},\r\n contactForAppointment: {},\r\n };\r\n const _invoiceButtonLabel = assetService.btnLabels.INVOICE_BUTTON;\r\n const _invoiceField = assetService.fieldNames.CONTRACTOR_INVOICE_NUMBER;\r\n const _invoiceStatusFilters = [\r\n assetService.status.APPROVED_FOR_INVOICING.code,\r\n assetService.status.INVOICE_APPROVED.code,\r\n assetService.status.INVOICE_READY_FOR_REVIEW.code,\r\n assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code,\r\n assetService.status.READY_FOR_INVOICE.code,\r\n ];\r\n const _kwValue = assetService.strings.VALUE;\r\n const _noAcceptedOrders = assetService.strings.NO_ACCEPTED_ORDERS;\r\n const _program = assetService.strings.PROGRAM;\r\n const _refreshDataButtonLabel = assetService.btnLabels.REFRESH_DATA;\r\n const _resetFiltersButtonLabel = assetService.btnLabels.RESET_FILTERS;\r\n const _statusFilters = [\r\n assetService.status.SENT_TO_CONTRACTOR.code,\r\n assetService.status.ACCEPTED.code,\r\n assetService.status.SCHEDULED.code,\r\n assetService.status.DISPATCHED.code,\r\n assetService.status.COMPLETED.code,\r\n assetService.status.CONTRACTOR_REVIEWED.code,\r\n ];\r\n const _statusAccepted = assetService.status.ACCEPTED.code;\r\n const _statusScheduled = assetService.status.SCHEDULED.code;\r\n const _statusReviewed = assetService.status.CONTRACTOR_REVIEWED.code;\r\n const _searchableFields = {\r\n assignedTechnicianFilter: {},\r\n customerNameFilter: {},\r\n invoiceNumberFilter: {},\r\n statusFilter: {},\r\n typeFilter: {},\r\n programFilter: {},\r\n workOrderIdFilter: {},\r\n };\r\n const _serviceAddress = assetService.fieldNames.SERVICE_ADDRESS;\r\n const _status = assetService.fieldNames.SO_STATUS;\r\n const _type = assetService.fieldNames.SO_TYPE;\r\n\r\n /* --------------Global Vars-----------------------*/\r\n vm.assignedTechnicians = [];\r\n vm.buttons = {\r\n refreshData: {\r\n label: _refreshDataButtonLabel,\r\n },\r\n resetFilters: {\r\n label: _resetFiltersButtonLabel,\r\n },\r\n resetOrders: {\r\n label: null,\r\n },\r\n invoice: {\r\n label: _invoiceButtonLabel,\r\n counter: 0,\r\n disabled: true,\r\n },\r\n dispatch: {\r\n label: _dispatchButtonLabel,\r\n counter: 0,\r\n disabled: true,\r\n },\r\n assign: {\r\n label: _assignButtonLabel,\r\n counter: 0,\r\n disabled: true,\r\n },\r\n };\r\n vm.contactForAppointments = [];\r\n vm.customers = [];\r\n vm.dropdowns = {\r\n sortBy: null,\r\n };\r\n vm.filteredCustomers = null;\r\n vm.filteredInvoiceNumbers = null;\r\n vm.filteredPostalCodes = null;\r\n vm.filteredPrograms = null;\r\n vm.filteredStatus = null;\r\n vm.filteredTypes = null;\r\n vm.invoiceStatuses = [];\r\n vm.invoiceNumbers = [];\r\n vm.getAllOrders = null;\r\n vm.removeFilters = null;\r\n vm.isContractor = false;\r\n vm.isInvoiceSession = false;\r\n vm.jurisdictions = [];\r\n vm.loadingSpinner = true;\r\n vm.noAcceptedOrdersVerbiage = _noAcceptedOrders;\r\n vm.noWorkOrders = false;\r\n vm.noWorkingSetWorkOrders = false;\r\n vm.orderDetailsUrl = assetService.sitePagesUrlPaths.ORDER_DETAILS;\r\n vm.ordersPerPage = 18;\r\n vm.originalServiceOrders = [];\r\n vm.pagination = assetService.pagination;\r\n vm.pager = pagerService.createPager(\r\n assetService.storageKeys.acceptedOrdersPager,\r\n 0,\r\n 1,\r\n vm.ordersPerPage,\r\n );\r\n vm.postalCodes = [];\r\n vm.resetcheck = false;\r\n vm.programs = [];\r\n vm.redrawLeftNav = true;\r\n vm.refreshFilters = false;\r\n vm.refreshAcceptedOrdersComplete = false;\r\n vm.refreshInvoiceOrdersComplete = false;\r\n vm.rushOrders = [];\r\n vm.searchInput = null;\r\n vm.selectAllModel = false;\r\n vm.selectedAssignedTechnicianFilter = [];\r\n vm.selectedContactForAppointment = [];\r\n vm.selectedCustomersFilter = [];\r\n vm.selectedFilters = [];\r\n vm.selectedInvoiceStatusFilter = [];\r\n vm.selectedInvoiceNumbersFilter = [];\r\n vm.selectedJurisdictionFilter = [];\r\n vm.selectedPostalCodesFilter = [];\r\n vm.selectedProgramsFilter = [];\r\n vm.selectedRushOrderFilter = [];\r\n vm.selectedSLAFilter = [];\r\n vm.selectedStatusesFilter = [];\r\n vm.selectedSortField = null;\r\n vm.selectedTypesFilter = [];\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrders = [];\r\n vm.showAssignOption = true;\r\n vm.showBundleOrdersOption = false;\r\n vm.showMoreFilters = false;\r\n vm.showRefreshBanner = false;\r\n vm.showRefreshDataAlert = false;\r\n vm.slaOptions = [];\r\n vm.statuses = [];\r\n vm.title = null;\r\n vm.types = [];\r\n vm.workingSetServiceOrders = [];\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.assignOrders = assignOrders;\r\n vm.addSelectedAssignedTechnician = addSelectedAssignedTechnician;\r\n vm.addSelectedContactForAppointment = addSelectedContactForAppointment;\r\n vm.addSelectedCustomer = addSelectedCustomer;\r\n vm.addSelectedInvoiceStatus = addSelectedInvoiceStatus;\r\n vm.addSelectedInvoiceNumber = addSelectedInvoiceNumber;\r\n vm.addSelectedJurisdiction = addSelectedJurisdiction;\r\n vm.addSelectedPostalCode = addSelectedPostalCode;\r\n vm.addSelectedProgram = addSelectedProgram;\r\n vm.addSelectedRushOrder = addSelectedRushOrder;\r\n vm.addSelectedSla = addSelectedSla;\r\n vm.addSelectedStatus = addSelectedStatus;\r\n vm.addSelectedType = addSelectedType;\r\n vm.bundleWorkOrders = bundleWorkOrders;\r\n vm.changeSort = changeSort;\r\n vm.dispatchOrders = dispatchOrders;\r\n vm.displayFilter = displayFilter;\r\n vm.exportCSV = exportCSV;\r\n vm.invoiceOrders = invoiceOrders;\r\n vm.onChange = onChange;\r\n vm.orderDetails = orderDetails;\r\n vm.refreshData = refreshData;\r\n vm.removeSelectedAssignedTechnician = removeSelectedAssignedTechnician;\r\n vm.removeSelectedContactForAppointment = removeSelectedContactForAppointment;\r\n vm.removeSelectedCustomer = removeSelectedCustomer;\r\n vm.removeSelectedInvoiceStatus = removeSelectedInvoiceStatus;\r\n vm.removeSelectedInvoiceNumber = removeSelectedInvoiceNumber;\r\n vm.removeSelectedJurisdiction = removeSelectedJurisdiction;\r\n vm.removeSelectedPostalCode = removeSelectedPostalCode;\r\n vm.removeSelectedProgram = removeSelectedProgram;\r\n vm.removeSelectedRushOrder = removeSelectedRushOrder;\r\n vm.removeSelectedSla = removeSelectedSla;\r\n vm.removeSelectedStatus = removeSelectedStatus;\r\n vm.removeSelectedType = removeSelectedType;\r\n vm.resetFilters = resetFilters;\r\n vm.resetOrders = resetOrders;\r\n vm.search = search;\r\n vm.selectAll = selectAll;\r\n vm.setPage = setPage;\r\n vm.toggleFilters = toggleFilters;\r\n\r\n /* --------------Brodcast Watchers----------------------------*/\r\n $scope.$on(assetService.events.refreshAcceptedOrders, () => {\r\n vm.showRefreshBanner = true;\r\n });\r\n\r\n $scope.$on(assetService.events.refreshInvoiceOrders, () => {\r\n vm.showRefreshBanner = true;\r\n });\r\n\r\n $scope.$on(assetService.events.loadingSpinner, (index, data) => {\r\n vm.loadingSpinner = data;\r\n });\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function assignOrders() {\r\n const selectedOrders = vm.workingSetServiceOrders.filter(\r\n serviceOrder =>\r\n serviceOrder.selected === true &&\r\n serviceOrderService.canBeAssigned(serviceOrder),\r\n );\r\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\r\n\r\n broadcastService.triggerSelectedServiceOrdersUpdate();\r\n\r\n FPModalService.assignWorkOrderModal();\r\n }\r\n\r\n function addSelectedAssignedTechnician(selectedFilter) {\r\n vm.selectedAssignedTechnicianFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedContactForAppointment(selectedFilter) {\r\n vm.selectedContactForAppointment.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedCustomer(selectedFilter) {\r\n vm.selectedCustomersFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedInvoiceStatus(selectedFilter) {\r\n vm.selectedInvoiceStatusFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedInvoiceNumber(selectedFilter) {\r\n vm.selectedInvoiceNumbersFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedJurisdiction(selectedFilter) {\r\n vm.selectedJurisdictionFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedPostalCode(selectedFilter) {\r\n vm.selectedPostalCodesFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedProgram(selectedFilter) {\r\n vm.selectedProgramsFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedRushOrder(selectedFilter) {\r\n vm.selectedRushOrderFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedSla(selectedFilter) {\r\n vm.selectedSLAFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedStatus(selectedFilter) {\r\n vm.selectedStatusesFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function addSelectedType(selectedFilter) {\r\n vm.selectedTypesFilter.push(selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function applyFilters() {\r\n let executeFlag = false;\r\n let filtersApplied = [];\r\n let workingSetServiceOrders = [];\r\n let serviceOrdersCollection = new DataCollection(vm.originalServiceOrders);\r\n let filterList;\r\n\r\n if (vm.selectedCustomersFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedCustomersFilter, filter => filter.value);\r\n\r\n _filterFields.customerName[\r\n `${assetService.fieldFilterKeys.customerName}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.customerName);\r\n\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedPostalCodesFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedPostalCodesFilter, filter => filter.value);\r\n\r\n _filterFields.postalCode[\r\n `${assetService.fieldFilterKeys.postalCode}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.postalCode);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedProgramsFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedProgramsFilter, filter => filter.value);\r\n\r\n _filterFields.program[\r\n `${assetService.fieldFilterKeys.program}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.program);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedStatusesFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedStatusesFilter, filter => filter.value);\r\n\r\n _filterFields.status[\r\n `${assetService.fieldFilterKeys.status}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.status);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedTypesFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedTypesFilter, filter => filter.value);\r\n\r\n _filterFields.type[\r\n `${assetService.fieldFilterKeys.type}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.type);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedInvoiceNumbersFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(\r\n vm.selectedInvoiceNumbersFilter,\r\n filter => filter.value,\r\n );\r\n\r\n _filterFields.invoiceNumber[\r\n `${assetService.fieldFilterKeys.invoiceNumber}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.invoiceNumber);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedAssignedTechnicianFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(\r\n vm.selectedAssignedTechnicianFilter,\r\n filter => filter.value,\r\n );\r\n\r\n _filterFields.assignedTechnician[\r\n `${assetService.fieldFilterKeys.assignedTechnician}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.assignedTechnician);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedInvoiceStatusFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(\r\n vm.selectedInvoiceStatusFilter,\r\n filter => filter.value,\r\n );\r\n\r\n _filterFields.invoiceStatus[\r\n `${assetService.fieldFilterKeys.status}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.invoiceStatus);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedRushOrderFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedRushOrderFilter, filter => filter.value);\r\n\r\n _filterFields.rushOrder[\r\n `${assetService.fieldFilterKeys.rushOrder}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.rushOrder);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedSLAFilter.length > 0) {\r\n filtersApplied = [];\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n\r\n createMappingsForCollection(serviceOrdersCollection);\r\n\r\n filterList = _.map(vm.selectedSLAFilter, filter => filter.value);\r\n\r\n filterList.forEach(filter => {\r\n _filterFields[filter][\r\n `${assetService.fieldFilterKeys[filter]}__is`\r\n ] = true;\r\n filtersApplied.push(_filterFields[filter]);\r\n });\r\n\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n createMappingsForCollection(serviceOrdersCollection);\r\n\r\n filterList = _.map(vm.selectedSLAFilter, filter => filter.value);\r\n\r\n filterList.forEach(filter => {\r\n _filterFields[filter][\r\n `${assetService.fieldFilterKeys[filter]}__is`\r\n ] = true;\r\n filtersApplied.push(_filterFields[filter]);\r\n });\r\n\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedJurisdictionFilter.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(vm.selectedJurisdictionFilter, filter => filter.value);\r\n\r\n _filterFields.jurisdiction[\r\n `${assetService.fieldFilterKeys.jurisdiction}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.jurisdiction);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (vm.selectedContactForAppointment.length > 0) {\r\n filtersApplied = [];\r\n filterList = _.map(\r\n vm.selectedContactForAppointment,\r\n filter => filter.value,\r\n );\r\n\r\n _filterFields.contactForAppointment[\r\n `${assetService.fieldFilterKeys.contactForAppointment}__in`\r\n ] = filterList;\r\n\r\n filtersApplied.push(_filterFields.contactForAppointment);\r\n\r\n if (workingSetServiceOrders.length > 0 || executeFlag) {\r\n serviceOrdersCollection = null;\r\n serviceOrdersCollection = new DataCollection(workingSetServiceOrders);\r\n const result = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n workingSetServiceOrders = genericHelperService.intersectionObjects(\r\n workingSetServiceOrders,\r\n result,\r\n (item1, item2) => item1.serviceOrderId === item2.serviceOrderId,\r\n );\r\n } else {\r\n workingSetServiceOrders = serviceOrdersCollection\r\n .query()\r\n .filter(...filtersApplied)\r\n .values();\r\n }\r\n\r\n executeFlag = true;\r\n }\r\n\r\n if (executeFlag || workingSetServiceOrders.length > 0) {\r\n initializeOrders(workingSetServiceOrders);\r\n if (vm.searchInput) {\r\n if (vm.searchInput.length !== 0) {\r\n search();\r\n }\r\n }\r\n } else {\r\n reload();\r\n }\r\n }\r\n\r\n function applySorting(serviceOrders, fieldToSortBy) {\r\n const { key } = assetService.sortFields[fieldToSortBy];\r\n const order = assetService.sortFields[fieldToSortBy].order === 'desc';\r\n\r\n const serviceOrdersCollection = new DataCollection(serviceOrders);\r\n const serviceOrdersSorted = serviceOrdersCollection\r\n .query()\r\n .sort(key, order)\r\n .values();\r\n\r\n return serviceOrdersSorted;\r\n }\r\n\r\n function bundleWorkOrders() {\r\n const selectedOrders = _.filter(\r\n vm.workingSetServiceOrders,\r\n o =>\r\n o.selected === true &&\r\n o.soStatus === _statusReviewed &&\r\n o.assignedTechnician.cdpId &&\r\n !o.contractorInvoiceNumber,\r\n );\r\n\r\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\r\n broadcastService.triggerSelectedServiceOrdersUpdate();\r\n\r\n FPModalService.bundleWorkOrderModal();\r\n }\r\n\r\n function calculateButtonsCounter(item, itemCountable) {\r\n // INVOICE\r\n if (serviceOrderService.canBeInvoiced(item)) {\r\n if (itemCountable) {\r\n item.selected\r\n ? (vm.buttons.invoice.counter += 1)\r\n : (vm.buttons.invoice.counter -= 1);\r\n }\r\n vm.buttons.invoice.disabled = vm.buttons.invoice.counter === 0;\r\n }\r\n\r\n // DISPATCH\r\n if (serviceOrderService.canBeDispatched(item)) {\r\n if (itemCountable) {\r\n item.selected\r\n ? (vm.buttons.dispatch.counter += 1)\r\n : (vm.buttons.dispatch.counter -= 1);\r\n }\r\n vm.buttons.dispatch.disabled = vm.buttons.dispatch.counter === 0;\r\n }\r\n\r\n // ASSIGN\r\n if (serviceOrderService.canBeAssigned(item)) {\r\n if (itemCountable) {\r\n item.selected\r\n ? (vm.buttons.assign.counter += 1)\r\n : (vm.buttons.assign.counter -= 1);\r\n }\r\n vm.buttons.assign.disabled = vm.buttons.assign.counter === 0;\r\n }\r\n }\r\n\r\n function changeSort() {\r\n initializeOrders(vm.serviceOrders);\r\n }\r\n\r\n function dispatchOrders() {\r\n const selectedOrders = vm.workingSetServiceOrders.filter(\r\n serviceOrder =>\r\n serviceOrder.selected === true &&\r\n serviceOrderService.canBeDispatched(serviceOrder),\r\n );\r\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\r\n\r\n broadcastService.triggerSelectedServiceOrdersUpdate();\r\n FPModalService.multiDispatchModal();\r\n }\r\n\r\n function displayFilter(showFilter) {\r\n if (showFilter) {\r\n $('#bodyContent').fadeOut(1000);\r\n $('#refineResults').fadeIn(1000);\r\n } else {\r\n $('#bodyContent').fadeIn(1000);\r\n $('#refineResults').fadeOut(1000);\r\n }\r\n }\r\n\r\n function createMappingsForCollection(collection) {\r\n // Work Orders\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isNewWorkOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER\r\n ? serviceOrderService.isNewOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isContactWorkOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER\r\n ? serviceOrderService.isContactOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isScheduleWorkOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER\r\n ? serviceOrderService.isScheduleOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isInvoiceWorkOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER\r\n ? serviceOrderService.isInvoiceOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isCompleteWorkOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER\r\n ? serviceOrderService.isCompleteOrder(serviceOrder)\r\n : false,\r\n );\r\n\r\n // Service Requests\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isNewServiceRequestOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST\r\n ? serviceOrderService.isNewOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isContactServiceRequestOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST\r\n ? serviceOrderService.isContactOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isScheduleServiceRequestOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST\r\n ? serviceOrderService.isScheduleOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isInvoiceServiceRequestOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST\r\n ? serviceOrderService.isInvoiceOrder(serviceOrder)\r\n : false,\r\n );\r\n collection.createMapping(\r\n assetService.slaOptionsFilter.isCompleteServiceRequestOrder.value,\r\n serviceOrder =>\r\n serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST\r\n ? serviceOrderService.isCompleteOrder(serviceOrder)\r\n : false,\r\n );\r\n }\r\n\r\n function exportCSV(event) {\r\n const exportButton = event.target;\r\n exportButton.disabled = true;\r\n const exportType = vm.isInvoiceSession\r\n ? assetService.strings.ACCEPTED_INVOICE_ORDERS\r\n : assetService.strings.ACCEPTED_ORDERS;\r\n\r\n csvServiceOrders.exportCSV(exportType).then(\r\n () => {\r\n exportButton.disabled = false;\r\n },\r\n error => {},\r\n );\r\n }\r\n\r\n function invoiceOrders() {\r\n const selectedOrders = vm.workingSetServiceOrders.filter(\r\n serviceOrder =>\r\n serviceOrder.selected === true &&\r\n serviceOrderService.canBeInvoiced(serviceOrder),\r\n );\r\n serviceOrdersFactory._setSelectedOrders(selectedOrders);\r\n\r\n broadcastService.triggerSelectedServiceOrdersUpdate();\r\n\r\n FPModalService.bundleWorkOrderModal();\r\n }\r\n\r\n function setModels() {\r\n vm.dropdowns.sortBy = assetService.sortByOptions;\r\n\r\n vm.dropdowns.sortBy = genericHelperService.setSelectedProp(\r\n vm.dropdowns.sortBy,\r\n _kwValue,\r\n _defaultSortOption,\r\n );\r\n }\r\n\r\n function onChange(item) {\r\n calculateButtonsCounter(item, true);\r\n }\r\n\r\n function orderDetails(event, _serviceOrder) {\r\n if (event.target.classList.contains('FP-Checkbox__input')) {\r\n return false;\r\n }\r\n\r\n const selectedFilters = {\r\n selectedAssignedTechnicianFilter: vm.selectedAssignedTechnicianFilter,\r\n selectedContactForAppointment: vm.selectedContactForAppointment,\r\n selectedCustomersFilter: vm.selectedCustomersFilter,\r\n selectedInvoiceNumbersFilter: vm.selectedInvoiceNumbersFilter,\r\n selectedInvoiceStatusFilter: vm.selectedInvoiceStatusFilter,\r\n selectedJurisdictionFilter: vm.selectedJurisdictionFilter,\r\n selectedPostalCodesFilter: vm.selectedPostalCodesFilter,\r\n selectedProgramsFilter: vm.selectedProgramsFilter,\r\n selectedRushOrderFilter: vm.selectedRushOrderFilter,\r\n selectedStatusesFilter: vm.selectedStatusesFilter,\r\n selectedSLAFilter: vm.selectedSLAFilter,\r\n selectedTypesFilter: vm.selectedTypesFilter,\r\n };\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n\r\n const url = vm.orderDetailsUrl + _serviceOrder.serviceOrderId;\r\n window.location.href = url;\r\n }\r\n\r\n function removeSelectedAssignedTechnician(selectedFilter) {\r\n removeSelectedFilter(vm.selectedAssignedTechnicianFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedContactForAppointment(selectedFilter) {\r\n removeSelectedFilter(vm.selectedContactForAppointment, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedCustomer(selectedFilter) {\r\n removeSelectedFilter(vm.selectedCustomersFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedInvoiceNumber(selectedFilter) {\r\n removeSelectedFilter(vm.selectedInvoiceNumbersFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedInvoiceStatus(selectedFilter) {\r\n removeSelectedFilter(vm.selectedInvoiceStatusFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedJurisdiction(selectedFilter) {\r\n removeSelectedFilter(vm.selectedJurisdictionFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedPostalCode(selectedFilter) {\r\n removeSelectedFilter(vm.selectedPostalCodesFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedProgram(selectedFilter) {\r\n removeSelectedFilter(vm.selectedProgramsFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedRushOrder(selectedFilter) {\r\n removeSelectedFilter(vm.selectedRushOrderFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedSla(selectedFilter) {\r\n removeSelectedFilter(vm.selectedSLAFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedStatus(selectedFilter) {\r\n removeSelectedFilter(vm.selectedStatusesFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedType(selectedFilter) {\r\n removeSelectedFilter(vm.selectedTypesFilter, selectedFilter);\r\n applyFilters();\r\n }\r\n\r\n function removeSelectedFilter(selectedFilterList, selectedFilter) {\r\n const idx = _.findIndex(\r\n selectedFilterList,\r\n filter => filter.value == selectedFilter.value,\r\n );\r\n\r\n if (idx > -1) {\r\n selectedFilterList.splice(idx, 1);\r\n }\r\n }\r\n\r\n function reload() {\r\n initializeOrders(vm.originalServiceOrders);\r\n if (vm.searchInput) {\r\n if (vm.searchInput.length !== 0) {\r\n search();\r\n }\r\n }\r\n }\r\n\r\n function resetFilters() {\r\n vm.searchInput = null;\r\n vm.selectedAssignedTechnicianFilter = [];\r\n vm.selectedContactForAppointment = [];\r\n vm.selectedCustomersFilter = [];\r\n vm.selectedPostalCodesFilter = [];\r\n vm.selectedProgramsFilter = [];\r\n vm.selectedRushOrderFilter = [];\r\n vm.selectedSLAFilter = [];\r\n vm.selectedStatusesFilter = [];\r\n vm.selectedTypesFilter = [];\r\n vm.selectedInvoiceStatusFilter = [];\r\n vm.selectedInvoiceNumbersFilter = [];\r\n vm.selectedJurisdictionFilter = [];\r\n\r\n vm.resetcheck = true;\r\n\r\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\r\n\r\n // uncheck all check box's\r\n const checkboxList = $(\"input[info='filter']\");\r\n _.forEach(checkboxList, checkbox => {\r\n $(checkbox).prop('checked', false);\r\n });\r\n\r\n // remove checked count\r\n $('.FP-Orders__refine-results__filter-panel__legend span:first-child').text(\r\n '',\r\n );\r\n\r\n load();\r\n }\r\n\r\n function resetOrders() {\r\n vm.serviceOrderLoaded = false;\r\n vm.isInvoiceSession = !vm.isInvoiceSession;\r\n vm.redrawLeftNav = false;\r\n\r\n vm.searchInput = null;\r\n vm.selectedAssignedTechnicianFilter = [];\r\n vm.selectedContactForAppointment = [];\r\n vm.selectedCustomersFilter = [];\r\n vm.selectedPostalCodesFilter = [];\r\n vm.selectedProgramsFilter = [];\r\n vm.selectedRushOrderFilter = [];\r\n vm.selectedSLAFilter = [];\r\n vm.selectedStatusesFilter = [];\r\n vm.selectedTypesFilter = [];\r\n vm.selectedInvoiceStatusFilter = [];\r\n vm.selectedInvoiceNumbersFilter = [];\r\n vm.selectedJurisdictionFilter = [];\r\n\r\n // remove all check box's\r\n $(\"input[info='filter']\")\r\n .parent()\r\n .remove();\r\n\r\n // uncheck all check box's\r\n const checkboxList = $(\"input[info='filter']\");\r\n _.forEach(checkboxList, checkbox => {\r\n $(checkbox).prop('checked', false);\r\n });\r\n\r\n // remove checked count\r\n $('.FP-Orders__refine-results__filter-panel__legend span:first-child').text(\r\n '',\r\n );\r\n\r\n load();\r\n }\r\n\r\n function setFilters() {\r\n let selectedFilters = sessionStorageService.get(\r\n assetService.storageKeys.selectedFilters,\r\n );\r\n\r\n vm.removeFilters = sessionStorageService.get('checkAllOrders');\r\n\r\n if (vm.removeFilters == true || vm.resetcheck == true) {\r\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\r\n selectedFilters = null;\r\n }\r\n\r\n if (selectedFilters) {\r\n vm.selectedAssignedTechnicianFilter =\r\n selectedFilters.selectedAssignedTechnicianFilter;\r\n vm.selectedContactForAppointment =\r\n selectedFilters.selectedContactForAppointment;\r\n vm.selectedCustomersFilter = selectedFilters.selectedCustomersFilter;\r\n vm.selectedPostalCodesFilter = selectedFilters.selectedPostalCodesFilter;\r\n vm.selectedProgramsFilter = selectedFilters.selectedProgramsFilter;\r\n vm.selectedRushOrderFilter = selectedFilters.selectedRushOrderFilter;\r\n vm.selectedSLAFilter = selectedFilters.selectedSLAFilter;\r\n vm.selectedStatusesFilter = selectedFilters.selectedStatusesFilter;\r\n vm.selectedTypesFilter = selectedFilters.selectedTypesFilter;\r\n vm.selectedInvoiceStatusFilter =\r\n selectedFilters.selectedInvoiceStatusFilter;\r\n vm.selectedInvoiceNumbersFilter =\r\n selectedFilters.selectedInvoiceNumbersFilter;\r\n vm.selectedJurisdictionFilter =\r\n selectedFilters.selectedJurisdictionFilter;\r\n }\r\n\r\n // Customers Filter\r\n const uniqCustomers = _.chain(vm.serviceOrders)\r\n .map(_customer)\r\n .map(obj => obj.name)\r\n .compact()\r\n .uniq()\r\n .value();\r\n\r\n const customersFilterList = _.map(\r\n vm.selectedCustomersFilter,\r\n filter => filter.value,\r\n );\r\n vm.customers = _.map(uniqCustomers, item => ({\r\n value: item,\r\n text: item,\r\n selected: _.includes(customersFilterList, item),\r\n active: false,\r\n }));\r\n vm.customers = _.sortBy(vm.customers, o => o.value);\r\n\r\n const uniqPostalCodes = _.chain(vm.serviceOrders)\r\n .map(_serviceAddress)\r\n .map(obj => {\r\n if (obj) {\r\n if (obj.hasOwnProperty('postalCode')) {\r\n return obj.postalCode;\r\n }\r\n }\r\n\r\n return '';\r\n })\r\n .compact()\r\n .uniq()\r\n .value();\r\n\r\n const postalCodesFilterList = _.map(\r\n vm.selectedPostalCodesFilter,\r\n filter => filter.value,\r\n );\r\n vm.postalCodes = _.map(uniqPostalCodes, item => ({\r\n value: item,\r\n text: item,\r\n selected: _.includes(postalCodesFilterList, item),\r\n active: false,\r\n }));\r\n vm.postalCodes = _.sortBy(vm.postalCodes, o => o.value);\r\n\r\n // Programs Filter\r\n const programsFilterList = _.map(\r\n vm.selectedProgramsFilter,\r\n filter => filter.value,\r\n );\r\n vm.programs = _.map(_.uniqBy(vm.serviceOrders, _program), item => ({\r\n value: item.program,\r\n text: item.programName,\r\n selected: _.includes(programsFilterList, item.program),\r\n active: false,\r\n }));\r\n vm.programs = _.sortBy(vm.programs, o => o.value);\r\n\r\n // Status Filter\r\n const statusFilterList = _.map(\r\n vm.selectedStatusesFilter,\r\n filter => filter.value,\r\n );\r\n\r\n vm.statuses = _.map(_.uniqBy(vm.serviceOrders, _status), item => ({\r\n value: item.soStatus,\r\n text: item.soStatusName,\r\n selected: _.includes(statusFilterList, item.soStatus),\r\n active: false,\r\n }));\r\n vm.statuses = _.filter(vm.statuses, o => _statusFilters.includes(o.value));\r\n vm.statuses = _.sortBy(vm.statuses, o => o.value);\r\n\r\n // Types Filter\r\n const typesFilterList = _.map(\r\n vm.selectedTypesFilter,\r\n filter => filter.value,\r\n );\r\n vm.types = _.map(_.uniqBy(vm.serviceOrders, _type), item => ({\r\n value: item.soType,\r\n text: item.soTypeName,\r\n selected: _.includes(typesFilterList, item.soType),\r\n active: false,\r\n }));\r\n vm.types = _.sortBy(vm.types, o => o.value);\r\n\r\n // Invoice Numbers Filter\r\n const invoiceNumbersFilterList = _.map(\r\n vm.selectedInvoiceNumbersFilter,\r\n filter => filter.value,\r\n );\r\n vm.invoiceNumbers = _.map(\r\n _.uniqBy(vm.serviceOrders, _invoiceField),\r\n item => ({\r\n value: item.contractorInvoiceNumber,\r\n text: item.contractorInvoiceNumber,\r\n selected: _.includes(\r\n invoiceNumbersFilterList,\r\n item.contractorInvoiceNumber,\r\n ),\r\n active: false,\r\n }),\r\n );\r\n vm.invoiceNumbers = _.sortBy(vm.invoiceNumbers, o => o.value);\r\n\r\n // Assigned Technicians Filter\r\n const uniqAssignedTechnicians = _.chain(vm.serviceOrders)\r\n .map(_assignedTechnician)\r\n .map(obj => obj.name)\r\n .compact()\r\n .uniq()\r\n .value();\r\n\r\n const assignedTechniciansFilterList = _.map(\r\n vm.selectedAssignedTechnicianFilter,\r\n filter => filter.value,\r\n );\r\n vm.assignedTechnicians = _.map(uniqAssignedTechnicians, item => ({\r\n value: item,\r\n text: item,\r\n selected: _.includes(assignedTechniciansFilterList, item),\r\n active: false,\r\n }));\r\n vm.assignedTechnicians = _.sortBy(vm.assignedTechnicians, o => o.value);\r\n\r\n // Invoice Status Filter\r\n const invoiceStatusFilterList = _.map(\r\n vm.selectedInvoiceStatusFilter,\r\n filter => filter.value,\r\n );\r\n\r\n vm.invoiceStatuses = _.map(_.uniqBy(vm.serviceOrders, _status), item => ({\r\n value: item.soStatus,\r\n text: item.soStatusName,\r\n selected: _.includes(invoiceStatusFilterList, item.soStatus),\r\n active: false,\r\n }));\r\n vm.invoiceStatuses = _.filter(vm.invoiceStatuses, o =>\r\n _invoiceStatusFilters.includes(o.value),\r\n );\r\n vm.invoiceStatuses = _.sortBy(vm.invoiceStatuses, o => o.value);\r\n\r\n // Rush Order filter\r\n const rushOrderFilterList = _.map(\r\n vm.selectedRushOrderFilter,\r\n filter => filter.value,\r\n );\r\n\r\n vm.rushOrders = _.map(assetService.boolOptions, item => ({\r\n value: item.value,\r\n text: item.text,\r\n selected: _.includes(rushOrderFilterList, item.value),\r\n active: false,\r\n }));\r\n\r\n vm.rushOrders = _.sortBy(vm.rushOrders, o => o.value);\r\n\r\n // SLA Filter\r\n const slaFilterList = _.map(vm.selectedSLAFilter, filter => filter.value);\r\n\r\n vm.slaOptions = _.map(\r\n Object.values(assetService.slaOptionsFilter),\r\n item => ({\r\n value: item.value,\r\n text: item.text,\r\n selected: _.includes(slaFilterList, item.value),\r\n active: false,\r\n }),\r\n );\r\n\r\n // Jurisdiction Filter\r\n const uniqJurisdictions = _.chain(vm.serviceOrders)\r\n .map(_serviceAddress)\r\n .filter(obj => {\r\n if (obj) {\r\n if (obj.hasOwnProperty('jurisdiction')) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n })\r\n .map(obj => obj.jurisdiction)\r\n .compact()\r\n .uniq()\r\n .value();\r\n\r\n const jurisdictionFilterList = _.map(\r\n vm.selectedJurisdictionFilter,\r\n filter => filter.value,\r\n );\r\n\r\n vm.jurisdictions = _.map(uniqJurisdictions, item => ({\r\n value: item,\r\n text: item,\r\n selected: _.includes(jurisdictionFilterList, item),\r\n active: false,\r\n }));\r\n\r\n vm.jurisdictions = _.sortBy(vm.jurisdictions, o => o.value);\r\n\r\n // Contact For Appointment filter\r\n const contactForAppointmentFilterList = _.map(\r\n vm.selectedContactForAppointment,\r\n filter => filter.value,\r\n );\r\n\r\n vm.contactForAppointments = _.map(assetService.boolOptions, item => ({\r\n value: item.value,\r\n text: item.text,\r\n selected: _.includes(contactForAppointmentFilterList, item.value),\r\n active: false,\r\n }));\r\n\r\n vm.contactForAppointments = _.sortBy(\r\n vm.contactForAppointments,\r\n o => o.value,\r\n );\r\n\r\n if (selectedFilters) {\r\n applyFilters();\r\n }\r\n }\r\n\r\n function initializeOrders(serviceOrders) {\r\n vm.serviceOrders = [];\r\n vm.workingSetServiceOrders = [];\r\n resetSelected();\r\n\r\n _.forEach(serviceOrders, item => {\r\n item.disabled = true;\r\n item.selected = false;\r\n\r\n item.statusObj = angular.copy(genericHelperService.getStatusObject(item));\r\n item.selected = false;\r\n vm.serviceOrders.push(item);\r\n vm.workingSetServiceOrders.push(item);\r\n\r\n if (item.soStatus === _statusAccepted) {\r\n if (\r\n !item.assignedTechnician.hasOwnProperty('name') ||\r\n (item.assignedTechnician.hasOwnProperty('name') &&\r\n item.assignedTechnician.name === '')\r\n ) {\r\n item.disabled = false;\r\n }\r\n }\r\n\r\n if (item.soStatus === _statusScheduled) {\r\n item.disabled = false;\r\n }\r\n\r\n if (\r\n item.soStatus === _statusReviewed &&\r\n item.assignedTechnician &&\r\n item.assignedTechnician.cdpId &&\r\n !item.contractorInvoiceNumber\r\n ) {\r\n vm.showBundleOrdersOption = true;\r\n item.disabled = false;\r\n }\r\n });\r\n\r\n vm.serviceOrders = applySorting(\r\n vm.serviceOrders,\r\n vm.selectedSortField !== null ? vm.selectedSortField : _defaultSortOption,\r\n );\r\n\r\n if (vm.serviceOrders.length == 0) {\r\n vm.noWorkOrders = true;\r\n } else {\r\n vm.setPage(1);\r\n }\r\n }\r\n\r\n function refreshData() {\r\n if (vm.isInvoiceSession) {\r\n refreshInvoiceOrders();\r\n } else {\r\n refreshAcceptedOrders();\r\n }\r\n }\r\n\r\n function refreshInvoiceOrders() {\r\n loadInvoiceOrders().then(\r\n () => {\r\n vm.showRefreshBanner = false;\r\n },\r\n () => {},\r\n );\r\n }\r\n\r\n function refreshAcceptedOrders() {\r\n loadAcceptedOrders().then(\r\n () => {\r\n vm.showRefreshBanner = false;\r\n },\r\n () => {},\r\n );\r\n }\r\n\r\n function resetSelected() {\r\n vm.workingSetServiceOrders.forEach(item => {\r\n item.selected = false;\r\n });\r\n\r\n vm.buttons.invoice.counter = 0;\r\n vm.buttons.invoice.disabled = true;\r\n vm.buttons.dispatch.counter = 0;\r\n vm.buttons.dispatch.disabled = true;\r\n vm.buttons.assign.counter = 0;\r\n vm.buttons.assign.disabled = true;\r\n vm.selectAllModel = false;\r\n }\r\n\r\n function search() {\r\n if (vm.searchInput.length === 0) {\r\n applyFilters();\r\n } else {\r\n const serviceOrdersCollection = new DataCollection(vm.serviceOrders);\r\n\r\n _searchableFields.assignedTechnicianFilter[\r\n `${assetService.searchFilterKeys.assignedTechnician}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.customerNameFilter[\r\n `${assetService.searchFilterKeys.customerName}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.invoiceNumberFilter[\r\n `${assetService.searchFilterKeys.invoiceNumber}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.statusFilter[\r\n `${assetService.searchFilterKeys.status}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.typeFilter[\r\n `${assetService.searchFilterKeys.type}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.programFilter[\r\n `${assetService.searchFilterKeys.program}__icontains`\r\n ] = vm.searchInput;\r\n _searchableFields.workOrderIdFilter[\r\n `${assetService.searchFilterKeys.workOrderId}__icontains`\r\n ] = vm.searchInput;\r\n\r\n vm.serviceOrderFounded = serviceOrdersCollection\r\n .query()\r\n .filter(\r\n _searchableFields.assignedTechnicianFilter,\r\n _searchableFields.customerNameFilter,\r\n _searchableFields.invoiceNumberFilter,\r\n _searchableFields.statusFilter,\r\n _searchableFields.typeFilter,\r\n _searchableFields.programFilter,\r\n _searchableFields.workOrderIdFilter,\r\n )\r\n .values();\r\n\r\n initializeOrders(vm.serviceOrderFounded);\r\n }\r\n }\r\n\r\n function selectAll() {\r\n vm.workingSetServiceOrders.forEach(item => {\r\n if (!item.disabled) {\r\n const itemCountable = item.selected !== vm.selectAllModel;\r\n item.selected = vm.selectAllModel;\r\n\r\n calculateButtonsCounter(item, itemCountable);\r\n }\r\n });\r\n }\r\n\r\n function setPage(page) {\r\n if (\r\n page >= 1 ||\r\n (typeof vm.pager !== 'undefined' && page <= vm.pager.totalPages)\r\n ) {\r\n if (vm.workingSetServiceOrders.length > 0) {\r\n vm.noWorkingSetWorkOrders = false;\r\n vm.noWorkOrders = false;\r\n\r\n vm.workingSetServiceOrders = applySorting(\r\n vm.workingSetServiceOrders,\r\n vm.selectedSortField !== null\r\n ? vm.selectedSortField\r\n : _defaultSortOption,\r\n );\r\n vm.pager = pagerService.createPager(\r\n assetService.storageKeys.acceptedOrdersPager,\r\n vm.workingSetServiceOrders.length,\r\n page,\r\n vm.ordersPerPage,\r\n );\r\n\r\n vm.currentPageWorkingSetServiceOrders = vm.workingSetServiceOrders.slice(\r\n vm.pager.startIndex,\r\n vm.pager.endIndex + 1,\r\n );\r\n } else {\r\n vm.noWorkingSetWorkOrders = true;\r\n }\r\n }\r\n }\r\n\r\n function startPollingAcceptedOrders() {\r\n const _url = `${\r\n window.location.origin\r\n }/${apiConfigService.get.getCEPAcceptedOrdersUrl()}`;\r\n return acceptedOrdersPollingWebWorkerService.callWebWorker(_url).then(\r\n result => {\r\n if (result.length > 0) {\r\n vm.showRefreshBanner = true;\r\n }\r\n },\r\n e => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function startPollingInvoiceOrders() {\r\n const _url = `${\r\n window.location.origin\r\n }/${apiConfigService.get.getCEPInvoiceOrdersUrl()}`;\r\n return invoiceOrdersPollingWebWorkerService.callWebWorker(_url).then(\r\n result => {\r\n if (result.length > 0) {\r\n vm.showRefreshBanner = true;\r\n }\r\n },\r\n e => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function toggleFilters() {\r\n vm.showMoreFilters = !vm.showMoreFilters;\r\n }\r\n\r\n function load() {\r\n const userRole = currentUserService.getUserRole();\r\n vm.isContractor = userRole === assetService.userTypes.CONTRACTOR;\r\n const selectedFilters = sessionStorageService.get(\r\n assetService.storageKeys.selectedFilters,\r\n );\r\n\r\n if (vm.resetcheck) {\r\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\r\n }\r\n\r\n vm.getAllOrders = sessionStorageService.get('checkAllOrders');\r\n\r\n if (vm.getAllOrders == true) {\r\n sessionStorageService.delete(assetService.storageKeys.selectedFilters);\r\n }\r\n\r\n if (\r\n vm.isInvoiceSession ||\r\n (selectedFilters &&\r\n (selectedFilters.selectedInvoiceNumbersFilter.length > 0 ||\r\n selectedFilters.selectedInvoiceStatusFilter.length > 0))\r\n ) {\r\n vm.title = assetService.apiServices.invoiceOrders.name;\r\n vm.buttons.resetOrders.label = assetService.btnLabels.ACCEPTED_ORDERS;\r\n vm.isInvoiceSession = true;\r\n } else {\r\n vm.title = assetService.apiServices.acceptedOrders.name;\r\n vm.buttons.resetOrders.label = assetService.btnLabels.INVOICE_ORDERS;\r\n vm.isInvoiceSession = false;\r\n }\r\n\r\n if (vm.isInvoiceSession) {\r\n loadInvoiceOrders().then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n },\r\n () => {},\r\n );\r\n } else {\r\n loadAcceptedOrders().then(\r\n () => {\r\n vm.loadingSpinner = false;\r\n },\r\n () => {},\r\n );\r\n }\r\n }\r\n\r\n function loadInvoiceOrders() {\r\n return indexedDbService.getInvoiceOrders().then(result => {\r\n if (result) {\r\n if (result.length > 0) {\r\n vm.originalServiceOrders = dtoService.transformServiceOrders(\r\n result,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n initializeOrders(vm.originalServiceOrders);\r\n setFilters();\r\n setModels();\r\n } else {\r\n vm.noWorkOrders = true;\r\n }\r\n startPollingInvoiceOrders();\r\n vm.serviceOrderLoaded = true;\r\n vm.redrawLeftNav = true;\r\n }\r\n });\r\n }\r\n\r\n function loadAcceptedOrders() {\r\n return indexedDbService.getAcceptedOrders().then(result => {\r\n if (result) {\r\n if (result.length > 0) {\r\n vm.originalServiceOrders = dtoService.transformServiceOrders(\r\n result,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n initializeOrders(vm.originalServiceOrders);\r\n setFilters();\r\n setModels();\r\n } else {\r\n vm.noWorkOrders = true;\r\n }\r\n startPollingAcceptedOrders();\r\n vm.serviceOrderLoaded = true;\r\n vm.redrawLeftNav = true;\r\n }\r\n });\r\n }\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n indexedDbService.ensureDb().then(\r\n () => {\r\n load();\r\n },\r\n error => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n };\r\n init();\r\n}\r\n","app.controller('correspondenceReviewAndEnrolleController', correspondenceReviewAndEnrolleController);\r\ncorrespondenceReviewAndEnrolleController.$inject = [\r\n '$state',\r\n 'sessionStorageService',\r\n 'assetService'\r\n];\r\n\r\nfunction correspondenceReviewAndEnrolleController(\r\n $state,\r\n sessionStorageService,\r\n assetService\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n let widgetUsers = null;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n let vm = this;\r\n vm.selected = false;\r\n vm.data = [];\r\n vm.accounts = {}\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n let init = init;\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n\r\n vm.doChanges = function (change) {\r\n if (change)\r\n $state.go('paperlessBilling.reviewAndEnroll'); //continue with enrollment\r\n else\r\n $state.go('paperlessBilling.selectAccounts');\r\n }\r\n \r\n vm.cancel = function () {\r\n let data = {\r\n accounts: []\r\n };\r\n\r\n vm.accounts.accounts.map(function (item) {\r\n if (!item.isSuccess)\r\n item.selected = false;\r\n\r\n data.accounts.push(item);\r\n });\r\n \r\n vm.data = [];\r\n\r\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, data);\r\n\r\n $state.go('paperlessBilling.selectAccounts');\r\n }\r\n\r\n function load() {\r\n vm.accounts = sessionStorageService.get(assetService.storageKeys.paperlessBilding.account);\r\n\r\n vm.accounts.accounts.map(function (item) {\r\n if(item.selected)\r\n vm.data.push(item);\r\n });\r\n }\r\n\r\n init = function () {\r\n load();\r\n }\r\n\r\n init();\r\n}","app.controller('correspondenceSelectAccountController', correspondenceSelectAccountController);\r\ncorrespondenceSelectAccountController.$inject = [\r\n 'sessionStorageService',\r\n 'assetService',\r\n '$state'\r\n];\r\n\r\nfunction correspondenceSelectAccountController(\r\n sessionStorageService,\r\n assetService,\r\n $state\r\n) {\r\n \r\n /**\r\n * Global Vars\r\n */\r\n\r\n let vm = this;\r\n vm.selected = false;\r\n vm.selectEnroll = 0;\r\n vm.data = {};\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n let init = init;\r\n \r\n /**\r\n * Function Definitions\r\n */\r\n \r\n vm.doChanges = function (change) {\r\n if (change && vm.selectEnroll > 0) {\r\n sessionStorageService.set(assetService.storageKeys.paperlessBilding.account, vm.data);\r\n $state.go('paperlessBilling.reviewAndEnroll');\r\n }\r\n else\r\n $state.go('paperlessBilling.selectAccounts'); //go previous\r\n }\r\n \r\n vm.changueSelect = function (item) {\r\n if(item == -1)\r\n selectAll();\r\n else {\r\n vm.selected = false;\r\n if (!vm.data.accounts[item].selected)\r\n vm.selectEnroll ++;\r\n else\r\n vm.selectEnroll --;\r\n }\r\n }\r\n \r\n vm.cancel = function () {\r\n changeAll(false);\r\n }\r\n \r\n let selectAll = function () {\r\n changeAll(!vm.selected);\r\n }\r\n\r\n changeAll = function (change) {\r\n data = [];\r\n vm.selectEnroll = 0;\r\n\r\n vm.data.accounts.map(function (item) {\r\n if (!item.isSuccess) {\r\n item.selected = change;\r\n if(change)\r\n vm.selectEnroll ++;\r\n }\r\n \r\n data.push(item);\r\n });\r\n \r\n vm.data.accounts = data;\r\n }\r\n\r\n function load() {\r\n vm.selectEnroll = 0;\r\n\r\n vm.data = sessionStorageService.get(assetService.storageKeys.paperlessBilding.account);\r\n \r\n vm.data.accounts.forEach(element => {\r\n if(element.selected)\r\n vm.selectEnroll ++;\r\n });\r\n }\r\n\r\n init = function () {\r\n load();\r\n }\r\n\r\n init();\r\n}","/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('FPCompanyAlertsController', FPCompanyAlertsController);\r\nFPCompanyAlertsController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n];\r\n\r\nfunction FPCompanyAlertsController(\r\n $scope,\r\n assetService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.loadingSpinner = true;\r\n vm.serviceRequestAlertsLoaded = false;\r\n vm.workOrderAlertsLoaded = false;\r\n \r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.workOrderAlertsLoaded, (event, ars) => {\r\n vm.workOrderAlertsLoaded = true;\r\n if (vm.serviceRequestAlertsLoaded) { vm.loadingSpinner = false; }\r\n });\r\n $scope.$on(assetService.events.serviceRequestAlertsLoaded, (event, ars) => {\r\n vm.serviceRequestAlertsLoaded = true;\r\n if (vm.workOrderAlertsLoaded) { vm.loadingSpinner = false; }\r\n });\r\n\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n const init = function () {\r\n /* empty function */\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPAnalyticsController', FPAnalyticsController);\r\nFPAnalyticsController.$inject = ['$scope', 'FPAssetService'];\r\n\r\nfunction FPAnalyticsController($scope, assetService) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n vm.workOrderAnalyticsLoaded = false;\r\n vm.serviceRequestAnalyticsLoaded = false;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.workOrderAnalyticsLoaded, (event, ars) => {\r\n vm.workOrderAnalyticsLoaded = true;\r\n if (vm.serviceRequestAnalyticsLoaded) {\r\n vm.loadingSpinner = false;\r\n }\r\n });\r\n $scope.$on(\r\n assetService.events.serviceRequestAnalyticsLoaded,\r\n (event, ars) => {\r\n vm.serviceRequestAnalyticsLoaded = true;\r\n if (vm.workOrderAnalyticsLoaded) {\r\n vm.loadingSpinner = false;\r\n }\r\n },\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n const init = function() {/* empty function*/ };\r\n\r\n init();\r\n}\r\n","app.controller('FPCompanyDetailsController', FPCompanyDetailsController);\r\nFPCompanyDetailsController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPBroadcastService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction FPCompanyDetailsController(\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n sessionStorageService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const _roleContractor = assetService.userRoles.contractor;\r\n const _roleTechnician = assetService.userRoles.technician;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n vm.data = {\r\n name: null,\r\n billingAddress: null,\r\n jurisdiction: null,\r\n email: null,\r\n fieldCoordinator: null,\r\n contactNumber: null,\r\n numberOfAdmins: 0,\r\n numberOfTechnicians: 0,\r\n };\r\n vm.companyDetails = null;\r\n vm.usersReady = false;\r\n vm.usersLoaded = false;\r\n vm.companyDetailsLoaded = false;\r\n vm.companyDetailsReady = false;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.usersLoaded, () => {\r\n const allUsers = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n vm.data.numberOfAdmins = 0;\r\n vm.data.numberOfTechnicians = 0;\r\n allUsers.forEach(user => {\r\n if (user.role.toLowerCase() === _roleContractor) {\r\n vm.data.numberOfAdmins++;\r\n } else if (user.role.toLowerCase() === _roleTechnician) {\r\n vm.data.numberOfTechnicians++;\r\n }\r\n });\r\n vm.usersReady = true;\r\n vm.usersLoaded = true;\r\n if (vm.companyDetailsLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.companyDetailsLoaded, () => {\r\n vm.companyDetailsLoaded = true;\r\n if (vm.usersLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function formatBillingAddress(address) {\r\n let formattedAddress = address.line1;\r\n if (address.line2) {\r\n formattedAddress += ` ${address.line2}`;\r\n }\r\n formattedAddress += ` ${address.town}`;\r\n formattedAddress += ` ${address.region.isocode}`;\r\n formattedAddress += ` ${address.postalCode}`;\r\n\r\n return formattedAddress;\r\n }\r\n function setModels() {\r\n vm.data.name = vm.companyDetails.name;\r\n vm.data.billingAddress = formatBillingAddress(\r\n vm.companyDetails.billingAddress,\r\n );\r\n vm.data.jurisdiction = vm.companyDetails.jurisdiction;\r\n vm.data.email = vm.companyDetails.email;\r\n vm.data.fieldCoordinator = vm.companyDetails.fieldCoordinator;\r\n vm.data.contactNumber = vm.companyDetails.contactNumber;\r\n\r\n vm.companyDetailsReady = true;\r\n broadcastService.triggerCompanyDetailsReady();\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function load() {\r\n vm.companyDetails = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.companyDetails,\r\n );\r\n setModels();\r\n }\r\n\r\n const init = function() { /* empty function */};\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPCompanyInvoicesWidgetController',\r\n FPCompanyInvoicesWidgetController,\r\n);\r\nFPCompanyInvoicesWidgetController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'FPInvoiceService',\r\n];\r\n\r\nfunction FPCompanyInvoicesWidgetController(\r\n $scope,\r\n assetService,\r\n dtoService,\r\n indexedDbService,\r\n invoiceService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n const vm = this;\r\n vm.companyInvoicesReady = false;\r\n vm.companyInvoices = null;\r\n vm.data = {\r\n serviceOrders: [],\r\n };\r\n vm.invoiceOrdersUrl =\r\n window.location.origin + assetService.sitePagesUrlPaths.INVOICE_ORDERS;\r\n vm.loadingSpinner = true;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.invoiceOrdersLoaded, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function setModels() {\r\n vm.data.serviceOrders = invoiceService.applyGrouping(vm.companyInvoices);\r\n\r\n vm.companyInvoicesReady = true;\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function load() {\r\n return indexedDbService.getInvoiceOrders().then(result => {\r\n if (result && result.length > 0) {\r\n vm.companyInvoices = dtoService.transformServiceOrders(\r\n result,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n setModels();\r\n } else {\r\n vm.companyInvoicesReady = true;\r\n vm.loadingSpinner = false;\r\n }\r\n });\r\n }\r\n\r\n vm.getOrderCount = function(invoices) {\r\n return invoices.length;\r\n };\r\n\r\n vm.takeStatus = function(serviceOrders) {\r\n return assetService.status[serviceOrders[0].soStatus].label;\r\n };\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {/* empty function*/};\r\n\r\n init();\r\n}\r\n","app.controller('FPAllUsersController', FPAllUsersController);\r\nFPAllUsersController.$inject = [\r\n '$log',\r\n '$scope',\r\n 'FPDateHelperService',\r\n 'FPBroadcastService',\r\n 'sessionStorageService',\r\n 'assetService',\r\n 'refreshCEPUsersService',\r\n 'getCEPUsersService',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPAllUsersController(\r\n $log,\r\n $scope,\r\n FPDateHelperService,\r\n broadcastService,\r\n sessionStorageService,\r\n assetService,\r\n refreshCEPUsersService,\r\n getCEPUsersService,\r\n FPModalService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const _baseUrl = window.location.origin;\r\n const _errorsPageUrl = assetService.pageUrls.errorPage;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n const vm = this;\r\n vm.allUsers = null;\r\n vm.data = {\r\n users: [],\r\n };\r\n vm.usersReady = false;\r\n vm.addendum = null;\r\n vm.loadingSpinner = true;\r\n vm.showInviteUserModal = false;\r\n vm.showUserAdminModal = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.getDateFromFullDate = getDateFromFullDate;\r\n vm.inviteUser = inviteUser;\r\n vm.maintainUsers = maintainUsers;\r\n\r\n /**\r\n * Watchers\r\n */\r\n\r\n $scope.$on(assetService.events.usersLoaded, () => {\r\n load();\r\n });\r\n\r\n $scope.$on(assetService.events.usersReloadRequired, () => {\r\n vm.usersReady = false;\r\n vm.loadingSpinner = true;\r\n if (assetService.apiConfig.useLocalHost) {\r\n getUsers().then(\r\n () => {\r\n broadcastService.usersLoaded();\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n } else {\r\n getRefreshUsers().then(\r\n () => {\r\n broadcastService.usersLoaded();\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function inviteUser() {\r\n FPModalService.inviteUserModal();\r\n }\r\n\r\n function maintainUsers() {\r\n FPModalService.userAdministrationModal();\r\n }\r\n\r\n function setModels() {\r\n let _role = null;\r\n vm.data.users = vm.allUsers.map(user => {\r\n if (user.role.toLowerCase() === assetService.userRoles.contractor) {\r\n _role = assetService.userRoleLabels.contractor;\r\n } else {\r\n _role = assetService.userRoleLabels.technician;\r\n }\r\n\r\n return {\r\n name: user.name,\r\n role: _role,\r\n // email: user.email,\r\n effectiveDate: user.effectiveDate,\r\n status: user.status,\r\n };\r\n });\r\n\r\n vm.usersReady = true;\r\n broadcastService.triggerUsersReady();\r\n vm.loadingSpinner = false;\r\n }\r\n\r\n function getRefreshUsers() {\r\n setFlag(assetService.storageKeys.toggleFlags.users);\r\n return refreshCEPUsersService.sitecore.refreshUsers().then(\r\n result => {\r\n vm.allUsers = result.users;\r\n _.forEach(vm.allUsers, user => {\r\n user.toggleFlag = sessionStorageService.get(\r\n assetService.storageKeys.toggleFlags.users,\r\n );\r\n });\r\n setModels();\r\n sessionStorageService.set(\r\n assetService.storageKeys.widgetsData.users,\r\n vm.allUsers,\r\n );\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function getUsers() {\r\n setFlag(assetService.storageKeys.toggleFlags.users);\r\n return getCEPUsersService.apigee.getCEPUsers().then(\r\n result => {\r\n vm.allUsers = result.users;\r\n _.forEach(vm.allUsers, user => {\r\n user.toggleFlag = sessionStorageService.get(\r\n assetService.storageKeys.toggleFlags.users,\r\n );\r\n });\r\n setModels();\r\n sessionStorageService.set(\r\n assetService.storageKeys.widgetsData.users,\r\n vm.allUsers,\r\n );\r\n },\r\n error => {\r\n if(assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function setFlag(flag) {\r\n let toggleFlag = sessionStorageService.get(flag);\r\n toggleFlag = !toggleFlag ? '1' : toggleFlag === 1 ? '0' : '1';\r\n\r\n sessionStorageService.set(flag, toggleFlag);\r\n }\r\n\r\n function load() {\r\n vm.allUsers = sessionStorageService.get(\r\n assetService.storageKeys.widgetsData.users,\r\n );\r\n setModels();\r\n }\r\n\r\n function getDateFromFullDate(date) {\r\n return FPDateHelperService.getDateFromFullDate(date);\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {/*empty function*/};\r\n\r\n init();\r\n}\r\n","/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-use-before-define */\r\napp.controller('FPCustomerLogisticsController', FPCustomerLogisticsController);\r\nFPCustomerLogisticsController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPCurrentUserService',\r\n 'FPDateHelperService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'sessionStorageService',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPCustomerLogisticsController(\r\n $scope,\r\n assetService,\r\n currentUserService,\r\n dateHelperService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n sessionStorageService,\r\n FPModalService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _allTechnicians = [];\r\n const kwCdpId = assetService.strings.CDPID;\r\n const kwName = assetService.strings.NAME;\r\n const kwMeterId = assetService.strings.METERID;\r\n const kwValue = assetService.strings.VALUE;\r\n const roleTechnician = assetService.userTypes.TECHNICIAN;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n\r\n vm.currentOrderStatus = {};\r\n vm.disabled = false;\r\n vm.disableAll = false;\r\n vm.dropdowns = {\r\n scheduledStartDateHour: null,\r\n scheduledEndDateHour: null,\r\n rescheduledStartDateHour: null,\r\n rescheduledEndDateHour: null,\r\n meterNumbers: null,\r\n firstAttemptDateHour: null,\r\n allTechnicians: null,\r\n };\r\n vm.loadingSpinner = true;\r\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\r\n vm.serviceOrder = {};\r\n vm.serviceOrderLoaded = false;\r\n vm.statusCompleted = assetService.status.COMPLETED;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n vm.woorSR = assetService.woorSRType.SERVICE_REQUEST;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.addDays = addDays;\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n vm.conversionToStandardTime = conversionToStandardTime;\r\n vm.onChange = onChange;\r\n vm.removeSelectedProp = removeSelectedProp;\r\n vm.saveChanges = saveChanges;\r\n vm.telFormat = telFormat;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.updateServiceOrder, () => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function addDays(date, days) {\r\n return dateHelperService.addDays(date, days);\r\n }\r\n\r\n function cancelWorkOrder() {\r\n FPModalService.cancelModal();\r\n }\r\n\r\n function conversionToStandardTime(militaryTime) {\r\n return dateHelperService.conversionToStandardTime(militaryTime);\r\n }\r\n\r\n function onChange() {\r\n const serviceOrder = angular.copy(vm.form);\r\n\r\n if (vm.form.customerContactHistory.firstAttemptDateDukeCalendar) {\r\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = vm.form.customerContactHistory.firstAttemptDateDukeCalendar;\r\n } else if ($scope.customerLogisticsForm.hasOwnProperty('firstAttemptDateDukeCalendar')) {\r\n serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar = $scope.customerLogisticsForm.firstAttemptDateDukeCalendar.$modelValue\r\n ? $scope.customerLogisticsForm.firstAttemptDateDukeCalendar.$modelValue\r\n : '';\r\n }\r\n\r\n if (vm.form.scheduledStartDateDukeCalendar) {\r\n serviceOrder.scheduledStartDateDukeCalendar = vm.form.scheduledStartDateDukeCalendar;\r\n } else if ($scope.customerLogisticsForm.hasOwnProperty('scheduledStartDateDukeCalendar')) {\r\n serviceOrder.scheduledStartDateDukeCalendar = $scope.customerLogisticsForm.scheduledStartDateDukeCalendar.$modelValue\r\n ? $scope.customerLogisticsForm.scheduledStartDateDukeCalendar.$modelValue\r\n : '';\r\n }\r\n\r\n if (vm.form.rescheduledStartDateDukeCalendar) {\r\n serviceOrder.rescheduledStartDateDukeCalendar = vm.form.rescheduledStartDateDukeCalendar;\r\n } else if ($scope.customerLogisticsForm.hasOwnProperty('rescheduledStartDateDukeCalendar')) {\r\n serviceOrder.rescheduledStartDateDukeCalendar = $scope.customerLogisticsForm.rescheduledStartDateDukeCalendar.$modelValue\r\n ? $scope.customerLogisticsForm.rescheduledStartDateDukeCalendar.$modelValue\r\n : '';\r\n }\r\n\r\n serviceOrdersFactory.updateServiceOrder(serviceOrder);\r\n }\r\n\r\n function setDropdowns() {\r\n vm.dropdowns = {\r\n allTechnicians: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n _allTechnicians,\r\n kwCdpId,\r\n kwName,\r\n ),\r\n kwValue,\r\n vm.serviceOrder.assignedTechnician.cdpId,\r\n ),\r\n scheduledStartDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.scheduledStartDateHour,\r\n ),\r\n scheduledEndDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.scheduledEndDateHour,\r\n ),\r\n rescheduledStartDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.rescheduledStartDateHour,\r\n ),\r\n rescheduledEndDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.rescheduledEndDateHour,\r\n ),\r\n firstAttemptDateHour: genericHelperService.setSelectedProp(\r\n assetService.hoursOptions,\r\n kwValue,\r\n vm.form.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n };\r\n\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n const dropDownList = genericHelperService.createDropdownList(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n kwMeterId,\r\n );\r\n vm.dropdowns.meterNumbers = !vm.serviceOrder.serviceAddress.meterNumber\r\n ? dropDownList\r\n : genericHelperService.setSelectedProp(\r\n dropDownList,\r\n kwValue,\r\n vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n );\r\n }\r\n }\r\n\r\n vm.loadingSpinner = false;\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n assignedTechnician: {\r\n name: vm.serviceOrder.assignedTechnician.name,\r\n badgeNumber: vm.serviceOrder.assignedTechnician.badgeId,\r\n badgeId: vm.serviceOrder.assignedTechnician.badgeId,\r\n cdpId: vm.serviceOrder.assignedTechnician.cdpId,\r\n effectiveDate: null,\r\n phone: null,\r\n role: null,\r\n status: null,\r\n },\r\n customer: {\r\n name: vm.serviceOrder.customer.name,\r\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\r\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\r\n primaryEmailAddress: vm.serviceOrder.customer.primaryEmailAddress,\r\n },\r\n serviceAddress: {\r\n line1: vm.serviceOrder.serviceAddress.line1,\r\n city: vm.serviceOrder.serviceAddress.city,\r\n state: vm.serviceOrder.serviceAddress.state,\r\n postalCode: vm.serviceOrder.serviceAddress.postalCode,\r\n county: vm.serviceOrder.serviceAddress.county,\r\n jurisdiction: vm.serviceOrder.serviceAddress.jurisdiction,\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n subDivision: vm.serviceOrder.serviceAddress.subDivision,\r\n directions: vm.serviceOrder.serviceAddress.directions,\r\n },\r\n contactName: vm.serviceOrder.contactName,\r\n customerContactPreferences: {\r\n bestTimeToCall: vm.serviceOrder.customerContactPreferences.bestTimeToCall,\r\n notifyCustomerWhenInRoute: vm.serviceOrder.customerContactPreferences.notifyCustomerWhenInRoute,\r\n preferredEmailAddress: vm.serviceOrder.customerContactPreferences.preferredEmailAddress,\r\n },\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n createdDateDukeCalendar: !vm.serviceOrder.createdDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateDukeCalendar,\r\n createdDateHour: !vm.serviceOrder.createdDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.createdDate) : vm.serviceOrder.createdDateHour,\r\n serviceComments: vm.serviceOrder.serviceComments,\r\n isRushOrder: vm.serviceOrder.isRushOrder,\r\n serviceOrderBalance: {\r\n value: 0,\r\n },\r\n programEntitlementBalance: {\r\n value: 0,\r\n },\r\n cdpIdAssignedTechnician: null,\r\n multipleTechnicianRequired: vm.serviceOrder.multipleTechnicianRequired,\r\n assignedOtherTechnician: vm.serviceOrder.assignedOtherTechnician,\r\n contractorInvoiceNumber: vm.serviceOrder.contractorInvoiceNumber,\r\n dukeInvoiceNumber: vm.serviceOrder.dukeInvoiceNumber,\r\n internalInvoiceNumber: vm.serviceOrder.contractorInternalRefNumber,\r\n scheduledStartDateDukeCalendar: !vm.serviceOrder.scheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateDukeCalendar,\r\n scheduledStartDateHour: !vm.serviceOrder.scheduledStartDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledStartDate) : vm.serviceOrder.scheduledStartDateHour,\r\n scheduledEndDateHour: !vm.serviceOrder.scheduledEndDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.scheduledEndDate) : vm.serviceOrder.scheduledEndDateHour,\r\n returnTripRequired: vm.serviceOrder.returnTripRequired,\r\n rescheduledStartDateDukeCalendar: !vm.serviceOrder.rescheduledStartDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.rescheduledStartDate) : vm.serviceOrder.rescheduledStartDateDukeCalendar,\r\n rescheduledStartDateHour: !vm.serviceOrder.rescheduledStartDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.rescheduledStartDate) : vm.serviceOrder.rescheduledStartDateHour,\r\n rescheduledEndDateHour: !vm.serviceOrder.rescheduledEndDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.rescheduledEndDate) : vm.serviceOrder.rescheduledEndDateHour,\r\n customerContactHistory: {\r\n noOfContactAttempts: vm.serviceOrder.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDateDukeCalendar: !vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar ? dateHelperService.getDateFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateDukeCalendar,\r\n firstAttemptDateHour: !vm.serviceOrder.customerContactHistory.firstAttemptDateHour ? dateHelperService.getHourFromFullDate(vm.serviceOrder.customerContactHistory.firstAttemptDate) : vm.serviceOrder.customerContactHistory.firstAttemptDateHour,\r\n contactComments: vm.serviceOrder.customerContactHistory.contactComments,\r\n contactForAppointment: vm.serviceOrder.customerContactHistory.contactForAppointment,\r\n contactForAppointmentComments: vm.serviceOrder.customerContactHistory.contactForAppointmentComments,\r\n },\r\n woorSR: vm.serviceOrder.woorSR,\r\n soType: vm.serviceOrder.soType,\r\n };\r\n\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ];\r\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\r\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\r\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(vm.serviceOrder.serviceAddress.meterNumber, kwMeterId);\r\n } else {\r\n vm.form.serviceAddress.meterNumber = vm.serviceOrder.serviceAddress.meterNumber;\r\n }\r\n }\r\n \r\n if (vm.serviceOrder.woorSR === assetService.woorSRType.SERVICE_REQUEST) {\r\n const serviceOrderBalance = genericHelperService.formatCurrency(\r\n vm.serviceOrder.serviceOrderBalance.value,\r\n );\r\n\r\n vm.form.serviceOrderBalance.value = serviceOrderBalance;\r\n\r\n const programEntitlementBalance = genericHelperService.formatCurrency(\r\n vm.serviceOrder.programEntitlementBalance.value,\r\n );\r\n\r\n vm.form.programEntitlementBalance = programEntitlementBalance;\r\n }\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n setModels();\r\n const users = sessionStorageService.get(assetService.storageKeys.widgetsData.users);\r\n const allTechnicians = _.filter(users, user => (\r\n user.status.toUpperCase() !== assetService.strings.PENDING_ACTIVE\r\n ));\r\n\r\n _allTechnicians = _.map(allTechnicians, item => ({\r\n name: `${item.name}-${item.badgeNumber}`,\r\n badgeNumber: item.badgeNumber,\r\n cdpId: item.cdpId,\r\n effectiveDate: item.effectiveDate,\r\n phone: item.phone,\r\n role: item.role,\r\n status: item.status,\r\n }));\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.serviceOrder.soStatus === vm.statusSentToContractor.code) {\r\n vm.disableAll = true;\r\n }\r\n\r\n if (vm.currentOrderStatus.id >= assetService.status.READY_FOR_INVOICE.id) {\r\n vm.disableAll = true;\r\n }\r\n\r\n const currentUserRole = currentUserService.getUserRole();\r\n if (vm.disableAll || currentUserRole === roleTechnician) {\r\n vm.disabled = true;\r\n }\r\n\r\n setDropdowns();\r\n }\r\n\r\n function removeSelectedProp(list, propToDelete, currentPropValue) {\r\n const newList = angular.copy(list);\r\n const currentSelectedIndex = _.findIndex(\r\n newList,\r\n props => props[propToDelete] === currentPropValue,\r\n );\r\n\r\n if (currentSelectedIndex !== assetService.generalKeys.indexNotFound) {\r\n delete newList[currentSelectedIndex][propToDelete];\r\n\r\n return newList;\r\n }\r\n\r\n return newList;\r\n }\r\n\r\n function saveChanges() {/*empty function*/}\r\n\r\n function telFormat(telephoneNo) {\r\n return genericHelperService.telFormat(telephoneNo);\r\n }\r\n\r\n const init = function () {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller('FPTechnicalPricingController', FPTechnicalPricingController);\r\nFPTechnicalPricingController.$inject = [\r\n 'FPAssetService',\r\n 'FPServiceOrdersFactory',\r\n];\r\n\r\nfunction FPTechnicalPricingController(assetService, serviceOrdersFactory) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.loadingSpinner = true;\r\n vm.serviceOrder = null;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\r\n vm.typeRemoval = assetService.soType.REMOVAL;\r\n vm.typeInspectionReplacement = assetService.soType.INSPECTION_REPLACEMENT;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n let init = function() {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller(\r\n 'FPCompanyAlertsServiceRequestController',\r\n FPCompanyAlertsServiceRequestController,\r\n);\r\nFPCompanyAlertsServiceRequestController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPAlertsService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction FPCompanyAlertsServiceRequestController(\r\n $scope,\r\n assetService,\r\n alertsService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbService,\r\n sessionStorageService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _acceptedOrders = [];\r\n const _ordersUrl =\r\n window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\r\n const _woorSRTypeWorkOrder = assetService.woorSRType.SERVICE_REQUEST;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.data = {\r\n newOrders: null,\r\n contactOrders: null,\r\n scheduleOrders: null,\r\n invoiceOrders: null,\r\n completeOrders: null,\r\n };\r\n vm.serviceOrders = [];\r\n vm.companyServiceRequestAlertsReady = false;\r\n vm.ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.goToNewOrders = goToNewOrders;\r\n vm.goToContact = goToContact;\r\n vm.goToInvoice = goToInvoice;\r\n vm.goToSchedule = goToSchedule;\r\n vm.goToComplete = goToComplete;\r\n vm.goToViewAll = goToViewAll;\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.acceptedOrdersLoaded, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function goToNewOrders() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isNewServiceRequestOrder',\r\n text: 'New Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToContact() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isContactServiceRequestOrder',\r\n text: 'Contact Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToInvoice() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isInvoiceServiceRequestOrder',\r\n text: 'Invoice Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToSchedule() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isScheduleServiceRequestOrder',\r\n text: 'Schedule Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToComplete() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isCompleteServiceRequestOrder',\r\n text: 'Complete Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToViewAll() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isNewServiceRequestOrder',\r\n text: 'New Service Request Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isContactServiceRequestOrder',\r\n text: 'Contact Service Request Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isInvoiceServiceRequestOrder',\r\n text: 'Invoice Service Request Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isScheduleServiceRequestOrder',\r\n text: 'Schedule Service Request Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isCompleteServiceRequestOrder',\r\n text: 'Complete Service Request Order',\r\n selected: false,\r\n },\r\n ]);\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function setSLAFilter(slaFilter) {\r\n return {\r\n selectedAssignedTechnicianFilter: [],\r\n selectedContactForAppointment: [],\r\n selectedCustomersFilter: [],\r\n selectedInvoiceNumbersFilter: [],\r\n selectedInvoiceStatusFilter: [],\r\n selectedJurisdictionFilter: [],\r\n selectedPostalCodesFilter: [],\r\n selectedProgramsFilter: [],\r\n selectedRushOrderFilter: [],\r\n selectedStatusesFilter: [],\r\n selectedSLAFilter: slaFilter,\r\n selectedTypesFilter: [],\r\n };\r\n }\r\n\r\n function setModels() {\r\n vm.data.contactOrders = alertsService.calculateContactOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.scheduleOrders = alertsService.calculateScheduleOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.invoiceOrders = alertsService.calculateInvoiceOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.completeOrders = alertsService.calculateCompleteOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.newOrders = alertsService.calculateNewOrders(vm.serviceOrders);\r\n\r\n broadcastService.serviceRequestAlertsLoaded();\r\n vm.companyServiceRequestAlertsReady = true;\r\n }\r\n\r\n function load() {\r\n const promises = [getAcceptedOrders()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.serviceOrders = _acceptedOrders;\r\n\r\n setModels();\r\n });\r\n\r\n function getAcceptedOrders() {\r\n return indexedDbService.getAcceptedOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _acceptedOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n const init = function() {/* empty function*/};\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPCompanyAlertsWorkOrderController',\r\n FPCompanyAlertsWorkOrderController,\r\n);\r\nFPCompanyAlertsWorkOrderController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPAlertsService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n 'sessionStorageService',\r\n];\r\n\r\nfunction FPCompanyAlertsWorkOrderController(\r\n $scope,\r\n assetService,\r\n alertsService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbService,\r\n sessionStorageService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _acceptedOrders = [];\r\n const _ordersUrl =\r\n window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\r\n const _woorSRTypeWorkOrder = assetService.woorSRType.WORK_ORDER;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.data = {\r\n newOrders: null,\r\n contactOrders: null,\r\n scheduleOrders: null,\r\n invoiceOrders: null,\r\n completeOrders: null,\r\n };\r\n vm.serviceOrders = [];\r\n vm.companyWorkOrderAlertsReady = false;\r\n vm.ordersUrl = window.location.origin + assetService.sitePagesUrlPaths.ORDERS;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n vm.goToNewOrders = goToNewOrders;\r\n vm.goToContact = goToContact;\r\n vm.goToInvoice = goToInvoice;\r\n vm.goToSchedule = goToSchedule;\r\n vm.goToComplete = goToComplete;\r\n vm.goToViewAll = goToViewAll;\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.acceptedOrdersLoaded, () => {\r\n load();\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function goToNewOrders() {\r\n const selectedFilters = setSLAFilter([\r\n { value: 'isNewWorkOrder', text: 'New Work Order', selected: false },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToContact() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isContactWorkOrder',\r\n text: 'Contact Work Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToInvoice() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isInvoiceWorkOrder',\r\n text: 'Invoice Work Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToSchedule() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isScheduleWorkOrder',\r\n text: 'Schedule Work Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToComplete() {\r\n const selectedFilters = setSLAFilter([\r\n {\r\n value: 'isCompleteWorkOrder',\r\n text: 'Complete Work Order',\r\n selected: false,\r\n },\r\n ]);\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function goToViewAll() {\r\n const selectedFilters = setSLAFilter([\r\n { value: 'isNewWorkOrder', text: 'New Work Order', selected: false },\r\n {\r\n value: 'isContactWorkOrder',\r\n text: 'Contact Work Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isInvoiceWorkOrder',\r\n text: 'Invoice Work Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isScheduleWorkOrder',\r\n text: 'Schedule Work Order',\r\n selected: false,\r\n },\r\n {\r\n value: 'isCompleteWorkOrder',\r\n text: 'Complete Work Order',\r\n selected: false,\r\n },\r\n ]);\r\n\r\n sessionStorageService.set(\r\n assetService.storageKeys.selectedFilters,\r\n selectedFilters,\r\n );\r\n window.location.href = _ordersUrl;\r\n }\r\n\r\n function setSLAFilter(slaFilter) {\r\n return {\r\n selectedAssignedTechnicianFilter: [],\r\n selectedContactForAppointment: [],\r\n selectedCustomersFilter: [],\r\n selectedInvoiceNumbersFilter: [],\r\n selectedInvoiceStatusFilter: [],\r\n selectedJurisdictionFilter: [],\r\n selectedPostalCodesFilter: [],\r\n selectedProgramsFilter: [],\r\n selectedRushOrderFilter: [],\r\n selectedStatusesFilter: [],\r\n selectedSLAFilter: slaFilter,\r\n selectedTypesFilter: [],\r\n };\r\n }\r\n\r\n function setModels() {\r\n vm.data.contactOrders = alertsService.calculateContactOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.scheduleOrders = alertsService.calculateScheduleOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.invoiceOrders = alertsService.calculateInvoiceOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.completeOrders = alertsService.calculateCompleteOrders(\r\n vm.serviceOrders,\r\n );\r\n vm.data.newOrders = alertsService.calculateNewOrders(vm.serviceOrders);\r\n\r\n broadcastService.workOrderAlertsLoaded();\r\n vm.companyWorkOrderAlertsReady = true;\r\n }\r\n\r\n function load() {\r\n const promises = [getAcceptedOrders()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n vm.serviceOrders = _acceptedOrders;\r\n\r\n setModels();\r\n });\r\n\r\n function getAcceptedOrders() {\r\n return indexedDbService.getAcceptedOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _acceptedOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n const init = function() {/* empty function*/};\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPAnalyticsServiceRequestController',\r\n FPAnalyticsServiceRequestController,\r\n);\r\nFPAnalyticsServiceRequestController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n];\r\n\r\nfunction FPAnalyticsServiceRequestController(\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _acceptedOrders = [];\r\n let _invoiceOrders = [];\r\n const _woorSRTypeWorkOrder = assetService.woorSRType.SERVICE_REQUEST;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.chartOptions = {\r\n responsive: true,\r\n legend: {\r\n position: 'bottom',\r\n },\r\n };\r\n vm.data = [];\r\n vm.labels = [\r\n 'ACCEPTED',\r\n 'SCHEDULED',\r\n 'DISPATCHED',\r\n 'COMPLETED',\r\n 'CONTRACTOR_REVIEWED',\r\n 'READY_FOR_INVOICE',\r\n 'INVOICE_READY_FOR_REVIEW',\r\n 'APPROVED_FOR_INVOICING',\r\n 'INVOICE_SUBMITTING_FOR_PAYMENT',\r\n 'INVOICE_APPROVED',\r\n ];\r\n vm.invoiceOrdersLoaded = false;\r\n vm.acceptedOrdersLoaded = false;\r\n vm.serviceOrders = [];\r\n vm.analyticsServiceRequestReady = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.acceptedOrdersLoaded, () => {\r\n vm.acceptedOrdersLoaded = true;\r\n if (vm.invoiceOrdersLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.invoiceOrdersLoaded, () => {\r\n vm.invoiceOrdersLoaded = true;\r\n if (vm.acceptedOrdersLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function setModels() {\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.ACCEPTED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.SCHEDULED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.DISPATCHED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.COMPLETED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.CONTRACTOR_REVIEWED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.READY_FOR_INVOICE.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.INVOICE_READY_FOR_REVIEW.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.APPROVED_FOR_INVOICING.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.INVOICE_APPROVED.code,\r\n ),\r\n );\r\n\r\n broadcastService.serviceRequestAnalyticsLoaded();\r\n vm.analyticsServiceRequestReady = true;\r\n }\r\n\r\n const sumBy = (arr, iteratee) => {\r\n const func =\r\n typeof iteratee === 'function' ? iteratee : item => item[iteratee];\r\n\r\n return arr.reduce((acc, item) => acc + func(item), 0);\r\n };\r\n\r\n function load() {\r\n const promises = [getAcceptedOrders(), getInvoiceOrders()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n const arrs = [_acceptedOrders, _invoiceOrders];\r\n vm.serviceOrders = _.spread(_.union)(arrs);\r\n setModels();\r\n });\r\n\r\n function getAcceptedOrders() {\r\n return indexedDbService.getAcceptedOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _acceptedOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n }\r\n });\r\n }\r\n\r\n function getInvoiceOrders() {\r\n return indexedDbService.getInvoiceOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _invoiceOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n const init = function() { /* empty function */};\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPAnalyticsWorkOrderController',\r\n FPAnalyticsWorkOrderController,\r\n);\r\nFPAnalyticsWorkOrderController.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPBroadcastService',\r\n 'commonService',\r\n 'FPDataModelsDTOService',\r\n 'FPIndexedDbDataService',\r\n];\r\n\r\nfunction FPAnalyticsWorkOrderController(\r\n $scope,\r\n assetService,\r\n broadcastService,\r\n commonService,\r\n dtoService,\r\n indexedDbService,\r\n) {\r\n /**\r\n * Scope Vars\r\n */\r\n const vm = this;\r\n let _acceptedOrders = [];\r\n let _invoiceOrders = [];\r\n const _woorSRTypeWorkOrder = assetService.woorSRType.WORK_ORDER;\r\n\r\n /**\r\n * Global Vars\r\n */\r\n vm.chartOptions = {\r\n responsive: true,\r\n legend: {\r\n position: 'bottom',\r\n },\r\n };\r\n vm.data = [];\r\n vm.labels = [\r\n 'ACCEPTED',\r\n 'SCHEDULED',\r\n 'DISPATCHED',\r\n 'COMPLETED',\r\n 'CONTRACTOR_REVIEWED',\r\n 'READY_FOR_INVOICE',\r\n 'INVOICE_READY_FOR_REVIEW',\r\n 'APPROVED_FOR_INVOICING',\r\n 'INVOICE_SUBMITTING_FOR_PAYMENT',\r\n 'INVOICE_APPROVED',\r\n ];\r\n vm.invoiceOrdersLoaded = false;\r\n vm.acceptedOrdersLoaded = false;\r\n vm.serviceOrders = [];\r\n vm.analyticsWorkOrdersReady = false;\r\n\r\n /**\r\n * Function Declarations\r\n */\r\n\r\n /**\r\n * Watchers\r\n */\r\n $scope.$on(assetService.events.acceptedOrdersLoaded, () => {\r\n vm.acceptedOrdersLoaded = true;\r\n if (vm.invoiceOrdersLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n $scope.$on(assetService.events.invoiceOrdersLoaded, () => {\r\n vm.invoiceOrdersLoaded = true;\r\n if (vm.acceptedOrdersLoaded) {\r\n load();\r\n }\r\n });\r\n\r\n /**\r\n * Function Definitions\r\n */\r\n function setModels() {\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.ACCEPTED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.SCHEDULED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.DISPATCHED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.COMPLETED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.CONTRACTOR_REVIEWED.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.READY_FOR_INVOICE.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.INVOICE_READY_FOR_REVIEW.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.APPROVED_FOR_INVOICING.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus ===\r\n assetService.status.INVOICE_SUBMITTING_FOR_PAYMENT.code,\r\n ),\r\n );\r\n vm.data.push(\r\n sumBy(\r\n vm.serviceOrders,\r\n serviceOrder =>\r\n serviceOrder.soStatus === assetService.status.INVOICE_APPROVED.code,\r\n ),\r\n );\r\n\r\n broadcastService.workOrderAnalyticsLoaded();\r\n vm.analyticsWorkOrdersReady = true;\r\n }\r\n\r\n const sumBy = (arr, iteratee) => {\r\n const func =\r\n typeof iteratee === 'function' ? iteratee : item => item[iteratee];\r\n\r\n return arr.reduce((acc, item) => acc + func(item), 0);\r\n };\r\n\r\n function load() {\r\n const promises = [getAcceptedOrders(), getInvoiceOrders()];\r\n\r\n commonService.executePromises(promises).then(() => {\r\n const arrs = [_acceptedOrders, _invoiceOrders];\r\n vm.serviceOrders = _.spread(_.union)(arrs);\r\n\r\n setModels();\r\n });\r\n\r\n function getAcceptedOrders() {\r\n return indexedDbService.getAcceptedOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _acceptedOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.acceptedOrders,\r\n );\r\n }\r\n });\r\n }\r\n\r\n function getInvoiceOrders() {\r\n return indexedDbService.getInvoiceOrders().then(result => {\r\n if (result && result.length > 0) {\r\n const orders = result.filter(\r\n serviceOrder =>\r\n serviceOrder.woorSR.toUpperCase() === _woorSRTypeWorkOrder,\r\n );\r\n _invoiceOrders = dtoService.transformServiceOrders(\r\n orders,\r\n assetService.storageKeys.toggleFlags.invoiceOrders,\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n const init = function() {/* empty function */};\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPTechnicalPricingInspectionReplacementProgram',\r\n FPTechnicalPricingInspectionReplacementProgram,\r\n);\r\nFPTechnicalPricingInspectionReplacementProgram.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPTechnicalPricingInspectionReplacementProgram(\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n FPModalService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const kwDeviceName = assetService.strings.DEVICE_NAME;\r\n const kwMeterId = assetService.strings.METERID;\r\n const kwText = assetService.strings.TEXT;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.currentOrderStatus = {};\r\n vm.disableAll = false;\r\n vm.form = {\r\n serviceOrderId: null,\r\n customer: {\r\n name: null,\r\n primaryPhone: null,\r\n alternatePhone: null,\r\n },\r\n equipmentDetails: {\r\n replacementNeeded: null,\r\n replacementDeviceName: null,\r\n replacementDeviceSerialNo: null,\r\n deviceName: null,\r\n deviceSerialNumber: null,\r\n deviceOperational: null,\r\n },\r\n descriptionOfWorkQtyParts: null,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: 0,\r\n },\r\n laborCost: {\r\n value: 0,\r\n },\r\n tripFee: {\r\n value: 0,\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrder = null;\r\n vm.statusCompleted = assetService.status.COMPLETED;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n vm.totalOrderCost = totalOrderCost;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, () => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function cancelWorkOrder() {\r\n // logic\r\n FPModalService.cancelModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.currentOrderStatus.id >= 9) {\r\n vm.disableAll = true;\r\n }\r\n\r\n setModels();\r\n setDropdowns();\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setDropdowns() {\r\n vm.dropdowns = {\r\n equipmentOptions: {\r\n options: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n vm.serviceOrder.equipmentOptions.options,\r\n kwDeviceName,\r\n kwDeviceName,\r\n ),\r\n kwText,\r\n vm.serviceOrder.equipmentDetails.replacementDeviceName,\r\n ),\r\n },\r\n };\r\n\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n customer: {\r\n name: vm.serviceOrder.customer.name,\r\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\r\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\r\n },\r\n equipmentDetails: {\r\n replacementNeeded: vm.serviceOrder.equipmentDetails.replacementNeeded,\r\n replacementDeviceName:\r\n vm.serviceOrder.equipmentDetails.replacementDeviceName,\r\n replacementDeviceSerialNo:\r\n vm.serviceOrder.equipmentDetails.replacementDeviceSerialNo,\r\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\r\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\r\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational,\r\n },\r\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.materialCost.value,\r\n ),\r\n },\r\n laborCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.laborCost.value,\r\n ),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.tripFee.value,\r\n ),\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ];\r\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n );\r\n } else {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n }\r\n }\r\n }\r\n\r\n function totalOrderCost(tripFee, laborCost, materialCost) {\r\n return (\r\n parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost)\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller(\r\n 'FPTechnicalPricingInstallationProgram',\r\n FPTechnicalPricingInstallationProgram,\r\n);\r\nFPTechnicalPricingInstallationProgram.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPTechnicalPricingInstallationProgram(\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n FPModalService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const kwDeviceCode = assetService.strings.DEVICE_CODE;\r\n const kwDeviceName = assetService.strings.DEVICE_NAME;\r\n const kwMeterId = assetService.strings.METERID;\r\n const kwText = assetService.strings.TEXT;\r\n const kwValue = assetService.strings.VALUE;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.currentOrderStatus = new Object();\r\n vm.disableAll = false;\r\n vm.form = {\r\n serviceOrderId: null,\r\n customer: {\r\n name: null,\r\n primaryPhone: null,\r\n alternatePhone: null,\r\n },\r\n equipmentDetails: {\r\n deviceName: null,\r\n deviceSerialNumber: null,\r\n },\r\n groundingDetails: {\r\n singlePointGrounding: null,\r\n groundingRepairsNeeded: null,\r\n },\r\n descriptionOfWorkQtyParts: null,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: 0,\r\n },\r\n laborCost: {\r\n value: 0,\r\n },\r\n tripFee: {\r\n value: 0,\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrder = null;\r\n vm.statusCompleted = assetService.status.COMPLETED;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n vm.totalOrderCost = totalOrderCost;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function cancelWorkOrder() {\r\n // logic\r\n FPModalService.cancelModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.currentOrderStatus.id >= 9) {\r\n vm.disableAll = true;\r\n }\r\n\r\n setModels();\r\n setDropdowns();\r\n }\r\n\r\n function onChange() {\r\n if (vm.form.equipmentDetails.deviceSerialNumber == undefined) {\r\n vm.form.equipmentDetails.deviceSerialNumber = '';\r\n }\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setDropdowns() {\r\n vm.dropdowns = {\r\n equipmentOptions: {\r\n options: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n vm.serviceOrder.equipmentOptions.options,\r\n kwDeviceCode,\r\n kwDeviceName,\r\n ),\r\n kwValue,\r\n vm.serviceOrder.equipmentDetails.deviceCode,\r\n ),\r\n },\r\n singlePointGroundingOptions: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n assetService.boolOptions,\r\n kwValue,\r\n kwText,\r\n ),\r\n kwValue,\r\n vm.serviceOrder.groundingDetails.singlePointGrounding,\r\n ),\r\n groundingRepairsNeededOptions: genericHelperService.setSelectedProp(\r\n genericHelperService.createDropdownList(\r\n assetService.boolOptions,\r\n kwValue,\r\n kwText,\r\n ),\r\n kwValue,\r\n vm.serviceOrder.groundingDetails.groundingRepairsNeeded,\r\n ),\r\n };\r\n\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n customer: {\r\n name: vm.serviceOrder.customer.name,\r\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\r\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\r\n },\r\n equipmentDetails: {\r\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\r\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\r\n },\r\n groundingDetails: {\r\n singlePointGrounding:\r\n vm.serviceOrder.groundingDetails.singlePointGrounding,\r\n groundingRepairsNeeded:\r\n vm.serviceOrder.groundingDetails.groundingRepairsNeeded,\r\n },\r\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.materialCost.value,\r\n ),\r\n },\r\n laborCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.laborCost.value,\r\n ),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.tripFee.value,\r\n ),\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ];\r\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: genericHelperService.convertArrayToString(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n ),\r\n },\r\n ];\r\n } else {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n }\r\n }\r\n }\r\n\r\n function totalOrderCost(tripFee, laborCost, materialCost) {\r\n return (\r\n parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost)\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n\r\n init();\r\n}\r\n","app.controller(\r\n 'FPTechnicalPricingRemovalProgram',\r\n FPTechnicalPricingRemovalProgram,\r\n);\r\nFPTechnicalPricingRemovalProgram.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPTechnicalPricingRemovalProgram(\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n FPModalService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const kwMeterId = assetService.strings.METERID;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.currentOrderStatus = new Object();\r\n vm.disableAll = false;\r\n vm.form = {\r\n serviceOrderId: null,\r\n customer: {\r\n name: null,\r\n primaryPhone: null,\r\n alternatePhone: null,\r\n },\r\n equipmentDetails: {\r\n deviceName: null,\r\n deviceSerialNumber: null,\r\n deviceOperational: null,\r\n },\r\n descriptionOfWorkQtyParts: null,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: 0,\r\n },\r\n laborCost: {\r\n value: 0,\r\n },\r\n tripFee: {\r\n value: 0,\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrder = null;\r\n vm.statusCompleted = assetService.status.COMPLETED;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n vm.totalOrderCost = totalOrderCost;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function cancelWorkOrder() {\r\n // logic\r\n FPModalService.cancelModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.currentOrderStatus.id >= 9) {\r\n vm.disableAll = true;\r\n }\r\n\r\n setModels();\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n customer: {\r\n name: vm.serviceOrder.customer.name,\r\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\r\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\r\n },\r\n equipmentDetails: {\r\n deviceName: vm.serviceOrder.equipmentDetails.deviceName,\r\n deviceSerialNumber: vm.serviceOrder.equipmentDetails.deviceSerialNumber,\r\n deviceOperational: vm.serviceOrder.equipmentDetails.deviceOperational,\r\n },\r\n descriptionOfWorkQtyParts: vm.serviceOrder.descriptionOfWorkQtyParts,\r\n orderCostTimeDetails: {\r\n materialCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.materialCost.value,\r\n ),\r\n },\r\n laborCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.laborCost.value,\r\n ),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.tripFee.value,\r\n ),\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n };\r\n\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ];\r\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n );\r\n } else {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n }\r\n }\r\n\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function totalOrderCost(tripFee, laborCost, materialCost) {\r\n return (\r\n parseFloat(tripFee) + parseFloat(laborCost) + parseFloat(materialCost)\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller(\r\n 'FPTechnicalPricingResolutionDetails',\r\n FPTechnicalPricingResolutionDetails,\r\n);\r\nFPTechnicalPricingResolutionDetails.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'commonService',\r\n 'FPDateHelperService',\r\n 'FPGenericHelperService',\r\n 'FPIndexedDbDataService',\r\n 'FPServiceOrdersFactory',\r\n];\r\n\r\nfunction FPTechnicalPricingResolutionDetails(\r\n $scope,\r\n assetService,\r\n commonService,\r\n dateHelperService,\r\n genericHelperService,\r\n indexedDbDataService,\r\n serviceOrdersFactory,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const _kwCode = assetService.strings.CODE;\r\n const _kwName = assetService.strings.NAME;\r\n const _kwValue = assetService.strings.VALUE;\r\n let _repairTypeOptions = [];\r\n let _resolutionTypeOptions = [];\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n vm.currentOrderStatus = new Object();\r\n vm.disableAll = false;\r\n vm.regexp_email = /^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/;\r\n vm.repairTypeOptions = [];\r\n vm.resolutionTypeOptions = [];\r\n vm.ruleValidationsMessages = assetService.ruleValidationsMessages;\r\n vm.typeServiceRequest = assetService.woorSRType.SERVICE_REQUEST;\r\n vm.serviceOrder = null;\r\n vm.serviceOrderLoaded = false;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n vm.currentTodayDate = undefined;\r\n vm.pastDate = undefined;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.addDays = addDays;\r\n vm.subDays = subDays;\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function addDays(date, days) {\r\n return dateHelperService.addDays(date, days);\r\n }\r\n\r\n function subDays(date, days) {\r\n const newDate = new Date(date);\r\n newDate.setDate(newDate.getDate() - days);\r\n return new Date(newDate);\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n setModels();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.currentOrderStatus.id < 5 || vm.currentOrderStatus.id >= 9) {\r\n vm.disableAll = true;\r\n }\r\n\r\n setDropdowns();\r\n vm.currentTodayDate = moment(new Date()).format('MM/DD/YYYY');\r\n vm.pastDate = moment(subDays(vm.currentTodayDate, 90)).format('MM/DD/YYYY');\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setDropdowns() {\r\n const promises = [];\r\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\r\n promises.push(\r\n indexedDbDataService\r\n .getSRRepairTypesByProduct(vm.serviceOrder.program)\r\n .then(data => {\r\n _repairTypeOptions = data;\r\n }),\r\n );\r\n\r\n promises.push(\r\n indexedDbDataService\r\n .getSRResolutionTypesByProduct(vm.serviceOrder.program)\r\n .then(data => {\r\n _resolutionTypeOptions = data;\r\n }),\r\n );\r\n } else {\r\n promises.push(\r\n indexedDbDataService\r\n .getWOResolutionTypesByWOType(vm.serviceOrder.soType)\r\n .then(data => {\r\n _resolutionTypeOptions = data;\r\n }),\r\n );\r\n }\r\n\r\n commonService.executePromises(promises).then(data => {\r\n const resolutionTypeList = genericHelperService.createDropdownList(\r\n _resolutionTypeOptions,\r\n _kwCode,\r\n _kwName,\r\n );\r\n vm.dropdowns = {\r\n resolutionTypeOptions: genericHelperService.setSelectedProp(\r\n resolutionTypeList,\r\n _kwValue,\r\n vm.form.resolutionDetails.resolutionType.code,\r\n ),\r\n surveyReceivedByCustomer: genericHelperService.setSelectedProp(\r\n assetService.boolOptions,\r\n _kwValue,\r\n vm.form.customerContactHistory.surveyReceivedByCustomer,\r\n ),\r\n };\r\n\r\n if (vm.serviceOrder.woorSR === vm.typeServiceRequest) {\r\n const repairTypeList = genericHelperService.createDropdownList(\r\n _repairTypeOptions,\r\n _kwCode,\r\n _kwName,\r\n );\r\n vm.dropdowns.repairTypeOptions = genericHelperService.setSelectedProp(\r\n repairTypeList,\r\n _kwValue,\r\n vm.form.repairType.code,\r\n );\r\n }\r\n\r\n vm.serviceOrderLoaded = true;\r\n });\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n customerContactPreferences: {\r\n preferredEmailAddress:\r\n vm.serviceOrder.customerContactPreferences.preferredEmailAddress,\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: vm.serviceOrder.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDate: vm.serviceOrder.resolutionDetails.resolutionDate,\r\n resolutionDateDukeCalendar: !vm.serviceOrder.resolutionDetails\r\n .resolutionDateDukeCalendar\r\n ? dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.resolutionDetails.resolutionDate,\r\n )\r\n : vm.serviceOrder.resolutionDetails.resolutionDateDukeCalendar,\r\n },\r\n repairType: {\r\n code: vm.serviceOrder.repairType.code,\r\n },\r\n customerContactHistory: {\r\n surveyReceivedByCustomer:\r\n vm.serviceOrder.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n createdDateDukeCalendar: dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.createdDate,\r\n ),\r\n scheduledStartDateDukeCalendar: dateHelperService.getDateFromFullDate(\r\n vm.serviceOrder.scheduledStartDate,\r\n ),\r\n woorSR: vm.serviceOrder.woorSR,\r\n soType: vm.serviceOrder.soType,\r\n };\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.controller('FPTechnicalPricingECNProgram', FPTechnicalPricingECNProgram);\r\nFPTechnicalPricingECNProgram.$inject = [\r\n '$scope',\r\n 'FPAssetService',\r\n 'FPGenericHelperService',\r\n 'FPServiceOrdersFactory',\r\n 'FPModalService',\r\n];\r\n\r\nfunction FPTechnicalPricingECNProgram(\r\n $scope,\r\n assetService,\r\n genericHelperService,\r\n serviceOrdersFactory,\r\n FPModalService,\r\n) {\r\n /* --------------Scope Vars-----------------------*/\r\n const vm = this;\r\n const kwMeterId = assetService.strings.METERID;\r\n\r\n /* --------------Gloabl Vars-----------------------*/\r\n\r\n vm.coveredRepairsDescription = null;\r\n vm.currentOrderStatus = new Object();\r\n vm.disableAll = false;\r\n vm.form = {\r\n serviceOrderId: null,\r\n customer: {\r\n name: null,\r\n primaryPhone: null,\r\n alternatePhone: null,\r\n },\r\n serviceOrderBalance: {\r\n value: 0,\r\n },\r\n programEntitlementBalance: {\r\n value: 0,\r\n },\r\n descriptionOfWorkQtyPartsCovered: null,\r\n descriptionOfWorkQtyPartsNonCovered: null,\r\n orderCostTimeDetails: {\r\n regularLaborHours: 0,\r\n regularLaborCost: {\r\n value: 0,\r\n },\r\n entitlementLaborHours: 0,\r\n entitlementLaborCost: {\r\n value: 0,\r\n },\r\n laborCostNotCovered: {\r\n value: 0,\r\n },\r\n partsCost: {\r\n value: 0,\r\n },\r\n partsCostNotCovered: {\r\n value: 0,\r\n },\r\n tripFee: {\r\n value: 0,\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n soType: null,\r\n };\r\n vm.serviceOrderLoaded = false;\r\n vm.serviceOrder = null;\r\n vm.statusCompleted = assetService.status.COMPLETED;\r\n vm.statusSentToContractor = assetService.status.SENT_TO_CONTRACTOR;\r\n vm.typeEntitlement = assetService.strings.ENTITLEMENT;\r\n vm.typeInstallation = assetService.soType.INSTALLATION;\r\n vm.validationPatterns = assetService.validationPatterns;\r\n\r\n /* --------------Function Declarations-----------------------*/\r\n vm.cancelWorkOrder = cancelWorkOrder;\r\n vm.totalLaborCost = totalLaborCost;\r\n vm.totalCost = totalCost;\r\n vm.totalUncoveredCost = totalUncoveredCost;\r\n\r\n /* --------------Broadcast Watchers-----------------------*/\r\n $scope.$on(assetService.events.updateServiceOrder, (event, ars) => {\r\n if (vm.serviceOrderLoaded) {\r\n const sessionServiceOrder = serviceOrdersFactory._getSelectedOrder();\r\n vm.serviceOrder = _.merge({}, vm.serviceOrder, sessionServiceOrder);\r\n }\r\n });\r\n\r\n $scope.$watch(\r\n 'vm.form',\r\n (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n onChange();\r\n }\r\n },\r\n true,\r\n );\r\n\r\n /* --------------Function Definitions-----------------------*/\r\n function cancelWorkOrder() {\r\n FPModalService.cancelModal();\r\n }\r\n\r\n function load() {\r\n vm.serviceOrder = serviceOrdersFactory._getSelectedOrder();\r\n\r\n vm.currentOrderStatus = genericHelperService.getStatusObject(\r\n vm.serviceOrder,\r\n );\r\n\r\n if (vm.currentOrderStatus.id >= 9) {\r\n vm.disableAll = true;\r\n }\r\n\r\n setModels();\r\n\r\n vm.serviceOrderLoaded = true;\r\n }\r\n\r\n function onChange() {\r\n serviceOrdersFactory.updateServiceOrder(vm.form);\r\n }\r\n\r\n function setModels() {\r\n vm.form = {\r\n serviceOrderId: vm.serviceOrder.serviceOrderId,\r\n customer: {\r\n name: vm.serviceOrder.customer.name,\r\n primaryPhone: vm.serviceOrder.customer.primaryPhone,\r\n alternatePhone: vm.serviceOrder.customer.alternatePhone,\r\n },\r\n serviceOrderBalance: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.serviceOrderBalance.value,\r\n ),\r\n },\r\n programEntitlementBalance: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.programEntitlementBalance.value,\r\n ),\r\n },\r\n descriptionOfWorkQtyPartsCovered:\r\n vm.serviceOrder.descriptionOfWorkQtyPartsCovered,\r\n descriptionOfWorkQtyPartsNonCovered:\r\n vm.serviceOrder.descriptionOfWorkQtyPartsNonCovered,\r\n orderCostTimeDetails: {\r\n regularLaborHours: !vm.serviceOrder.orderCostTimeDetails\r\n .regularLaborHours\r\n ? 0\r\n : vm.serviceOrder.orderCostTimeDetails.regularLaborHours,\r\n regularLaborCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.regularLaborCost.value,\r\n ),\r\n },\r\n entitlementLaborHours: !vm.serviceOrder.orderCostTimeDetails\r\n .entitlementLaborHours\r\n ? 0\r\n : vm.serviceOrder.orderCostTimeDetails.entitlementLaborHours,\r\n entitlementLaborCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.entitlementLaborCost.value,\r\n ),\r\n },\r\n laborCostNotCovered: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.laborCostNotCovered.value,\r\n ),\r\n },\r\n partsCost: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.partsCost.value,\r\n ),\r\n },\r\n partsCostNotCovered: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.partsCostNotCovered.value,\r\n ),\r\n },\r\n tripFee: {\r\n value: genericHelperService.formatCurrency(\r\n vm.serviceOrder.orderCostTimeDetails.tripFee.value,\r\n ),\r\n },\r\n },\r\n serviceAddress: {\r\n meterNumber: [\r\n {\r\n meterId: null,\r\n },\r\n ],\r\n },\r\n soType: vm.serviceOrder.soType,\r\n };\r\n\r\n if (vm.serviceOrder.serviceAddress.hasOwnProperty('meterNumber')) {\r\n if (vm.serviceOrder.soType === vm.typeInstallation.code) {\r\n vm.form.serviceAddress.meterNumber = [\r\n {\r\n meterId: vm.serviceOrder.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ];\r\n } else if (Array.isArray(vm.serviceOrder.serviceAddress.meterNumber)) {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n vm.form.serviceAddress.meter = genericHelperService.convertArrayToString(\r\n vm.serviceOrder.serviceAddress.meterNumber,\r\n kwMeterId,\r\n );\r\n } else {\r\n vm.form.serviceAddress.meterNumber =\r\n vm.serviceOrder.serviceAddress.meterNumber;\r\n }\r\n }\r\n }\r\n\r\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\r\n return (\r\n parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) +\r\n parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost)\r\n );\r\n }\r\n\r\n function totalCost(\r\n regularLaborCost,\r\n entitlementLaborCost,\r\n partsCost,\r\n tripFee,\r\n ) {\r\n return (\r\n parseFloat(!regularLaborCost ? '0.0' : regularLaborCost) +\r\n parseFloat(!entitlementLaborCost ? '0.0' : entitlementLaborCost) +\r\n parseFloat(!partsCost ? '0.0' : partsCost) +\r\n parseFloat(!tripFee ? '0.0' : tripFee)\r\n );\r\n }\r\n\r\n function totalUncoveredCost(laborCostNotCovered, partsCostNotCovered) {\r\n return (\r\n parseFloat(!laborCostNotCovered ? '0.0' : laborCostNotCovered) +\r\n parseFloat(!partsCostNotCovered ? '0.0' : partsCostNotCovered)\r\n );\r\n }\r\n\r\n /* ---------------Initialization-------------------*/\r\n const init = function() {\r\n load();\r\n };\r\n init();\r\n}\r\n","app.factory('ccEnergyUsageDto', (FPDateHelperService) => {\r\n function transformInvoiceList(data) {\r\n return _.map(data, o => ({\r\n invoiceId: o.InvId,\r\n billDate: o.InvDate,\r\n billingDays: moment(o.BillEndDate).diff(moment(o.BillStartDate), 'days'),\r\n billStartDate: o.BillStartDate,\r\n billEndDate: o.BillEndDate,\r\n }));\r\n }\r\n function transformUsageList(data) {\r\n return _.map(data, o => ({\r\n BillingDate: `/Date(${new Date(o.BillingEndDate).getTime()})/`,\r\n BillingDays: o.BillingDays,\r\n BillingEndDate: o.BillingEndDate,\r\n BillingStartDate: o.BillingStartDate,\r\n Bill_Amt : o.Bill_Amt,\r\n Usage:o.Usage,\r\n Month:o.Month,\r\n Year:o.Year,\r\n BillDate: new Date(o.BillingEndDate).getTime() < new Date(o.BillingDateStr).getTime() ? getValidDate(o.BillingDateStr,o.Month,o.Year) : getValidDate(o.BillingEndDate,o.Month,o.Year)\r\n }));\r\n }\r\n function getValidDate(date,month,year){\r\n var xx = new Date(moment(`${month}/${moment(date).format('DD')}/${year}`, 'MM/DD/YYYY'))\r\n if(xx == \"Invalid Date\") {\r\n xx = moment(`${moment(date).month() + 1}/${moment(date).date()}/${moment(date).year()}`,'MM/DD/YYYY').subtract(1,'days');\r\n return getValidDate(xx,month,year);\r\n }else{\r\n return xx;\r\n }\r\n }\r\n function transformInvoiceDetails(data) {\r\n return _.map(data, o => ({\r\n invoiceId: o.InvId,\r\n billDate: moment(o.InvDate).utc().format('MM/DD/YYYY'),\r\n invDate: o.InvDate,\r\n serviceType: o.SrvType,\r\n otherCharges: o.OthCharges,\r\n taxes: o.Taxes,\r\n billedDays: o.BilledDays,\r\n billStartDate: o.BillStartDate,\r\n billEndDate: o.BillEndDate,\r\n totalKwh: parseInt(o.TotalKwhqt),\r\n totalKwhMetered: parseInt(o.TotKwhqtMetered),\r\n totalCcf: parseInt(o.TotCcfqt),\r\n dailyKwhCost: parseInt(o.DailyKwhCost),\r\n dailyCcfCost: parseInt(o.DailyCcfCost),\r\n averageDailyKwh: parseFloat(o.AvgDailyKwh).toFixed(2),\r\n averageDailyCcf: parseFloat(o.AvgDailyCcf).toFixed(2),\r\n readType: o.ReadTyp === '03' ? 'Actual' : 'Estimated',\r\n meterType: o.MeterType,\r\n paymentAmount: o.PaymentAmount,\r\n }));\r\n }\r\n\r\n function transformEnergyUsage(data, weatherData, graphFilter, colors) {\r\n const out = [];\r\n\r\n if (graphFilter.netMeter) {\r\n out.push([\r\n graphFilter.periodType,\r\n { role: 'tooltip', p: { html: true } },\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n ]);\r\n } else {\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n { role: 'tooltip', p: { html: true } },\r\n ]);\r\n }\r\n\r\n if (data.Series1.length) {\r\n let formatDate = '';\r\n i = 0;\r\n for (i = 0; i < data.Series1.length; i++) {\r\n let temperature = '0';\r\n if (weatherData[i]) {\r\n temperature = graphFilter.intervalFrequency == 'billingCycleEnergyUse' ? parseInt(weatherData[i].AverageTemprature) : parseInt(weatherData[i].MeanTemp);\r\n // var yearSelected = moment(weatherData[i].WeatherDate).format(\"YYYY\")\r\n }\r\n if (graphFilter.intervalFrequency === 'quarterHourlyEnergyUse' || graphFilter.intervalFrequency === 'hourlyEnergyUse' || graphFilter.intervalFrequency == 'halfHourlyEnergyUse' || graphFilter.intervalFrequency === 'averageEnergyByDayOfWeek' || data.TickSeries[i] === '-') {\r\n formatDate = graphFilter.intervalFrequency === 'hourlyEnergyUse' ? new Date(`${moment(graphFilter.startDate).format('MM/DD/YYYY')} ${[data.TickSeries[i].slice(0, 2), ':00', data.TickSeries[i].slice(2)].join('')}`) : new Date(`${moment(graphFilter.startDate).format('MM/DD/YYYY')} ${data.TickSeries[i]}`);\r\n } else if (graphFilter.intervalFrequency == 'billingCycleEnergyUse') {\r\n if (data.TickSeries[i] == '') {\r\n const a = data.TickSeries[i - 1].split('/');\r\n a.splice(1, 0, '01');\r\n formatDate = new Date(moment(a.join('/')).add(1, 'months'));\r\n } else {\r\n formatDate = data.TickSeries[i];\r\n }\r\n const startEndDate = graphFilter.invoiceListArray.filter((e) => {\r\n if (moment(formatDate).format('MMMM YYYY') == moment(e.BillDate).format('MMMM YYYY')) return e;\r\n });\r\n var billedDays = {\r\n billStartDate: startEndDate.length > 0 ? startEndDate[0].BillingStartDate : new Date(),\r\n billEndDate: startEndDate.length > 0 ? startEndDate[0].BillingEndDate : new Date(),\r\n };\r\n } else {\r\n const tempDate = new Date(data.TickSeries[i]);\r\n // var yearSelected = moment(weatherData[i].WeatherDate).format(\"YYYY\")\r\n const yearSelected = graphFilter.endDate.getFullYear();\r\n if (data.TickSeries[i] == '') {\r\n var testDate = new Date(new Date(data.TickSeries[i - 1]).setDate(new Date(data.TickSeries[i - 1]).getDate() + 1));\r\n }\r\n formatDate = data.TickSeries[i] == '' ? new Date(moment(`${testDate.getMonth() + 1}/${testDate.getDate()}/${yearSelected}`, 'MM/DD/YYYY')) : data.TickSeries[i];\r\n }\r\n const dataSeriesOne = (graphFilter.intervalFrequency == 'billingCycleEnergyUse') ? parseInt(data.Series1[i]) : parseFloat(data.Series1[i]);\r\n const dataSeriesThree = (graphFilter.intervalFrequency == 'billingCycleEnergyUse') ? parseInt(data.Series3[i]) : parseFloat(data.Series3[i]);\r\n const tickDate = (graphFilter.periodType === 'Year' && graphFilter.compareToPreviousYear) ? moment(formatDate).format('MMM') : (graphFilter.periodType === 'Year' && !graphFilter.compareToPreviousYear) ? moment(formatDate).format(\"MMM [\\n] 'YY\") : (graphFilter.periodType === 'billingCycle' || graphFilter.periodType === 'Week') ? moment(formatDate).format('MMM [\\n]DD')\r\n : graphFilter.intervalFrequency == 'hourlyEnergyUse' ? moment(formatDate).format('h [\\n]A') : formatDate;\r\n let intervalData = {};\r\n if (graphFilter.netMeter) {\r\n intervalData = [\r\n tickDate,\r\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(temperature), parseFloat(dataSeriesThree), null, graphFilter.intervalFrequency, null, null),\r\n dataSeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n 0.00,\r\n dataSeriesThree,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.netMeter}`,\r\n // consumed, cost, null - some data was not available.\r\n ];\r\n } else {\r\n intervalData = [\r\n tickDate,\r\n dataSeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n // consumed, cost, null - some data/dollar value was not available yet.\r\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(temperature), null, graphFilter.unitOfMeasure, graphFilter.periodType, billedDays, graphFilter.endDate),\r\n ];\r\n }\r\n out.push(intervalData);\r\n }\r\n }\r\n\r\n return out;\r\n }\r\n\r\n function createTooltip(date, net, consumed, generated, meterType, periodType, billedDates, endDate) {\r\n const dateSelected = '';\r\n if (periodType == 'Year') {\r\n const billEndDate = new Date(moment(billedDates.billEndDate).utc());\r\n const billStartDate = new Date(moment(billedDates.billStartDate).utc());\r\n const dateSelected = `${moment(billedDates.billStartDate).format('MMM')}. ${english_ordinal_suffix(billStartDate)} - ${moment(billedDates.billEndDate).format('MMM')}. ${english_ordinal_suffix(billEndDate)} ${moment(billedDates.billEndDate).utc().format('YYYY')}`;\r\n\r\n var tooltip = (meterType == 'Dollar') ? `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
Cost: $${net}
' : (meterType == 'kWh') ? `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
kWh: ${net}
' : `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
CCF: ${net}
';\r\n } else if ((periodType == 'billingCycle' || periodType == 'Week')) {\r\n const dateSelected = `${moment(date).format('MMMM')} ${english_ordinal_suffix(date)}, ${moment(date).format('YYYY')}`;\r\n var tooltip = (meterType == 'kWh') ? `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
kWh:${net}
' : `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
CCF:${net}
';\r\n } else if (meterType == 'kWh' && (periodType == 'Day')) {\r\n const dateSelected = endDate.toLocaleString('en-US', { weekday: 'long' });\r\n const showDate = moment(date).format('h:mm A');\r\n var tooltip = `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
${showDate}
kWh:${net}
';\r\n }\r\n if (periodType == 'billingCycleEnergyUse') {\r\n const dateSelected = moment(date).format('MMMM YYYY');\r\n var tooltip = `${''\r\n + '`\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + ''\r\n + ``\r\n + '
'}${dateSelected}
Avg Temperature: ${consumed}°
Consumed: ${net} kWh
Generated: ${generated} kWh
';\r\n }\r\n return tooltip;\r\n }\r\n function english_ordinal_suffix(dt) {\r\n // var formattedDate = moment(dt).format(\"MMMM\")+ \" \" +(dt.getDate()+(dt.getDate() % 10 == 1 && dt.getDate() != 11 ? 'st' : (dt.getDate() % 10 == 2 && dt.getDate() != 12 ? 'nd' : (dt.getDate() % 10 == 3 && dt.getDate() != 13 ? 'rd' : 'th')))) + \" \" +dt.getFullYear();\r\n const formattedDate = (dt.getDate() + (dt.getDate() % 10 == 1 && dt.getDate() != 11 ? 'st' : (dt.getDate() % 10 == 2 && dt.getDate() != 12 ? 'nd' : (dt.getDate() % 10 == 3 && dt.getDate() != 13 ? 'rd' : 'th'))));\r\n\r\n return formattedDate;\r\n }\r\n function transformCompareEnergyUsage(data1, data2, graphFilter, colors) {\r\n const out = [];\r\n\r\n if (graphFilter.netMeter) {\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n ]);\r\n } else {\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n ]);\r\n }\r\n\r\n if (data1.length) {\r\n i = 0;\r\n for (i = 0; i < data1.length; i++) {\r\n let formatDate = '';\r\n if (data1[i].ticks == '') {\r\n const a = data1[i - 1].ticks.split('/');\r\n a.splice(1, 0, '01');\r\n formatDate = new Date(moment(a.join('/')).add(1, 'months'));\r\n } else {\r\n formatDate = data1[i].ticks;\r\n }\r\n const data1SeriesOne = parseFloat(data1[i].Series1);\r\n const data2SeriesOne = parseFloat(data1[i].yoySeries1);\r\n const tickDate = moment(formatDate).format('MMM');\r\n let intervalData = {};\r\n if (graphFilter.netMeter) {\r\n const data2SeriesThree = parseFloat(data1[i].yoySeries3);\r\n const data1SeriesThree = parseFloat(data1[i].Series3);\r\n intervalData = [\r\n tickDate,\r\n data1SeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n 0.00,\r\n data1SeriesThree,\r\n `fill-color: ${colors.netMeter}`,\r\n 0.00,\r\n data2SeriesOne,\r\n `stroke-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar\r\n }; stroke-width: 2; fill-color: #ffffff`,\r\n 0.00,\r\n data2SeriesThree,\r\n `stroke-color: ${\r\n colors.netMeter\r\n }; stroke-width: 2; fill-color: #ffffff`];\r\n } else {\r\n intervalData = [\r\n tickDate,\r\n data1SeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n 0.00,\r\n data2SeriesOne,\r\n `stroke-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar\r\n }; stroke-width: 2; fill-color: #ffffff`,\r\n ];\r\n }\r\n out.push(intervalData);\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n function transformInvoiceGraph(data, weatherData, graphFilter, invoiceListArray, colors) {\r\n const out = [];\r\n\r\n if (graphFilter.netMeter) {\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'annotation' },\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n { role: 'tooltip', p: { html: true } },\r\n ]);\r\n } else {\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n { role: 'tooltip', p: { html: true } },\r\n ]);\r\n }\r\n\r\n if (data.length) {\r\n data.forEach((o, i) => {\r\n let temperature = '0';\r\n const tempWeatherData = weatherData.filter((e) => {\r\n if (moment(e.EndDate).format('MMMM YYYY') == moment(o.BillDate).format('MMMM YYYY')) return e;\r\n });\r\n if (tempWeatherData[0]) {\r\n temperature = parseInt(tempWeatherData[0].AverageTemprature);\r\n }\r\n const billedDays = {\r\n billStartDate: o.BillingStartDate,\r\n billEndDate: o.BillingEndDate,\r\n };\r\n const formatDate = new Date(moment(o.BillDate).format('MM/DD/YYYY'));\r\n const dataSeriesOne = graphFilter.unitOfMeasure != 'Dollar'\r\n ? parseFloat(o.Usage)\r\n : parseFloat(o.Bill_Amt);\r\n let intervalData = {};\r\n if (graphFilter.netMeter) {\r\n intervalData = [\r\n formatDate,\r\n dataSeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n `stroke-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar\r\n }; stroke-width: 2; fill-color: #ffffff`,\r\n // we need dollar value here.\r\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseFloat(0.00), null),\r\n ];\r\n } else {\r\n intervalData = [\r\n moment(formatDate).format(\"MMM [\\n] 'YY\"),\r\n dataSeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n // we need dollar value here.\r\n createTooltip(formatDate, parseFloat(dataSeriesOne), parseInt(temperature), null, graphFilter.unitOfMeasure, graphFilter.periodType, billedDays),\r\n ];\r\n }\r\n out.push(intervalData);\r\n });\r\n }\r\n\r\n return out;\r\n }\r\n\r\n function transformCompareInvoiceGraph(data1, data2, graphFilter, colors) {\r\n const out = [];\r\n\r\n out.push([\r\n graphFilter.periodType,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n graphFilter.unitOfMeasure,\r\n graphFilter.unitOfMeasure,\r\n { role: 'style' },\r\n ]);\r\n\r\n if (data2.length) {\r\n i = 0;\r\n for (i = 0; i < data2.length; i++) {\r\n const formatDate = new Date(moment(data2[i].BillDate).format('MM/DD/YYYY'));\r\n const data1SeriesOne = graphFilter.unitOfMeasure != 'Dollar'\r\n ? (parseFloat(data2[i].Usage) ? parseFloat(data2[i].Usage) : 0.00)\r\n : parseFloat(data2[i].Bill_Amt);\r\n const data2SeriesOne = graphFilter.unitOfMeasure != 'Dollar'\r\n ? ((data2[i].compareUsage == undefined) ? 0.00 : parseFloat(data2[i].compareUsage))\r\n : ((data2[i].compareCost == undefined) ? 0.00 : parseFloat(data2[i].compareCost));\r\n let intervalData = {};\r\n intervalData = [\r\n moment(formatDate).format('MMM'),\r\n data1SeriesOne,\r\n `fill-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar}`,\r\n 0.00,\r\n data2SeriesOne,\r\n `stroke-color: ${\r\n graphFilter.serviceType === 'Gas'\r\n ? colors.gasBar\r\n : colors.electricBar\r\n }; stroke-width: 2; fill-color: #ffffff`,\r\n ];\r\n out.push(intervalData);\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n return {\r\n transformEnergyUsage,\r\n transformCompareEnergyUsage,\r\n transformInvoiceList,\r\n transformInvoiceDetails,\r\n transformInvoiceGraph,\r\n transformCompareInvoiceGraph,\r\n transformUsageList,\r\n };\r\n});\r\n","app.factory('notificationPreferencesAssetsService', () => ({\r\n strings: {\r\n accountSelected: 'accountSelected',\r\n active: 'active',\r\n C: 'C',\r\n channels: {\r\n EBIL: 'EBIL',\r\n EBLP: 'EBLP',\r\n MAIL: 'MAIL',\r\n },\r\n channels_type: {\r\n phones: 'phones',\r\n emails: 'emails',\r\n },\r\n consent_type: {\r\n Accept: 'Accept',\r\n Decline: 'Decline',\r\n Ignore: 'Ignore'\r\n },\r\n Days: 'Days',\r\n ENROLL: 'ENROLL',\r\n font_size: {\r\n COND: 'COND',\r\n DETA: 'DETA',\r\n LARG: 'LRGE',\r\n METR: 'METR'\r\n },\r\n font_type: {\r\n condensed: 'condensed',\r\n detailed: 'detailed',\r\n large: 'large',\r\n braille: 'braille'\r\n },\r\n jurisdictions: {\r\n FL01: 'FL01',\r\n NC01: 'NC01',\r\n SC01: 'SC01'\r\n },\r\n Paperless_Billing: 'Paperless Billing',\r\n preferences: {\r\n ACCT_MGMT: 'ACCT_MGMT',\r\n ACTIVE_OUT: 'ACTIVE_OUT',\r\n APPT_REM: 'APPT_REM',\r\n APP_SCHED: 'APP_SCHED',\r\n APP_UPDT: 'APP_UPDT',\r\n AUTOPAY: 'AUTOPAY',\r\n BILLPAY: 'BILLPAY',\r\n BILLPRINT: 'BILLPRINT',\r\n BILL_DEL: 'BILL_DEL',\r\n BILL_NOTIF: 'BILL_NOTIF',\r\n ENRL_PRCHS: 'ENRL_PRCHS',\r\n OUTAGE: 'OUTAGE',\r\n PAPERLESS: 'PAPERLESS',\r\n PREPAY: 'PREPAY',\r\n PAY_CONFRM: 'PAY_CONFRM',\r\n PAY_REMIND: 'PAY_REMIND',\r\n PMT_RMDR: 'PMT_RMDR',\r\n PMT_UPDT: 'PMT_UPDT',\r\n PPY_AUTO: 'PPY_AUTO',\r\n PPY_DISC: 'PPY_DISC',\r\n RATE_REVW: 'RATE_REVW',\r\n SRVO_APPT: 'SRVO_APPT',\r\n SRVO_NOT: 'SRVO_NOT',\r\n },\r\n preferences_actions: {\r\n ADD_PHN: 'ADD_PHN',\r\n PREF_DELETE: 'PREF_DELETE',\r\n PREF_CREATE: 'PREF_CREATE',\r\n PREF_UPDATE: 'PREF_UPDATE',\r\n },\r\n programs: {\r\n ELBILL: 'ELBILL',\r\n AUTPAY: 'AUTPAY',\r\n DIRDEB: 'DIRDEB'\r\n },\r\n PT00H00M00S: 'PT00H00M00S',\r\n rr: 'rr',\r\n rate_review_type: {\r\n A: 'A'\r\n },\r\n status: {\r\n Ineligible: 'Ineligible',\r\n Enrolled: 'Enrolled',\r\n },\r\n tabs: {\r\n outages: 'notificationPreferences.outages',\r\n billing: 'notificationPreferences.billing',\r\n payment: 'notificationPreferences.payment',\r\n serviceOrders: 'notificationPreferences.serviceOrders',\r\n additionalOptions: 'notificationPreferences.additionalOptions',\r\n },\r\n prefChannelFilterConfig:{\r\n ENRL_PRCHS: ['VOIC'],\r\n PMT_RMDR: ['VOIC', 'TXT'],\r\n PMT_UPDT: ['VOIC', 'TXT'],\r\n BILL_DEL: ['VOIC', 'TXT'],\r\n BILL_NOTIF: ['VOIC']\r\n },\r\n cardToggleMapping: {\r\n autoEnrolled: [\r\n 'ACTIVE_OUT', \r\n 'SRVO_NOT',\r\n 'SRVO_APPT',\r\n 'BILL_NOTIF',\r\n 'PAY_CONFRM',\r\n 'ENRL_PRCHS',\r\n 'PPY_DISC',\r\n 'PREPAY',\r\n 'PPY_AUTO'\r\n ],\r\n unEnrollable: [\r\n 'SRVO_NOT',\r\n 'BILL_NOTIF',\r\n 'ENRL_PRCHS',\r\n 'PPY_DISC',\r\n 'PREPAY',\r\n 'PPY_AUTO'\r\n ]\r\n }\r\n },\r\n}));\r\n","/*\r\n * duke.account-selector.js\r\n * Javascript file to manage all interaction with the Account Selector\r\n */\r\n\r\napp.directive('accountSelector', [\r\n '$window',\r\n '$rootScope',\r\n 'dataAttribution',\r\n function (\r\n $window,\r\n $rootScope,\r\n dataAttribution,\r\n ) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n accountImg: '@',\r\n searchImg: '@',\r\n placeholder: '@',\r\n accountText: '@',\r\n pageId: '@',\r\n id: '@',\r\n noResultMessage: '@',\r\n arrowText: '@',\r\n actionUrl: '@',\r\n },\r\n require: '?ngModel',\r\n replace: true,\r\n transclude: true,\r\n templateUrl: '/Assets/site/js/templates/account-selector.html',\r\n controller: [\r\n '$scope',\r\n '$element',\r\n '$attrs',\r\n function ($scope, $element, $attrs) {\r\n\r\n },\r\n ],\r\n link(scope, element, attrs, ngModel) {\r\n const serviceSuccess = function (data) {\r\n scope.data = data;\r\n scope.selected = data.SelectedAccount;\r\n scope.arrowText = data.ArrowText;\r\n scope.dashboardUrl = data.DashboardUrl;\r\n\r\n if (data.TrackingInfo) {\r\n scope.TrackingInfo = data.TrackingInfo;\r\n $rootScope.dataLayer.push(data.TrackingInfo);\r\n }\r\n\r\n scope.success = true;\r\n collapseContent();\r\n };\r\n\r\n const serviceError = function (data) {\r\n // Remove on loading and handle error\r\n scope.success = false;\r\n collapseContent();\r\n };\r\n\r\n // Real Api Call from: AccountSelector/GetAccountSelector\r\n $rootScope.getService({}, '/api/AccountSelector/GetAccountSelector').then(function(response) {\r\n if (response == 'error') {\r\n serviceError(response);\r\n } else {\r\n serviceSuccess(response);\r\n }\r\n });\r\n\r\n const searchInput = angular.element('#searchAccount');\r\n\r\n searchInput.click(() => {\r\n $window.scrollTo(0, 0);\r\n });\r\n\r\n const collapseContent = function () {\r\n $('.account-selector').slideDown(1000);\r\n };\r\n\r\n // view all accounts link click\r\n scope.attributionPush = function (\r\n category,\r\n action,\r\n label,\r\n event,\r\n link,\r\n $event,\r\n ) {\r\n $event.preventDefault();\r\n dataAttribution.pushData(category, action, label, event);\r\n window.location.href = link;\r\n };\r\n\r\n element.find('.acc-data').on('click', (e) => {\r\n e.stopPropagation();\r\n });\r\n },\r\n };\r\n },\r\n]);\r\n","app.directive(\"fpCustomer\", function($timeout) {\r\n\treturn {\r\n\t\trestrict: 'E',\r\n\t\ttemplateUrl: '/Assets/site/js/templates/authenticated/fp-customer.html',\t\t\r\n\t\trequire: '?ngModel',\r\n\t\ttransclude: true,\r\n\t\tscope: {\r\n\t\t\tserviceOrder: '='\r\n\t\t},\r\n\t\tlink: function(scope, element, attrs, ngModel) {\r\n\t\t\tscope.telFormat = function(tel) {\r\n\t\t\t\tlet regexObj = /^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;\r\n\t\t\t\tif (regexObj.test(tel)) {\r\n\t\t\t\t\tlet parts = tel.match(regexObj);\r\n\t\t\t\t\tlet phone = \"\";\r\n\t\t\t\t\tif (parts[1]) {\r\n\t\t\t\t\t\tphone += \"(\" + parts[1] + \") \";\r\n\t\t\t\t\t}\r\n\t\t\r\n\t\t\t\t\tphone += parts[2] + \"-\" + parts[3];\r\n\t\t\t\t\treturn phone;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//invalid phone number\r\n\t\t\t\t\treturn tel;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n","/*\r\n * duke.checkbox-list.js\r\n * Angular directive for checkboxlist fields\r\n */\r\n\r\napp.directive('checkboxList', function ($document) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n onlyChecked: \"=?\"\r\n },\r\n require: 'ngModel',\r\n link: function (scope, element, attrs, ngModel) {\r\n\r\n let checkboxListSelected = [];\r\n\r\n ngModel.$render = function () {\r\n if (!ngModel.$modelValue) {\r\n return;\r\n }\r\n ngModel.$setTouched();\r\n }\r\n\r\n\r\n angular.element(element.find(\"input\")).bind(\"click\", function () {\r\n ngModel.$setTouched();\r\n\r\n let model = angular.element(this).controller('ngModel');\r\n let label = angular.element(this).next().text();\r\n\r\n let checkboxBooleanValue = model.$viewValue;\r\n\r\n let temporalCheckbox = {\r\n id: this.id,\r\n value: model.$modelValue,\r\n text: label\r\n };\r\n\r\n\r\n if (checkboxBooleanValue) {\r\n model.$setViewValue(temporalCheckbox);\r\n checkboxListSelected.push(temporalCheckbox);\r\n } else {\r\n _.remove(checkboxListSelected, {\r\n id: this.id\r\n });\r\n }\r\n\r\n\r\n let checkboxArray = [];\r\n checkboxArray = element.find(\"input[type='checkbox']:checked\");\r\n let checkboxLength = checkboxArray.length;\r\n\r\n if (scope.onlyChecked) {\r\n if (checkboxLength == scope.onlyChecked) {\r\n element.find(\"input:checkbox:not(:checked)\").attr(\"disabled\", true);\r\n ngModel.$setViewValue(checkboxListSelected);\r\n\r\n } else if (checkboxLength < scope.onlyChecked) {\r\n element.find(\"input:checkbox:not(:checked)\").prop(\"disabled\", false);\r\n ngModel.$setViewValue(null);\r\n }\r\n } else {\r\n ngModel.$setViewValue(checkboxListSelected);\r\n }\r\n\r\n if (checkboxArray.length == 0) {\r\n ngModel.$setViewValue(null);\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n }\r\n }\r\n});\r\n","/*\r\n * duke.radio-button.js\r\n * Angular directive for radio buttons fields\r\n */\r\n\r\napp.directive(\"radioButton\", ['$sce', '$compile', function ($sce, $compile) {\r\n return {\r\n priority: 1001,\r\n restrict: \"E\",\r\n replace: true,\r\n scope: {\r\n myModel: \"=\",\r\n radioId: \"@\",\r\n radioGroupName: \"@\",\r\n checked: \"=\",\r\n innerValue: \"@\",\r\n text: \"@\",\r\n analytics: \"@\",\r\n onSelected: \"=\",\r\n disabledOn: \"=?\"\r\n },\r\n transclude: true,\r\n templateUrl: '/Assets/site/js/templates/authenticated/radio-button-auth.html',\r\n link: function (scope, element, attrs) {\r\n \r\n element.removeAttr(\"id\");\r\n let radioInput = element.find(\".radio-input\");\r\n let model = angular.element(element.find(\".radio-input\")).controller('ngModel');\r\n\r\n let isRequired = element.attr(\"required\");\r\n\r\n if (isRequired == \"required\") {\r\n element.parent().addClass(\"required\");\r\n radioInput.attr(\"required\", \"required\");\r\n element.removeAttr(\"required\");\r\n $compile(radioInput)(scope);\r\n }\r\n\r\n if(scope.checked){\r\n let input = element.find(\"input\");\r\n input.attr(\"checked\",\"true\");\r\n }\r\n\r\n scope.radioChange = function () {\r\n if (scope.onSelected) {\r\n scope.onSelected(scope.analytics);\r\n }\r\n }\r\n\r\n scope.$watch('checked',function(oldValue, newValue){\r\n \r\n });\r\n\r\n scope.temporalRadioValue = {\r\n text: scope.text,\r\n value: scope.innerValue\r\n };\r\n\r\n\r\n\r\n if (scope.checked) {\r\n\r\n model.$setTouched();\r\n model.$setViewValue(scope.temporalRadioValue);\r\n }\r\n\r\n\r\n\r\n },\r\n controller: [\"$scope\", \"$element\", function ($scope, $element){\r\n $scope.checked = $scope.checked;\r\n }]\r\n }\r\n}]);\r\n","/* eslint-disable no-magic-numbers */\r\n/* eslint-disable max-len */\r\n/* eslint-disable id-length */\r\napp.factory('ccBNIAssetService', () => ({\r\n contractAccountBannersPriorityMessageCodes: [10000100000, 10000200000, 10000300000, 10000400000, 10000500000, 10000600000, 10000700000, 10000800000, 1000100000, 11000100000, 11000200000, 11000300000, 11000400000, 11000500000, 11000600000, 11000700000, 11000800000, 12000100000, 12000200000, 12000300000, 12000400000, 12000500000, 12000600000, 12000700000, 12000800000, 13000100000, 13000200000, 13000300000, 13000400000, 13000500000, 13000600000, 13000700000, 13000800000, 14000100001, 14000100003, 14000100005, 14000100007, 14000100009, 14000100011, 14000100013, 14000200002, 14000200004, 14000200006, 14000200008, 14000200010, 14000200012, 14000200014, 15000100000, 15000100000, 15000100000, 15000200000, 15000300000, 15000400000, 16000100000, 16000200000, 16000300000, 17000100000, 17000200000, 17000300000, 17000400000, 18000100000],\r\n}));\r\n","/* eslint-disable no-param-reassign */\r\n/* eslint-disable eqeqeq */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable max-len */\r\napp.factory(\r\n 'FPAddendumService',\r\n (\r\n FPAssetService,\r\n FPGenericHelperService,\r\n FPIndexedDbDataService,\r\n sessionStorageService,\r\n ) => {\r\n\r\n const deleteCancelledReasonTypes = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.cancelledReasonTypes,\r\n );\r\n };\r\n\r\n const deleteDeclinedReasonTypes = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.declinedReasonTypes,\r\n );\r\n };\r\n\r\n const deleteSRRepairTypes = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.srRepairTypes,\r\n );\r\n };\r\n\r\n const deleteSRResolutionTypes = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.srResolutionTypes,\r\n );\r\n };\r\n\r\n const deleteSRStatusList = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.srStatusList,\r\n );\r\n };\r\n\r\n const deleteWOResolutionTypes = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.woResolutionTypes,\r\n );\r\n };\r\n\r\n const deleteWOStatusList = function () {\r\n sessionStorageService.delete(\r\n FPAssetService.storageKeys.addendum.woStatusList,\r\n );\r\n };\r\n\r\n const getCancelledReasonTypes = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.cancelledReasonTypes,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getDeclinedReasonTypes = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.declinedReasonTypes,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getSRRepairTypes = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.srRepairTypes,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getSRResolutionTypes = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.srResolutionTypes,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getSRStatusList = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.srStatusList,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getWOResolutionTypes = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.woResolutionTypes,\r\n );\r\n return result || null;\r\n };\r\n\r\n const getWOStatusList = function () {\r\n const result = sessionStorageService.get(\r\n FPAssetService.storageKeys.addendum.woStatusList,\r\n );\r\n return result || null;\r\n };\r\n\r\n const setCancelledReasonTypes = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.cancelledReasonTypes,\r\n list,\r\n );\r\n };\r\n\r\n const setDeclinedReasonTypes = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.declinedReasonTypes,\r\n list,\r\n );\r\n };\r\n\r\n const setSRRepairTypes = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.srRepairTypes,\r\n list,\r\n );\r\n };\r\n\r\n const setSRResolutionTypes = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.srResolutionTypes,\r\n list,\r\n );\r\n };\r\n\r\n const setSRStatusList = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.srStatusList,\r\n list,\r\n );\r\n };\r\n\r\n const setWOResolutionTypes = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.woResolutionTypes,\r\n list,\r\n );\r\n };\r\n\r\n const setWOStatusList = function (list) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.addendum.woStatusList,\r\n list,\r\n );\r\n };\r\n\r\n const parseFullAddendum = function (addendum) {\r\n const cancelledReasonTypes = getCancelledReasonTypes();\r\n if (cancelledReasonTypes) {\r\n deleteCancelledReasonTypes();\r\n }\r\n setCancelledReasonTypes(addendum.cancelledReasonTypes);\r\n\r\n const declinedReasonTypes = getDeclinedReasonTypes();\r\n if (declinedReasonTypes) {\r\n deleteDeclinedReasonTypes();\r\n }\r\n setDeclinedReasonTypes(addendum.declinedReasonTypes);\r\n\r\n const srRepairTypes = getSRRepairTypes();\r\n if (srRepairTypes) {\r\n deleteSRRepairTypes();\r\n }\r\n setSRRepairTypes(addendum.srRepairTypes);\r\n\r\n const srResolutionTypes = getSRResolutionTypes();\r\n if (srResolutionTypes) {\r\n deleteSRResolutionTypes();\r\n }\r\n setSRResolutionTypes(addendum.srResolutionTypes);\r\n\r\n const srStatusList = getSRStatusList();\r\n if (srStatusList) {\r\n deleteSRStatusList();\r\n }\r\n setSRStatusList(addendum.srStatusList);\r\n\r\n const woResolutionTypes = getWOResolutionTypes();\r\n if (woResolutionTypes) {\r\n deleteWOResolutionTypes();\r\n }\r\n setWOResolutionTypes(addendum.woResolutionTypes);\r\n\r\n const woStatusList = getWOStatusList();\r\n if (woStatusList) {\r\n deleteWOStatusList();\r\n }\r\n setWOStatusList(addendum.woStatusList);\r\n };\r\n\r\n const parseAddendumIndexedDb = function (addendum) {\r\n const promises = [];\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'cancelledReasonTypes')) {\r\n if (addendum.cancelledReasonTypes.length > 0) {\r\n const cancelledReasonTypes = addendum.cancelledReasonTypes.filter(type => type.code != '');\r\n if (cancelledReasonTypes.length > 0) {\r\n promises.push(\r\n FPIndexedDbDataService.putCancelledReasonTypes(\r\n cancelledReasonTypes,\r\n ).then((result) => {}),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'declinedReasonTypes')) {\r\n if (addendum.declinedReasonTypes.length > 0) {\r\n const declinedReasonTypes = addendum.declinedReasonTypes.filter(type => type.code != '');\r\n if (declinedReasonTypes.length > 0) {\r\n promises.push(\r\n FPIndexedDbDataService.putDeclinedReasonTypes(\r\n declinedReasonTypes,\r\n ).then((result) => {}),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'srRepairTypes')) {\r\n if (addendum.srRepairTypes.length > 0) {\r\n const srRepairTypes = addendum.srRepairTypes.filter(type => type.code != '');\r\n if (srRepairTypes.length > 0) {\r\n const repairTypes = FPGenericHelperService.generateIds(\r\n srRepairTypes,\r\n );\r\n promises.push(\r\n FPIndexedDbDataService.putSRRepairTypes(repairTypes).then(\r\n (result) => {},\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'srResolutionTypes')) {\r\n if (addendum.srResolutionTypes.length > 0) {\r\n const srResolutionTypes = addendum.srResolutionTypes.filter(type => type.code != '');\r\n if (srResolutionTypes.length > 0) {\r\n const resolutionTypes = FPGenericHelperService.generateIds(\r\n srResolutionTypes,\r\n );\r\n promises.push(\r\n FPIndexedDbDataService.putSRResolutionTypes(resolutionTypes).then(\r\n (result) => {},\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'srStatusList')) {\r\n if (addendum.srStatusList.length > 0) {\r\n const srStatusList = addendum.srStatusList.filter(type => type.code != '');\r\n if (srStatusList.length > 0) {\r\n promises.push(\r\n FPIndexedDbDataService.putSRStatusTypes(srStatusList).then(\r\n (result) => {},\r\n ),\r\n );\r\n\r\n promises.push(\r\n FPIndexedDbDataService.putSRStatusTypes(srStatusList).then(\r\n (result) => {},\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'woResolutionTypes')) {\r\n if (addendum.woResolutionTypes.length > 0) {\r\n const woResolutionTypes = addendum.woResolutionTypes.filter(type => type.code != '');\r\n if (woResolutionTypes.length > 0) {\r\n const resolutionTypes = FPGenericHelperService.generateIds(\r\n woResolutionTypes,\r\n );\r\n promises.push(\r\n FPIndexedDbDataService.putWOResolutionTypes(resolutionTypes).then(\r\n (result) => {},\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(addendum, 'woStatusList')) {\r\n if (addendum.woStatusList.length > 0) {\r\n const woStatusList = addendum.woStatusList.filter(type => type.code != '');\r\n if (woStatusList.length > 0) {\r\n promises.push(\r\n FPIndexedDbDataService.putWOStatusTypes(woStatusList).then(\r\n (result) => {},\r\n ),\r\n );\r\n\r\n promises.push(\r\n FPIndexedDbDataService.putStatusTypes(woStatusList).then(\r\n (result) => {},\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n return promises;\r\n };\r\n\r\n return {\r\n deleteCancelledReasonTypes,\r\n deleteDeclinedReasonTypes,\r\n deleteSRRepairTypes,\r\n deleteSRResolutionTypes,\r\n deleteSRStatusList,\r\n deleteWOResolutionTypes,\r\n deleteWOStatusList,\r\n getCancelledReasonTypes,\r\n getDeclinedReasonTypes,\r\n getSRRepairTypes,\r\n getSRResolutionTypes,\r\n getSRStatusList,\r\n getWOResolutionTypes,\r\n getWOStatusList,\r\n setCancelledReasonTypes,\r\n setDeclinedReasonTypes,\r\n setSRRepairTypes,\r\n setSRResolutionTypes,\r\n setSRStatusList,\r\n setWOResolutionTypes,\r\n setWOStatusList,\r\n parseFullAddendum,\r\n parseAddendumIndexedDb,\r\n };\r\n },\r\n);\r\n","/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-undef */\r\n/* eslint-disable max-len */\r\napp.factory('FPAlertsService', (\r\n FPServiceOrderService,\r\n) => {\r\n const calculateCompleteOrders = function (serviceOrders) {\r\n // soStatus == 'DISPATCHED' & lastModifiedDate > 7 days\r\n const orders = serviceOrders.filter(serviceOrder => FPServiceOrderService.isCompleteOrder(serviceOrder));\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateContactOrders = function (serviceOrders) {\r\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate == NULL & lastModifiedDate < 3 days\r\n const orders = serviceOrders.filter(serviceOrder => FPServiceOrderService.isContactOrder(serviceOrder));\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateInvoiceOrders = function (serviceOrders) {\r\n // soStatus == 'CONTRACTOR_REVIEWED' & lastModifiedDate > 14 Day\r\n const orders = serviceOrders.filter(serviceOrder => FPServiceOrderService.isInvoiceOrder(serviceOrder));\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateNewOrders = function (serviceOrders) {\r\n // createdDate < 3 days\r\n const orders = serviceOrders.filter(serviceOrder => FPServiceOrderService.isNewOrder(serviceOrder));\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateScheduleOrders = function (serviceOrders) {\r\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate != NULL & lastModifiedDate > 30 days & scheduledStartDate == NULL\r\n const orders = serviceOrders.filter(serviceOrder => FPServiceOrderService.isScheduleOrder(serviceOrder));\r\n\r\n return orders.length;\r\n };\r\n\r\n return {\r\n calculateCompleteOrders,\r\n calculateContactOrders,\r\n calculateInvoiceOrders,\r\n calculateNewOrders,\r\n calculateScheduleOrders,\r\n };\r\n});\r\n","app.service('FPApigeeApiConfigService', (FPAssetService, FPCurrentUserService, sessionStorageService) => {\r\n // Global Vars\r\n const deleteServiceHost = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.serviceHost);\r\n };\r\n\r\n const getAcceptedOrdersUrl = function (cdpUserId, includeLastModified) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.default\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.statuses\r\n + FPAssetService.urlTokens.acceptedOrdersStatuses;\r\n\r\n if (includeLastModified) {\r\n return url\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.includeLastModified\r\n + new Date.now()\r\n + FPAssetService.urlTokens.appendParameters\r\n + ts.getTime();\r\n }\r\n return url\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n };\r\n\r\n const getAddendumUrl = function (cdpUserId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.cdpUsers\r\n + cdpUserId\r\n + FPAssetService.urlTokens.addendum\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getApigeeAccessInfoUrl = function () {\r\n return FPAssetService.sitecoreEndpoints.GetApigeeAccessInfo;\r\n };\r\n\r\n const getCCAccessTokenUrl = function () {\r\n const serviceUrl = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.ccoauth;\r\n return serviceUrl;\r\n };\r\n\r\n const getCompanyDetailsUrl = function (cdpUserId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.contractor\r\n + cdpUserId\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getDefaultServiceOrderUrl = function (cdpUserId, serviceOrderId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.serviceOrderIds\r\n + serviceOrderId\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.default\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getDefaultServiceOrdersUrl = function (cdpUserId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.default\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getFullServiceOrderUrl = function (cdpUserId, serviceOrderId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.serviceOrderIds\r\n + serviceOrderId\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.full\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getFullServiceOrdersUrl = function (cdpUserId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.full\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const getInvoiceOrdersUrl = function (cdpUserId, includeLastModified) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + cdpUserId\r\n + FPAssetService.urlTokens.serviceOrders\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.fields\r\n + FPAssetService.urlTokens.default\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.statuses\r\n + FPAssetService.urlTokens.invoiceOrdersStatuses;\r\n\r\n if (includeLastModified) {\r\n return url\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.includeLastModified\r\n + new Date.now()\r\n + FPAssetService.urlTokens.appendParameters\r\n + ts.getTime();\r\n }\r\n return url\r\n + FPAssetService.urlTokens.appendParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n };\r\n\r\n const getOAuthTokenUrl = function () {\r\n const serviceUrl = getServiceHost() + FPAssetService.apigeeServiceEndpointsUrls.oauth;\r\n return serviceUrl;\r\n };\r\n\r\n const getServiceHost = function () {\r\n if(assetService.apiConfig.useLocalHost){\r\n setServiceHost(assetService.apigeeEnvs.tst);\r\n return assetService.apigeeEnvs.tst;\r\n }\r\n else{ \r\n const serviceHost = sessionStorageService.get(\r\n assetService.storageKeys.serviceHost,\r\n );\r\n \r\n return serviceHost || null;\r\n }\r\n };\r\n\r\n const getUserAccessUrl = function () {\r\n return FPAssetService.sitecoreEndpoints.GetUserAccess;\r\n };\r\n\r\n const getUsersUrl = function (cdpUserId) {\r\n const ts = new Date();\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.cdpUsers\r\n + cdpUserId\r\n + FPAssetService.urlTokens.users\r\n + FPAssetService.urlTokens.beginParameters\r\n + FPAssetService.urlTokens.timestamp\r\n + ts.getTime();\r\n return url;\r\n };\r\n\r\n const logExceptionUrl = function () {\r\n return FPAssetService.sitecoreEndpoints.LogException;\r\n };\r\n\r\n const patchServiceOrder = function () {\r\n let url = getServiceHost()\r\n + FPAssetService.apigeeServiceEndpointsUrls.serviceOrders\r\n + FPCurrentUserService.getCdpUserId()\r\n + FPAssetService.urlTokens.serviceOrders;\r\n return url;\r\n };\r\n\r\n const setServiceHost = function (serviceHost) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.serviceHost,\r\n serviceHost,\r\n );\r\n };\r\n\r\n return {\r\n deleteServiceHost,\r\n getAcceptedOrdersUrl,\r\n getAddendumUrl,\r\n getApigeeAccessInfoUrl,\r\n getCCAccessTokenUrl,\r\n getCompanyDetailsUrl,\r\n getDefaultServiceOrderUrl,\r\n getDefaultServiceOrdersUrl,\r\n getFullServiceOrderUrl,\r\n getFullServiceOrdersUrl,\r\n getInvoiceOrdersUrl,\r\n getOAuthTokenUrl,\r\n getUsersUrl,\r\n getServiceHost,\r\n getUserAccessUrl,\r\n logExceptionUrl,\r\n patchServiceOrder,\r\n setServiceHost,\r\n };\r\n},);\r\n","app.factory('FPAppService', (\r\n FPAssetService,\r\n FPBroadcastService,\r\n sessionStorageService,\r\n) => {\r\n const deleteDataLoad = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.dataLoad);\r\n };\r\n\r\n const initDataLoad = function () {\r\n const dataObj = {\r\n addendum: false,\r\n acceptedOrders: false,\r\n invoiceOrders: false,\r\n companyDetails: false,\r\n users: false,\r\n };\r\n\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.dataLoad,\r\n dataObj,\r\n );\r\n };\r\n\r\n const getDataLoad = function () {\r\n const dataObj = sessionStorageService.get(\r\n FPAssetService.storageKeys.dataLoad,\r\n );\r\n\r\n return dataObj || null;\r\n };\r\n\r\n const setDataLoad = function (dataObj) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.dataLoad,\r\n dataObj,\r\n );\r\n };\r\n\r\n const validateDataLoad = function (dataObj) {\r\n let flag = false;\r\n Object.keys(dataObj).forEach((key, _index) => {\r\n if (!dataObj[key] && !flag) {\r\n flag = true;\r\n }\r\n });\r\n\r\n if (flag) {\r\n return false;\r\n }\r\n FPBroadcastService.dataLoaded();\r\n deleteDataLoad();\r\n return true;\r\n };\r\n\r\n return {\r\n deleteDataLoad,\r\n initDataLoad,\r\n getDataLoad,\r\n setDataLoad,\r\n validateDataLoad,\r\n };\r\n});\r\n","/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-underscore-dangle */\r\napp.factory('FPCSVServiceOrders', function (\r\n FPAssetService,\r\n FPGenericHelperService,\r\n FPSitecoreServices,\r\n FPDataModelsDTOService,\r\n FPDateHelperService,\r\n) {\r\n const vm = this;\r\n vm.serviceOrders = null;\r\n vm.currentUserRole = null;\r\n vm.isContractor = null;\r\n vm.filteredServiceOrders = [];\r\n\r\n function exportCSV(acceptedOrInvoiceOrders) {\r\n if (acceptedOrInvoiceOrders === FPAssetService.strings.ACCEPTED_ORDERS) {\r\n return getAcceptedOrders().then(\r\n () => {\r\n formatAndSaveAsCSV(acceptedOrInvoiceOrders);\r\n },\r\n (error) => {\r\n\r\n },\r\n );\r\n }\r\n\r\n // acceptedOrInvoiceOrders === FPAssetService.strings.ACCEPTED_INVOICE_ORDERS\r\n return getInvoiceOrders().then(\r\n () => {\r\n formatAndSaveAsCSV(acceptedOrInvoiceOrders);\r\n },\r\n (error) => {\r\n\r\n },\r\n );\r\n }\r\n\r\n function formatAndSaveAsCSV(acceptedOrInvoiceOrders) {\r\n const serviceOrdersFormatted = transformServiceOrders(vm.filteredServiceOrders, acceptedOrInvoiceOrders);\r\n const workOrders = serviceOrdersFormatted[0];\r\n const serviceRequests = serviceOrdersFormatted[1];\r\n\r\n if (workOrders.length > 0) {\r\n saveAsCSV(workOrders, 'WorkOrders');\r\n }\r\n if (serviceRequests.length > 0) {\r\n saveAsCSV(serviceRequests, 'ServiceRequests');\r\n }\r\n }\r\n\r\n function saveAsCSV(dataFormatted, fileName) {\r\n const csvFile = Papa.unparse(dataFormatted, {\r\n header: true,\r\n });\r\n\r\n const blob = new Blob([csvFile], { type: 'text/plain;charset=utf-8' });\r\n\r\n saveAs(blob, `${fileName}.csv`);\r\n }\r\n\r\n function parseWorkOrder(data) {\r\n return {\r\n 'Number ID': data.serviceOrderId,\r\n 'Date Assigned': FPDateHelperService.getDateFromFullDate(data.createdDate, ' '),\r\n 'Last Modified Date': FPDateHelperService.getDateFromFullDate(data.lastModifiedDate, ' '),\r\n Status: FPAssetService.status[data.soStatus].value,\r\n Program: data.programName,\r\n 'Work Order Type': data.soTypeName,\r\n 'Account Name': data.customer.name,\r\n 'Service Address': `${data.serviceAddress.line1} ${data.serviceAddress.city} ${data.serviceAddress.state} ${data.serviceAddress.postalCode}`,\r\n County: data.serviceAddress.county,\r\n Jurisdiction: data.serviceAddress.jurisdiction,\r\n Meter: FPGenericHelperService.printValueFromArrayPositionKey('meterId', data.serviceAddress.meterNumber, 0),\r\n Subdivision: data.serviceAddress.subDivision,\r\n 'Directions to Service Address': data.serviceAddress.directions,\r\n 'Contact Name': data.contactName,\r\n 'Contact For Appointment': data.customerContactHistory.contactForAppointment ? 'X' : '',\r\n 'Contact For Appointment Comments': data.customerContactHistory.contactForAppointmentComments,\r\n 'Best Time To Call': data.customerContactPreferences.bestTimeToCall,\r\n 'Primary Phone': FPGenericHelperService.telFormat(data.customer.primaryPhone),\r\n 'Alternate Phone': FPGenericHelperService.telFormat(data.customer.alternatePhone),\r\n 'Email Address': data.customer.primaryEmailAddress,\r\n 'Service Comments': data.serviceComments,\r\n 'Rush Job?': data.isRushOrder ? 'X' : '',\r\n Technician: data.assignedTechnician.name,\r\n 'Multiple Technician Required?': data.multipleTechnicianRequired ? 'X' : '',\r\n 'Other Technician': data.assignedOtherTechnician,\r\n 'Contractor Internal Invoice Number': data.contractorInternalRefNumber,\r\n 'Contractor Invoice Number': data.contractorInvoiceNumber,\r\n 'Duke Invoice Number': data.dukeInvoiceNumber,\r\n 'Schedule Start Time': `${FPDateHelperService.getDateFromFullDate(data.scheduledStartDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.scheduledStartDate, ' ')}`,\r\n 'Schedule End Time': `${FPDateHelperService.getDateFromFullDate(data.scheduledEndDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.scheduledEndDate, ' ')}`,\r\n 'Notify Customer When In Route': data.customerContactPreferences.notifyCustomerWhenInRoute ? 'X' : '',\r\n 'Return Trip Required?': data.returnTripRequired ? 'X' : '',\r\n 'Reschedule Start Time': `${FPDateHelperService.getDateFromFullDate(data.rescheduledStartDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.rescheduledStartDate, ' ')}`,\r\n 'Reschedule End Time': `${FPDateHelperService.getDateFromFullDate(data.rescheduledEndDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.rescheduledEndDate, ' ')}`,\r\n 'Number of Contact Attempt': data.customerContactHistory.noOfContactAttempts,\r\n 'First Attempt Date': FPDateHelperService.getDateFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\r\n 'First Attempt Hour': FPDateHelperService.getHourFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\r\n 'Preferred Customer Email Address': data.customerContactPreferences.preferredEmailAddress,\r\n 'Equipment Name': data.equipmentDetails.deviceName,\r\n 'Equipment Serial Number': data.equipmentDetails.deviceSerialNumber,\r\n 'Device Operational/Re-add to Inventory': data.equipmentDetails.deviceOperational ? 'X' : '',\r\n 'Replacement Required?': data.equipmentDetails.replacementNeeded ? 'X' : '',\r\n 'Replacement Equipment Type': data.equipmentDetails.replacementDeviceName,\r\n 'Replacement Equipment Serial Number': data.equipmentDetails.replacementDeviceSerialNo,\r\n 'Single Point Grounding': data.groundingDetails.singlePointGrounding ? 'X' : '',\r\n 'Repairs Needed': data.groundingDetails.groundingRepairsNeeded ? 'X' : '',\r\n 'Description of Work, Quantity, Parts': data.descriptionOfWorkQtyParts,\r\n 'Trip Fee': data.orderCostTimeDetails.tripFee.value,\r\n Labor: data.orderCostTimeDetails.laborCost.value,\r\n Material: data.orderCostTimeDetails.materialCost.value,\r\n 'Total Cost': (data.orderCostTimeDetails.tripFee.value + data.orderCostTimeDetails.laborCost.value + data.orderCostTimeDetails.materialCost.value),\r\n 'Resolution Type': FPGenericHelperService.printValueFromObjectKey('name', data.resolutionDetails.resolutionType),\r\n 'Resolution Date': `${FPDateHelperService.getDateFromFullDate(data.resolutionDetails.resolutionDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.resolutionDetails.resolutionDate, ' ')}`,\r\n 'Customer Received Survey?': data.customerContactHistory.surveyReceivedByCustomer ? 'X' : '',\r\n };\r\n }\r\n\r\n function parseServiceRequest(data) {\r\n return {\r\n 'Number ID': data.serviceOrderId,\r\n 'Date Assigned': FPDateHelperService.getDateFromFullDate(data.createdDate, ' '),\r\n 'Last Modified Date': FPDateHelperService.getDateFromFullDate(data.lastModifiedDate, ' '),\r\n Status: FPAssetService.status[data.soStatus].value,\r\n Program: data.programName,\r\n 'Service Request Type': data.soTypeName,\r\n 'Account Name': data.customer.name,\r\n 'Service Address': `${data.serviceAddress.line1} ${data.serviceAddress.city} ${data.serviceAddress.state} ${data.serviceAddress.postalCode}`,\r\n County: data.serviceAddress.county,\r\n Jurisdiction: data.serviceAddress.jurisdiction,\r\n Meter: FPGenericHelperService.printValueFromArrayPositionKey('meterId', data.serviceAddress.meterNumber, 0),\r\n Subdivision: data.serviceAddress.subDivision,\r\n 'Directions to Service Address': data.serviceAddress.directions,\r\n 'Contact Name': data.contactName,\r\n 'Contact For Appointment': data.customerContactHistory.contactForAppointment ? 'X' : '',\r\n 'Contact For Appointment Comments': data.customerContactHistory.contactForAppointmentComments,\r\n 'Best Time To Call': data.customerContactPreferences.bestTimeToCall,\r\n 'Primary Phone': FPGenericHelperService.telFormat(data.customer.primaryPhone),\r\n 'Alternate Phone': FPGenericHelperService.telFormat(data.customer.alternatePhone),\r\n 'Email Address': data.customer.primaryEmailAddress,\r\n 'Service Comments': data.serviceComments,\r\n 'Rush Job?': data.isRushOrder ? 'X' : '',\r\n Technician: data.assignedTechnician.name,\r\n 'Multiple Technician Required?': data.multipleTechnicianRequired ? 'X' : '',\r\n 'Other Technician': data.assignedOtherTechnician,\r\n 'Contractor Internal Invoice Number': data.contractorInternalRefNumber,\r\n 'Contractor Invoice Number': data.contractorInvoiceNumber,\r\n 'Duke Invoice Number': data.dukeInvoiceNumber,\r\n 'Schedule Start Time': `${FPDateHelperService.getDateFromFullDate(data.scheduledStartDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.scheduledStartDate, ' ')}`,\r\n 'Schedule End Time': `${FPDateHelperService.getDateFromFullDate(data.scheduledEndDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.scheduledEndDate, ' ')}`,\r\n 'Notify Customer When In Route': data.customerContactPreferences.notifyCustomerWhenInRoute ? 'X' : '',\r\n 'Return Trip Required?': data.returnTripRequired ? 'X' : '',\r\n 'Reschedule Start Time': `${FPDateHelperService.getDateFromFullDate(data.rescheduledStartDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.rescheduledStartDate, ' ')}`,\r\n 'Reschedule End Time': `${FPDateHelperService.getDateFromFullDate(data.rescheduledEndDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.rescheduledEndDate, ' ')}`,\r\n 'Number of Contact Attempt': data.customerContactHistory.noOfContactAttempts,\r\n 'First Attempt Date': FPDateHelperService.getDateFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\r\n 'First Attempt Hour': FPDateHelperService.getHourFromFullDate(data.customerContactHistory.firstAttemptDate, ' '),\r\n 'Preferred Customer Email Address': data.customerContactPreferences.preferredEmailAddress,\r\n 'Service Order Balance': data.serviceOrderBalance.value,\r\n 'Entitlement Balance': data.programEntitlementBalance.value,\r\n 'Covered Description of Work, Quantity, Parts': data.descriptionOfWorkQtyPartsCovered,\r\n 'Regular Labor Hours': data.orderCostTimeDetails.regularLaborHours,\r\n 'Regular Labor Cost': data.orderCostTimeDetails.regularLaborCost.value,\r\n 'Entitlement Labor Hours': data.orderCostTimeDetails.entitlementLaborHours,\r\n 'Entitlement Labor Cost': data.orderCostTimeDetails.entitlementLaborCost.value,\r\n 'Total Labor Cost': totalLaborCost(data.orderCostTimeDetails.regularLaborCost.value, data.orderCostTimeDetails.entitlementLaborCost.value),\r\n 'Parts Cost': data.orderCostTimeDetails.partsCost.value,\r\n 'Trip Fee': data.orderCostTimeDetails.tripFee.value,\r\n 'Total Cost': data.orderCostTimeDetails.totalLaborPartsCoveredCost.value,\r\n 'Not Covered Description of Work, Quantity, Parts': data.descriptionOfWorkQtyPartsNonCovered,\r\n 'Labor Not Covered': data.orderCostTimeDetails.laborCostNotCovered.value,\r\n 'Parts Not Covered': data.orderCostTimeDetails.partsCostNotCovered.value,\r\n 'Total Not Covered': data.orderCostTimeDetails.totalDueFromCustomer.value,\r\n 'Resolution Type': FPGenericHelperService.printValueFromObjectKey('name', data.resolutionDetails.resolutionType),\r\n 'Repair Type': data.repairType.name,\r\n 'Resolution Date': `${FPDateHelperService.getDateFromFullDate(data.resolutionDetails.resolutionDate, ' ')} ${FPDateHelperService.getHourFromFullDate(data.resolutionDetails.resolutionDate, ' ')}`,\r\n 'Customer Received Survey?': data.customerContactHistory.surveyReceivedByCustomer ? 'X' : '',\r\n };\r\n }\r\n\r\n function transformServiceOrders(serviceOrders) {\r\n const workOrders = [];\r\n const serviceRequests = [];\r\n\r\n if (serviceOrders.length > 0) {\r\n _.map(serviceOrders, (serviceOrder) => {\r\n if (serviceOrder.woorSR === FPAssetService.woorSRType.SERVICE_REQUEST) {\r\n serviceRequests.push(parseServiceRequest(serviceOrder));\r\n } else {\r\n workOrders.push(parseWorkOrder(serviceOrder));\r\n }\r\n });\r\n }\r\n\r\n return [workOrders, serviceRequests];\r\n }\r\n\r\n\r\n function getAcceptedOrders() {\r\n return FPSitecoreServices.getAcceptedOrders()\r\n .then(\r\n (result) => {\r\n if (result) {\r\n if (result.serviceOrders.length > 0) {\r\n vm.filteredServiceOrders = FPDataModelsDTOService.transformServiceOrders(result.serviceOrders, FPAssetService.storageKeys.toggleFlags.acceptedOrders);\r\n }\r\n }\r\n },\r\n );\r\n }\r\n\r\n function getInvoiceOrders() {\r\n return FPSitecoreServices.getInvoiceOrders()\r\n .then(\r\n (result) => {\r\n if (result) {\r\n if (result.serviceOrders.length > 0) {\r\n vm.filteredServiceOrders = FPDataModelsDTOService.transformServiceOrders(result.serviceOrders, FPAssetService.storageKeys.toggleFlags.invoiceOrders);\r\n }\r\n }\r\n },\r\n );\r\n }\r\n\r\n function totalLaborCost(regularLaborCost, entitlementLaborCost) {\r\n return parseFloat((!regularLaborCost ? '0.0' : regularLaborCost))\r\n + parseFloat((!entitlementLaborCost ? '0.0' : entitlementLaborCost));\r\n }\r\n\r\n function totalCost(regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\r\n return parseFloat((!regularLaborCost ? '0.0' : regularLaborCost))\r\n + parseFloat((!entitlementLaborCost ? '0.0' : entitlementLaborCost))\r\n + parseFloat((!partsCost ? '0.0' : partsCost))\r\n + parseFloat((!tripFee ? '0.0' : tripFee));\r\n }\r\n\r\n function totalOrderCost(tripFee, laborCost, materialCost) {\r\n return parseFloat(tripFee)\r\n + parseFloat(laborCost)\r\n + parseFloat(materialCost);\r\n }\r\n return {\r\n exportCSV,\r\n };\r\n});\r\n","app.factory('FPDataModelsConfigService', function(){\r\n function cancelledReasonWsDTO (cancelReasonType,reasonComments) {\r\n this.cancelReasonType = cancelReasonType; // code name pair\r\n this.reasonComments = reasonComments;\r\n }\r\n\r\n function cdpUserWsDTO(badgeId,cdpId,name,phone) {\r\n this.badgeId = badgeId;\r\n this.cdpId = cdpId;\r\n this.name = name;\r\n this.phone = phone;\r\n };\r\n\r\n function customerContactHistoryDTO (noOfContactAttempts,firstAttemptDate,firstAttemptDateDukeCalendar,firstAttemptDateHour,contactComments,surveyReceivedByCustomer,customerPreferredSurveyOption) {\r\n this.noOfContactAttempts = noOfContactAttempts;\r\n this.firstAttemptDate = firstAttemptDate;\r\n this.firstAttemptDateDukeCalendar = firstAttemptDateDukeCalendar;\r\n this.firstAttemptDateHour = firstAttemptDateHour;\r\n this.contactComments = contactComments;\r\n this.surveyReceivedByCustomer = surveyReceivedByCustomer;\r\n this.customerPreferredSurveyOption = customerPreferredSurveyOption;\r\n };\r\n\r\n function customerContactPreferencesWsDTO (bestTimeToCallStart,bestTimeToCallStart,preferredEmailAddress,notifyCustomerWhenInRoute) {\r\n this.bestTimeToCallStart = bestTimeToCallStart;\r\n this.bestTimeToCallEnd = bestTimeToCallEnd;\r\n this.preferredEmailAddress = preferredEmailAddress;\r\n this.notifyCustomerWhenInRoute = notifyCustomerWhenInRoute;\r\n };\r\n\r\n function customerWsDTO (name,firstName,middleName,lastName,primaryPhone,alternatePhone,primaryEmailAddress) {\r\n this.name = name;\r\n this.firstName = firstName;\r\n this.middleName = middleName;\r\n this.lastName = lastName;\r\n this.primaryPhone = primaryPhone;\r\n this.alternatePhone = alternatePhone;\r\n this.primaryEmailAddress = primaryEmailAddress;\r\n };\r\n\r\n function declinedReasonWsDTO (declinedReasonType,reasonComments) {\r\n this.declineReasonType = declinedReasonType;// code name pair,\r\n this.reasonComments = reasonComments;\r\n };\r\n\r\n function deviceOptionsWsDTO (deviceName,deviceCode){\r\n this.deviceName = deviceName;\r\n this.deviceCode = deviceCode;\r\n };\r\n\r\n function equipmentDetailsWsDTO (deviceCode,deviceName,deviceSerialNumber,deviceOperational,replacementNeeded,replacementDeviceName,replacementDeviceSerialNo) {\r\n this.deviceCode = deviceCode;\r\n this.deviceName = deviceName;\r\n this.deviceSerialNumber = deviceSerialNumber;\r\n this.deviceOperational = deviceOperational;\r\n this.replacementNeeded = replacementNeeded;\r\n this.replacementDeviceName = replacementDeviceName;\r\n this.replacementDeviceSerialNo = replacementDeviceSerialNo;\r\n };\r\n\r\n function equipmentOptionsWsDTO (options) {\r\n this.options = options; // deviceOptionsWsDTO\r\n };\r\n\r\n function flatServiceOrder (assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,contractorInternalRefNumber,contractorInvoiceNumber,createdDate,customer,customerContactHistory,customerContactPreferences,declinedReason,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,dukeInvoiceNumber,equipmentDetails,equipmentOptions,groundingDetails,invoiceReceivedDate,isRushOrder,lastModifiedDate,multipleTechnicianRequired,orderCostTimeDetails,program,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduledStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceComments,serviceOrderBalance,serviceOrderId,soStatus,soType,woorSR,serviceAddress,soDbStatus,toggleFlag) {\r\n this.assignedOtherTechnician = assignedOtherTechnician;\r\n this.assignedTechnician = assignedTechnician; // user\r\n this.cancelledReason = cancelledReason; // cancelledReasonWsDTO\r\n this.contactName = contactName;\r\n this.contractorInternalRefNumber = contractorInternalRefNumber;\r\n this.contractorInvoiceNumber = contractorInvoiceNumber;\r\n this.createdDate = createdDate;\r\n this.customer = customer; // customerWsDTO \r\n this.customerContactHistory = customerContactHistory; // customerContactHistoryDTO\r\n this.customerContactPreferences = customerContactPreferences; // customerContactPreferencesWsDTO\r\n this.declinedReason = declinedReason; // declinedReasonWsDTO\r\n this.descriptionOfWorkQtyParts = descriptionOfWorkQtyParts;\r\n this.descriptionOfWorkQtyPartsCovered = descriptionOfWorkQtyPartsCovered;\r\n this.descriptionOfWorkQtyPartsNonCovered = descriptionOfWorkQtyPartsNonCovered;\r\n this.dukeInvoiceNumber = dukeInvoiceNumber;\r\n this.equipmentDetails = equipmentDetails; // equipmentDetailsWsDTO\r\n this.equipmentOptions = equipmentOptions; // equipmentOptionsWsDTO\r\n this.groundingDetails = groundingDetails; // groundingDetailsWsDTO\r\n this.invoiceReceivedDate = invoiceReceivedDate;\r\n this.isRushOrder = isRushOrder;\r\n this.lastModifiedDate = lastModifiedDate;\r\n this.multipleTechnicianRequired = multipleTechnicianRequired;\r\n this.orderCostTimeDetails = orderCostTimeDetails; // orderCostTimeDetailsWsDTO\r\n this.program = program.code.toUpperCase(); // codeNamePair\r\n this.programName = program.name; // codeNamePair\r\n this.programAnnualCoverageLimit = programAnnualCoverageLimit; // priceWsDTO\r\n this.programEntitlementBalance = programEntitlementBalance; // priceWsDTO\r\n this.repairType = repairType; // codeNamePair\r\n this.rescheduledEndDate = rescheduledEndDate;\r\n this.rescheduledStartDate = rescheduledStartDate;\r\n this.resolutionDetails = resolutionDetails; // resolutionDetailsWsDTO\r\n this.returnTripRequired = returnTripRequired;\r\n this.scheduledEndDate = scheduledEndDate;\r\n this.scheduledStartDate = scheduledStartDate;\r\n this.serviceComments = serviceComments;\r\n this.serviceOrderBalance = serviceOrderBalance; // priceWsDTO\r\n this.serviceOrderId = serviceOrderId;\r\n this.soStatus = soStatus.code.toUpperCase(); // codeNamePair\r\n this.soStatusName = soStatus.name; // codeNamePair\r\n this.soType = soType.code.toUpperCase(); // codeNamePair\r\n this.soTypeName = soType.name; // codeNamePair\r\n this.woorSR = woorSR.toUpperCase();\r\n this.serviceAddress = serviceAddress; // serviceAddressWsDTO\r\n this.soDbStatus = soDbStatus;\r\n this.toggleFlag = toggleFlag;\r\n }\r\n\r\n function groundingDetailsWsDTO (singlePointGrounding,groundingRepairsNeeded) {\r\n this.singlePointGrounding = singlePointGrounding;\r\n this.groundingRepairsNeeded = groundingRepairsNeeded;\r\n };\r\n\r\n function nameValuePair (name,value) {\r\n this.name = name;\r\n this.value = value; \r\n };\r\n\r\n function codeNamePair (code,name) {\r\n this.code = code;\r\n this.name = name;\r\n };\r\n\r\n function serviceRequestResolutionType (code,name,product) {\r\n this.code = code;\r\n this.name = name;\r\n this.product = product;\r\n }\r\n\r\n function workOrderResolutionType (code,name,woType) {\r\n this.code = code;\r\n this.name = name;\r\n this.woType = woType;\r\n }\r\n\r\n function serviceRequestRepairType (code,name,product) {\r\n this.code = code;\r\n this.name = name;\r\n this.product = product;\r\n }\r\n\r\n function priceWsDTO (value) {\r\n value = value;\r\n };\r\n\r\n function resolutionDetailsWsDTO (resolutionType,resolutionDate,resolutionDateDukeCalendar) {\r\n this.resolutionType = resolutionType;\r\n this.resolutionDate = resolutionDate;\r\n this.resolutionDateDukeCalendar = resolutionDateDukeCalendar;\r\n };\r\n\r\n function serviceAddressWsDTO (line1,line2,postalCode,county,city,state,subDivision,meterNumber,jurisdiction,countryIso,directions) {\r\n this.line1 = line1;\r\n this.line2 = line2;\r\n this.postalCode = postalCode;\r\n this.county = county;\r\n this.city = city;\r\n this.state = state;\r\n this.subDivision = subDivision;\r\n this.meterNumber = meterNumber;\r\n this.jurisdiction = jurisdiction;\r\n this.countryIso = countryIso;\r\n this.directions = directions;\r\n };\r\n\r\n function serviceOrder (assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,contractorInternalRefNumber,contractorInvoiceNumber,createdDate,customer,customerContactHistory,customerContactPreferences,declinedReason,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,dukeInvoiceNumber,equipmentDetails,equipmentOptions,groundingDetails,invoiceReceivedDate,isRushOrder,lastModifiedDate,multipleTechnicianRequired,orderCostTimeDetails,program,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduledStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceComments,serviceOrderBalance,serviceOrderId,soStatus,soType,woorSR,serviceAddress,soDbStatus) {\r\n this.assignedOtherTechnician = assignedOtherTechnician;\r\n this.assignedTechnician = assignedTechnician; // user\r\n this.cancelledReason = cancelledReason; // cancelledReasonWsDTO\r\n this.contactName = contactName;\r\n this.contractorInternalRefNumber = contractorInternalRefNumber;\r\n this.contractorInvoiceNumber = contractorInvoiceNumber;\r\n this.createdDate = createdDate;\r\n this.customer = customer; // customerWsDTO \r\n this.customerContactHistory = customerContactHistory; // customerContactHistoryDTO\r\n this.customerContactPreferences = customerContactPreferences; // customerContactPreferencesWsDTO\r\n this.declinedReason = declinedReason; // declinedReasonWsDTO\r\n this.descriptionOfWorkQtyParts = descriptionOfWorkQtyParts;\r\n this.descriptionOfWorkQtyPartsCovered = descriptionOfWorkQtyPartsCovered;\r\n this.descriptionOfWorkQtyPartsNonCovered = descriptionOfWorkQtyPartsNonCovered;\r\n this.dukeInvoiceNumber = dukeInvoiceNumber;\r\n this.equipmentDetails = equipmentDetails; // equipmentDetailsWsDTO\r\n this.equipmentOptions = equipmentOptions; // equipmentOptionsWsDTO\r\n this.groundingDetails = groundingDetails; // groundingDetailsWsDTO\r\n this.invoiceReceivedDate = invoiceReceivedDate;\r\n this.isRushOrder = isRushOrder;\r\n this.lastModifiedDate = lastModifiedDate;\r\n this.multipleTechnicianRequired = multipleTechnicianRequired;\r\n this.orderCostTimeDetails = orderCostTimeDetails; // orderCostTimeDetailsWsDTO\r\n this.program = program; // codeNamePair\r\n this.programName = program.name;\r\n this.programAnnualCoverageLimit = programAnnualCoverageLimit; // priceWsDTO\r\n this.programEntitlementBalance = programEntitlementBalance; // priceWsDTO\r\n this.repairType = repairType; // codeNamePair\r\n this.rescheduledEndDate = rescheduledEndDate;\r\n this.rescheduledStartDate = rescheduledStartDate;\r\n this.resolutionDetails = resolutionDetails; // resolutionDetailsWsDTO\r\n this.returnTripRequired = returnTripRequired;\r\n this.scheduledEndDate = scheduledEndDate;\r\n this.scheduledStartDate = scheduledStartDate;\r\n this.serviceComments = serviceComments;\r\n this.serviceOrderBalance = serviceOrderBalance; // priceWsDTO\r\n this.serviceOrderId = serviceOrderId;\r\n this.soStatus = soStatus; // codeNamePair\r\n this.soStatusName = soStatus.name;\r\n this.soType = soType; // codeNamePair\r\n this.soTypeName = soType.name;\r\n this.woorSR = woorSR;\r\n this.serviceAddress = serviceAddress; // serviceAddressWsDTO\r\n this.soDbStatus = soDbStatus;\r\n }\r\n\r\n function user (badgeNumber,cdpId,effectiveDate,name,phone,role,status,toggleFlag) {\r\n this.badgeNumber = badgeNumber;\r\n this.cdpId = cdpId;\r\n this.effectiveDate = effectiveDate;\r\n this.name = name;\r\n this.phone = phone;\r\n this.role = role;\r\n this.status = status;\r\n this.toggleFlag = toggleFlag;\r\n };\r\n\r\n function orderCostTimeDetailsWsDTO (entitlementLaborHours,entitlementLaborCost,laborCostNotCovered,partsCost,partsCostNotCovered,regularLaborHours,regularLaborCost,totalDueFromCustomer,totalLaborCost,totalLaborPartsCoveredCost,tripFee,laborCost,materialCost,totalOrderCost) {\r\n this.entitlementLaborHours = entitlementLaborHours;\r\n this.entitlementLaborCost = entitlementLaborCost; // PriceWsDTO,\r\n this.laborCostNotCovered = laborCostNotCovered; // PriceWsDTO,\r\n this.partsCost = partsCost; // PriceWsDTO,\r\n this.partsCostNotCovered = partsCostNotCovered; // PriceWsDTO,\r\n this.regularLaborHours = regularLaborHours;\r\n this.regularLaborCost = regularLaborCost; // PriceWsDTO,\r\n this.totalDueFromCustomer = totalDueFromCustomer; // PriceWsDTO,\r\n this.totalLaborCost = totalLaborCost; // PriceWsDTO,\r\n this.totalLaborPartsCoveredCost = totalLaborPartsCoveredCost; // PriceWsDTO,\r\n this.tripFee = tripFee; // PriceWsDTO,\r\n this.laborCost = laborCost; // PriceWsDTO,\r\n this.materialCost = materialCost; // PriceWsDTO,\r\n this.totalOrderCost = totalOrderCost; // PriceWsDTO,\r\n };\r\n\r\n return { \r\n FullAddendum : {\r\n allContractorAdmins: [],\r\n allContractorTechnicians: [],\r\n cancelledReasonTypes: [],\r\n declinedReasonTypes: [],\r\n srRepairTypes: [],\r\n srResolutionTypes: [],\r\n srStatusList: [],\r\n woResolutionTypes: [],\r\n woStatusList: []\r\n },\r\n cancelledReasonWsDTO,\r\n cdpUserWsDTO,\r\n codeNamePair,\r\n customerContactHistoryDTO,\r\n customerContactPreferencesWsDTO,\r\n customerWsDTO,\r\n declinedReasonWsDTO,\r\n deviceOptionsWsDTO,\r\n equipmentDetailsWsDTO,\r\n equipmentOptionsWsDTO,\r\n flatServiceOrder,\r\n groundingDetailsWsDTO,\r\n nameValuePair,\r\n orderCostTimeDetailsWsDTO,\r\n priceWsDTO,\r\n resolutionDetailsWsDTO,\r\n serviceAddressWsDTO,\r\n serviceOrder,\r\n serviceRequestRepairType,\r\n serviceRequestResolutionType,\r\n user,\r\n workOrderResolutionType,\r\n };\r\n});\r\n","/* eslint-disable new-cap */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable id-length */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable max-len */\r\napp.factory(\r\n 'FPDataModelsDTOService',\r\n (\r\n FPAssetService,\r\n FPDataModelsConfigService,\r\n FPDateHelperService,\r\n FPGenericHelperService,\r\n sessionStorageService,\r\n ) => {\r\n // Global Vars\r\n\r\n const isInValidString = function(value) {\r\n if (!value || value === '') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const deserializeServiceOrder = function(jsonObj, mergeFromStorage = true) {\r\n let serviceOrder = null;\r\n const sessionServiceOrder = sessionStorageService.get(\r\n FPAssetService.storageKeys.currentServiceOrder,\r\n );\r\n\r\n if (mergeFromStorage) {\r\n serviceOrder = _.merge({}, sessionServiceOrder, jsonObj);\r\n } else {\r\n serviceOrder = jsonObj;\r\n }\r\n\r\n if (typeof jsonObj.soStatus === 'object') {\r\n serviceOrder.soStatus = jsonObj.soStatus;\r\n } else {\r\n const soStatusName = FPAssetService.status[jsonObj.soStatus].value;\r\n serviceOrder.soStatus = {\r\n name: soStatusName,\r\n code: jsonObj.soStatus,\r\n };\r\n }\r\n\r\n if (typeof jsonObj.soType === 'object') {\r\n serviceOrder.soType = jsonObj.soType;\r\n } else {\r\n serviceOrder.soType = {\r\n name: jsonObj.soTypeName,\r\n code: jsonObj.soType,\r\n };\r\n }\r\n\r\n if (typeof jsonObj.program === 'object') {\r\n serviceOrder.program = jsonObj.program;\r\n } else {\r\n serviceOrder.program = {\r\n name: jsonObj.programName,\r\n code: jsonObj.program,\r\n };\r\n }\r\n\r\n return serviceOrder;\r\n };\r\n\r\n const patchInstallation = function(jsonObj) {\r\n const definedObj = {\r\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\r\n assignedTechnician: {\r\n cdpId: jsonObj.assignedTechnician.cdpId,\r\n },\r\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\r\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\r\n customerContactHistory: {\r\n noOfContactAttempts:\r\n jsonObj.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDate: FPDateHelperService.concatDate(\r\n jsonObj.customerContactHistory.firstAttemptDateDukeCalendar,\r\n jsonObj.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n contactComments: isInValidString(\r\n jsonObj.customerContactHistory.contactComments,\r\n )\r\n ? null\r\n : jsonObj.customerContactHistory.contactComments,\r\n surveyReceivedByCustomer:\r\n jsonObj.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n customerContactPreferences: {\r\n preferredEmailAddress: isInValidString(\r\n jsonObj.customerContactPreferences.preferredEmailAddress,\r\n )\r\n ? null\r\n : jsonObj.customerContactPreferences.preferredEmailAddress,\r\n notifyCustomerWhenInRoute:\r\n jsonObj.customerContactPreferences.notifyCustomerWhenInRoute,\r\n },\r\n descriptionOfWorkQtyParts: isInValidString(\r\n jsonObj.descriptionOfWorkQtyParts,\r\n )\r\n ? null\r\n : jsonObj.descriptionOfWorkQtyParts,\r\n equipmentDetails: {\r\n deviceCode: isInValidString(jsonObj.equipmentDetails.deviceCode)\r\n ? null\r\n : jsonObj.equipmentDetails.deviceCode,\r\n deviceName: isInValidString(jsonObj.equipmentDetails.deviceName)\r\n ? null\r\n : jsonObj.equipmentDetails.deviceName,\r\n deviceSerialNumber: isInValidString(\r\n jsonObj.equipmentDetails.deviceSerialNumber,\r\n )\r\n ? null\r\n : jsonObj.equipmentDetails.deviceSerialNumber,\r\n },\r\n groundingDetails: {\r\n singlePointGrounding: jsonObj.groundingDetails.singlePointGrounding,\r\n groundingRepairsNeeded:\r\n jsonObj.groundingDetails.groundingRepairsNeeded,\r\n },\r\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\r\n orderCostTimeDetails: {\r\n tripFee: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value),\r\n },\r\n laborCost: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value),\r\n },\r\n materialCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.materialCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value),\r\n },\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: jsonObj.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDate: FPDateHelperService.concatDate(\r\n jsonObj.resolutionDetails.resolutionDateDukeCalendar,\r\n '00:00',\r\n ),\r\n },\r\n rescheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledEndDateHour,\r\n ),\r\n rescheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledStartDateHour,\r\n ),\r\n returnTripRequired: jsonObj.returnTripRequired,\r\n serviceAddress: {\r\n state: '',\r\n meterNumber: [\r\n {\r\n meterId: isInValidString(jsonObj.serviceAddress.meterNumber)\r\n ? null\r\n : jsonObj.serviceAddress.meterNumber[0].meterId,\r\n },\r\n ],\r\n },\r\n scheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledEndDateHour,\r\n ),\r\n scheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledStartDateHour,\r\n ),\r\n serviceOrderId: jsonObj.serviceOrderId,\r\n soStatus: {\r\n code: FPGenericHelperService.getStatusCode(jsonObj),\r\n },\r\n };\r\n\r\n return definedObj;\r\n };\r\n\r\n const patchInspectReplace = function(jsonObj) {\r\n const definedObj = {\r\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\r\n assignedTechnician: {\r\n cdpId: jsonObj.assignedTechnician.cdpId,\r\n },\r\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\r\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\r\n customerContactHistory: {\r\n noOfContactAttempts:\r\n jsonObj.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDate: FPDateHelperService.concatDate(\r\n jsonObj.customerContactHistory.firstAttemptDateDukeCalendar,\r\n jsonObj.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n contactComments:\r\n jsonObj.customerContactHistory.contactComments === ''\r\n ? null\r\n : jsonObj.customerContactHistory.contactComments,\r\n surveyReceivedByCustomer:\r\n jsonObj.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n customerContactPreferences: {\r\n preferredEmailAddress:\r\n jsonObj.customerContactPreferences.preferredEmailAddress === ''\r\n ? null\r\n : jsonObj.customerContactPreferences.preferredEmailAddress,\r\n notifyCustomerWhenInRoute:\r\n jsonObj.customerContactPreferences.notifyCustomerWhenInRoute,\r\n },\r\n descriptionOfWorkQtyParts:\r\n jsonObj.descriptionOfWorkQtyParts === ''\r\n ? null\r\n : jsonObj.descriptionOfWorkQtyParts,\r\n equipmentDetails: {\r\n deviceName:\r\n jsonObj.equipmentDetails.deviceName === ''\r\n ? null\r\n : jsonObj.equipmentDetails.deviceName,\r\n deviceSerialNumber:\r\n jsonObj.equipmentDetails.deviceSerialNumber === ''\r\n ? null\r\n : jsonObj.equipmentDetails.deviceSerialNumber,\r\n deviceOperational: jsonObj.equipmentDetails.deviceOperational,\r\n replacementNeeded: jsonObj.equipmentDetails.replacementNeeded,\r\n replacementDeviceName:\r\n jsonObj.equipmentDetails.replacementDeviceName === ''\r\n ? null\r\n : jsonObj.equipmentDetails.replacementDeviceName,\r\n replacementDeviceSerialNo:\r\n jsonObj.equipmentDetails.replacementDeviceSerialNo === ''\r\n ? null\r\n : jsonObj.equipmentDetails.replacementDeviceSerialNo,\r\n },\r\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\r\n orderCostTimeDetails: {\r\n tripFee: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value),\r\n },\r\n laborCost: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value),\r\n },\r\n materialCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.materialCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value),\r\n },\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: jsonObj.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDate: FPDateHelperService.concatDate(\r\n jsonObj.resolutionDetails.resolutionDateDukeCalendar,\r\n '00:00',\r\n ),\r\n },\r\n rescheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledEndDateHour,\r\n ),\r\n rescheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledStartDateHour,\r\n ),\r\n returnTripRequired: jsonObj.returnTripRequired,\r\n scheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledEndDateHour,\r\n ),\r\n scheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledStartDateHour,\r\n ),\r\n serviceOrderId: jsonObj.serviceOrderId,\r\n soStatus: {\r\n code: FPGenericHelperService.getStatusCode(jsonObj),\r\n },\r\n };\r\n\r\n return definedObj;\r\n };\r\n\r\n const patchRemoval = function(jsonObj) {\r\n const definedObj = {\r\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\r\n assignedTechnician: {\r\n cdpId: jsonObj.assignedTechnician.cdpId,\r\n },\r\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\r\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\r\n customerContactHistory: {\r\n noOfContactAttempts:\r\n jsonObj.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDate: FPDateHelperService.concatDate(\r\n jsonObj.customerContactHistory.firstAttemptDateDukeCalendar,\r\n jsonObj.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n contactComments: isInValidString(\r\n jsonObj.customerContactHistory.contactComments,\r\n )\r\n ? null\r\n : jsonObj.customerContactHistory.contactComments,\r\n surveyReceivedByCustomer:\r\n jsonObj.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n customerContactPreferences: {\r\n preferredEmailAddress: isInValidString(\r\n jsonObj.customerContactPreferences.preferredEmailAddress,\r\n )\r\n ? null\r\n : jsonObj.customerContactPreferences.preferredEmailAddress,\r\n notifyCustomerWhenInRoute:\r\n jsonObj.customerContactPreferences.notifyCustomerWhenInRoute,\r\n },\r\n descriptionOfWorkQtyParts: isInValidString(\r\n jsonObj.descriptionOfWorkQtyParts,\r\n )\r\n ? null\r\n : jsonObj.descriptionOfWorkQtyParts,\r\n equipmentDetails: {\r\n deviceName: isInValidString(jsonObj.equipmentDetails.deviceName)\r\n ? null\r\n : jsonObj.equipmentDetails.deviceName,\r\n deviceSerialNumber: isInValidString(\r\n jsonObj.equipmentDetails.deviceSerialNumber,\r\n )\r\n ? null\r\n : jsonObj.equipmentDetails.deviceSerialNumber,\r\n deviceOperational: jsonObj.equipmentDetails.deviceOperational,\r\n },\r\n groundingDetails: {\r\n singlePointGrounding: jsonObj.groundingDetails.singlePointGrounding,\r\n groundingRepairsNeeded:\r\n jsonObj.groundingDetails.groundingRepairsNeeded,\r\n },\r\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\r\n orderCostTimeDetails: {\r\n tripFee: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value),\r\n },\r\n laborCost: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.laborCost.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.laborCost.value),\r\n },\r\n materialCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.materialCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.materialCost.value),\r\n },\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: jsonObj.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDate: FPDateHelperService.concatDate(\r\n jsonObj.resolutionDetails.resolutionDateDukeCalendar,\r\n '00:00',\r\n ),\r\n },\r\n rescheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledEndDateHour,\r\n ),\r\n rescheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledStartDateHour,\r\n ),\r\n returnTripRequired: jsonObj.returnTripRequired,\r\n scheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledEndDateHour,\r\n ),\r\n scheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledStartDateHour,\r\n ),\r\n serviceOrderId: jsonObj.serviceOrderId,\r\n soStatus: {\r\n code: FPGenericHelperService.getStatusCode(jsonObj),\r\n },\r\n };\r\n\r\n return definedObj;\r\n };\r\n\r\n const patchServiceRequest = function(jsonObj) {\r\n const definedObj = {\r\n assignedOtherTechnician: jsonObj.assignedOtherTechnician,\r\n assignedTechnician: {\r\n cdpId: jsonObj.assignedTechnician.cdpId,\r\n },\r\n contractorInvoiceNumber: jsonObj.contractorInvoiceNumber,\r\n contractorInternalRefNumber: jsonObj.internalInvoiceNumber,\r\n customerContactHistory: {\r\n noOfContactAttempts:\r\n jsonObj.customerContactHistory.noOfContactAttempts,\r\n firstAttemptDate: FPDateHelperService.concatDate(\r\n jsonObj.customerContactHistory.firstAttemptDateDukeCalendar,\r\n jsonObj.customerContactHistory.firstAttemptDateHour,\r\n ),\r\n contactComments: isInValidString(\r\n jsonObj.customerContactHistory.contactComments,\r\n )\r\n ? null\r\n : jsonObj.customerContactHistory.contactComments,\r\n surveyReceivedByCustomer:\r\n jsonObj.customerContactHistory.surveyReceivedByCustomer,\r\n },\r\n customerContactPreferences: {\r\n preferredEmailAddress: isInValidString(\r\n jsonObj.customerContactPreferences.preferredEmailAddress,\r\n )\r\n ? null\r\n : jsonObj.customerContactPreferences.preferredEmailAddress,\r\n notifyCustomerWhenInRoute:\r\n jsonObj.customerContactPreferences.notifyCustomerWhenInRoute,\r\n },\r\n descriptionOfWorkQtyPartsCovered: isInValidString(\r\n jsonObj.descriptionOfWorkQtyPartsCovered,\r\n )\r\n ? null\r\n : jsonObj.descriptionOfWorkQtyPartsCovered,\r\n descriptionOfWorkQtyPartsNonCovered: isInValidString(\r\n jsonObj.descriptionOfWorkQtyPartsNonCovered,\r\n )\r\n ? null\r\n : jsonObj.descriptionOfWorkQtyPartsNonCovered,\r\n multipleTechnicianRequired: jsonObj.multipleTechnicianRequired,\r\n orderCostTimeDetails: {\r\n tripFee: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.tripFee.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.tripFee.value),\r\n },\r\n regularLaborCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.regularLaborCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.regularLaborCost.value),\r\n },\r\n regularLaborHours: isInValidString(\r\n jsonObj.orderCostTimeDetails.regularLaborHours,\r\n )\r\n ? 0\r\n : parseFloat(jsonObj.orderCostTimeDetails.regularLaborHours),\r\n entitlementLaborHours: isInValidString(\r\n jsonObj.orderCostTimeDetails.entitlementLaborHours,\r\n )\r\n ? 0\r\n : parseFloat(jsonObj.orderCostTimeDetails.entitlementLaborHours),\r\n entitlementLaborCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.entitlementLaborCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(\r\n jsonObj.orderCostTimeDetails.entitlementLaborCost.value,\r\n ),\r\n },\r\n partsCost: {\r\n value: isInValidString(jsonObj.orderCostTimeDetails.partsCost.value)\r\n ? 0.0\r\n : parseFloat(jsonObj.orderCostTimeDetails.partsCost.value),\r\n },\r\n totalLaborPartsCoveredCost: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.totalLaborPartsCoveredCost.value,\r\n )\r\n ? 0.0\r\n : parseFloat(\r\n jsonObj.orderCostTimeDetails.totalLaborPartsCoveredCost.value,\r\n ),\r\n },\r\n laborCostNotCovered: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.laborCostNotCovered.value,\r\n )\r\n ? 0.0\r\n : parseFloat(\r\n jsonObj.orderCostTimeDetails.laborCostNotCovered.value,\r\n ),\r\n },\r\n partsCostNotCovered: {\r\n value: isInValidString(\r\n jsonObj.orderCostTimeDetails.partsCostNotCovered.value,\r\n )\r\n ? 0.0\r\n : parseFloat(\r\n jsonObj.orderCostTimeDetails.partsCostNotCovered.value,\r\n ),\r\n },\r\n },\r\n repairType: {\r\n code: jsonObj.repairType.code,\r\n },\r\n resolutionDetails: {\r\n resolutionType: {\r\n code: jsonObj.resolutionDetails.resolutionType.code,\r\n },\r\n resolutionDate: FPDateHelperService.concatDate(\r\n jsonObj.resolutionDetails.resolutionDateDukeCalendar,\r\n '00:00',\r\n ),\r\n },\r\n rescheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledEndDateHour,\r\n ),\r\n rescheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.rescheduledStartDateDukeCalendar,\r\n jsonObj.rescheduledStartDateHour,\r\n ),\r\n returnTripRequired: jsonObj.returnTripRequired,\r\n scheduledEndDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledEndDateHour,\r\n ),\r\n scheduledStartDate: FPDateHelperService.concatDate(\r\n jsonObj.scheduledStartDateDukeCalendar,\r\n jsonObj.scheduledStartDateHour,\r\n ),\r\n serviceOrderId: jsonObj.serviceOrderId,\r\n soStatus: {\r\n code: FPGenericHelperService.getStatusCode(jsonObj),\r\n },\r\n };\r\n\r\n return definedObj;\r\n };\r\n\r\n const patchWrapper = function(collection) {\r\n const patchRequest = {\r\n serviceOrders: collection,\r\n };\r\n\r\n return patchRequest;\r\n };\r\n\r\n const transformServiceOrder = function(so) {\r\n if (\r\n typeof so.assignedTechnician !== 'object' ||\r\n !so.assignedTechnician.hasOwnProperty('name')\r\n ) {\r\n so.assignedTechnician = new FPDataModelsConfigService.user(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.cancelledReason !== 'object' ||\r\n !so.cancelledReason.hasOwnProperty('cancelledReasonType')\r\n ) {\r\n const cancelledReasonType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.cancelledReason = new FPDataModelsConfigService.cancelledReasonWsDTO(\r\n cancelledReasonType,\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customer !== 'object' ||\r\n !so.customer.hasOwnProperty('name')\r\n ) {\r\n so.customer = new FPDataModelsConfigService.customerWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customerContactHistory !== 'object' ||\r\n !so.customerContactHistory.hasOwnProperty('firstAttemptDate')\r\n ) {\r\n so.customerContactHistory = new FPDataModelsConfigService.customerContactHistoryDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customerContactPreferences !== 'object' ||\r\n !so.customerContactPreferences.hasOwnProperty('bestTimeToCall')\r\n ) {\r\n so.customerContactPreferences = new FPDataModelsConfigService.customerContactPreferencesWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.declinedReason !== 'object' ||\r\n !so.declinedReason.hasOwnProperty('declineReasonType')\r\n ) {\r\n const declinedReasonType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.declinedReason = new FPDataModelsConfigService.declinedReasonWsDTO(\r\n declinedReasonType,\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.equipmentDetails !== 'object' ||\r\n !so.equipmentDetails.hasOwnProperty('deviceCode')\r\n ) {\r\n so.equipmentDetails = new FPDataModelsConfigService.equipmentDetailsWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.equipmentOptions !== 'object' ||\r\n !so.equipmentOptions.hasOwnProperty('options')\r\n ) {\r\n const options = [];\r\n const deviceOptions = new FPDataModelsConfigService.deviceOptionsWsDTO(\r\n '',\r\n '',\r\n );\r\n options.push(deviceOptions);\r\n so.equipmentOptions = new FPDataModelsConfigService.equipmentOptionsWsDTO(\r\n options,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.groundingDetails !== 'object' ||\r\n !so.groundingDetails.hasOwnProperty('groundingRepairsNeeded')\r\n ) {\r\n so.groundingDetails = new FPDataModelsConfigService.groundingDetailsWsDTO(\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n so.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST\r\n ) {\r\n if (\r\n typeof so.orderCostTimeDetails !== 'object' ||\r\n !so.orderCostTimeDetails.hasOwnProperty('partsCost')\r\n ) {\r\n const entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const partsCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const tripFee = new FPDataModelsConfigService.priceWsDTO(0);\r\n const laborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const materialCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n\r\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(\r\n 0,\r\n entitlementLaborCost,\r\n laborCostNotCovered,\r\n partsCost,\r\n partsCostNotCovered,\r\n 0,\r\n regularLaborCost,\r\n totalDueFromCustomer,\r\n totalLaborCost,\r\n totalLaborPartsCoveredCost,\r\n tripFee,\r\n laborCost,\r\n materialCost,\r\n totalOrderCost,\r\n );\r\n }\r\n } else if (\r\n typeof so.orderCostTimeDetails !== 'object' ||\r\n !so.orderCostTimeDetails.hasOwnProperty('materialCost')\r\n ) {\r\n const entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\r\n const partsCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(0);\r\n const regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const tripFee = new FPDataModelsConfigService.priceWsDTO(0);\r\n const laborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const materialCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n\r\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(\r\n 0,\r\n entitlementLaborCost,\r\n laborCostNotCovered,\r\n partsCost,\r\n partsCostNotCovered,\r\n 0,\r\n regularLaborCost,\r\n totalDueFromCustomer,\r\n totalLaborCost,\r\n totalLaborPartsCoveredCost,\r\n tripFee,\r\n laborCost,\r\n materialCost,\r\n totalOrderCost,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.program !== 'object' ||\r\n !so.program.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.program = new FPDataModelsConfigService.codeNamePair(\r\n so.program,\r\n so.programName,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.programAnnualCoverageLimit !== 'object' ||\r\n !so.programAnnualCoverageLimit.hasOwnProperty('value')\r\n ) {\r\n so.programAnnualCoverageLimit = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.programEntitlementBalance !== 'object' ||\r\n !so.programEntitlementBalance.hasOwnProperty('value')\r\n ) {\r\n so.programEntitlementBalance = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.repairType !== 'object' ||\r\n !so.repairType.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.repairType = new FPDataModelsConfigService.codeNamePair('', '');\r\n }\r\n\r\n if (\r\n typeof so.resolutionDetails !== 'object' ||\r\n !so.resolutionDetails.hasOwnProperty('resolutionType')\r\n ) {\r\n const resolutionType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.resolutionDetails = new FPDataModelsConfigService.resolutionDetailsWsDTO(\r\n resolutionType,\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.serviceAddress !== 'object' ||\r\n !so.serviceAddress.hasOwnProperty('city')\r\n ) {\r\n so.serviceAddress = new FPDataModelsConfigService.serviceAddressWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.serviceOrderBalance !== 'object' ||\r\n !so.serviceOrderBalance.hasOwnProperty('value')\r\n ) {\r\n so.serviceOrderBalance = new FPDataModelsConfigService.priceWsDTO(0);\r\n }\r\n\r\n if (\r\n typeof so.soStatus !== 'object' ||\r\n !so.soStatus.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.soStatus = new FPDataModelsConfigService.codeNamePair(\r\n so.soStatus,\r\n so.soStatusName,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.soType !== 'object' ||\r\n !so.soType.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.soType = new FPDataModelsConfigService.codeNamePair(\r\n so.soType,\r\n so.soTypeName,\r\n );\r\n }\r\n\r\n const newServiceOrder = new FPDataModelsConfigService.serviceOrder(\r\n so.assignedOtherTechnician,\r\n so.assignedTechnician,\r\n so.cancelledReason,\r\n so.contactName,\r\n so.contractorInternalRefNumber,\r\n so.contractorInvoiceNumber,\r\n so.createdDate,\r\n so.customer,\r\n so.customerContactHistory,\r\n so.customerContactPreferences,\r\n so.declinedReason,\r\n so.descriptionOfWorkQtyParts,\r\n so.descriptionOfWorkQtyPartsCovered,\r\n so.descriptionOfWorkQtyPartsNonCovered,\r\n so.dukeInvoiceNumber,\r\n so.equipmentDetails,\r\n so.equipmentOptions,\r\n so.groundingDetails,\r\n so.invoiceReceivedDate,\r\n so.isRushOrder,\r\n so.lastModifiedDate,\r\n so.multipleTechnicianRequired,\r\n so.orderCostTimeDetails,\r\n so.program,\r\n so.programAnnualCoverageLimit,\r\n so.programEntitlementBalance,\r\n so.repairType,\r\n so.rescheduledEndDate,\r\n so.rescheduledStartDate,\r\n so.resolutionDetails,\r\n so.returnTripRequired,\r\n so.scheduledEndDate,\r\n so.scheduledStartDate,\r\n so.serviceComments,\r\n so.serviceOrderBalance,\r\n so.serviceOrderId,\r\n so.soStatus,\r\n so.soType,\r\n so.woorSR,\r\n so.serviceAddress,\r\n so.soDbStatus,\r\n so.toggleFlag,\r\n );\r\n\r\n return newServiceOrder;\r\n };\r\n\r\n const transformServiceOrders = function(serviceOrders, toggleFlag) {\r\n const dataSet = [];\r\n const soToggleFlag = sessionStorageService.get(toggleFlag);\r\n\r\n // const allUsers = sessionStorageService.get(FPAssetService.storageKeys.widgetsData.users);\r\n _.forEach(serviceOrders, so => {\r\n if (\r\n typeof so.assignedTechnician !== 'object' ||\r\n !so.assignedTechnician.hasOwnProperty('name')\r\n ) {\r\n so.assignedTechnician = new FPDataModelsConfigService.user(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.cancelledReason !== 'object' ||\r\n !so.cancelledReason.hasOwnProperty('cancelledReasonType')\r\n ) {\r\n const cancelledReasonType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.cancelledReason = new FPDataModelsConfigService.cancelledReasonWsDTO(\r\n cancelledReasonType,\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customer !== 'object' ||\r\n !so.customer.hasOwnProperty('name')\r\n ) {\r\n so.customer = new FPDataModelsConfigService.customerWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customerContactHistory !== 'object' ||\r\n !so.customerContactHistory.hasOwnProperty('firstAttemptDate')\r\n ) {\r\n so.customerContactHistory = new FPDataModelsConfigService.customerContactHistoryDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.customerContactPreferences !== 'object' ||\r\n !so.customerContactPreferences.hasOwnProperty('bestTimeToCall')\r\n ) {\r\n so.customerContactPreferences = new FPDataModelsConfigService.customerContactPreferencesWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.declinedReason !== 'object' ||\r\n !so.declinedReason.hasOwnProperty('declineReasonType')\r\n ) {\r\n const declinedReasonType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.declinedReason = new FPDataModelsConfigService.declinedReasonWsDTO(\r\n declinedReasonType,\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.equipmentDetails !== 'object' ||\r\n !so.equipmentDetails.hasOwnProperty('deviceCode')\r\n ) {\r\n so.equipmentDetails = new FPDataModelsConfigService.equipmentDetailsWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.equipmentOptions !== 'object' ||\r\n !so.equipmentOptions.hasOwnProperty('options')\r\n ) {\r\n const options = [];\r\n const deviceOptions = new FPDataModelsConfigService.deviceOptionsWsDTO(\r\n '',\r\n '',\r\n );\r\n options.push(deviceOptions);\r\n so.equipmentOptions = new FPDataModelsConfigService.equipmentOptionsWsDTO(\r\n options,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.groundingDetails !== 'object' ||\r\n !so.groundingDetails.hasOwnProperty('groundingRepairsNeeded')\r\n ) {\r\n so.groundingDetails = new FPDataModelsConfigService.groundingDetailsWsDTO(\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n so.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST\r\n ) {\r\n if (\r\n typeof so.orderCostTimeDetails !== 'object' ||\r\n !so.orderCostTimeDetails.hasOwnProperty('partsCost')\r\n ) {\r\n const entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const partsCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const regularLaborCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const tripFee = new FPDataModelsConfigService.priceWsDTO(0);\r\n const laborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const materialCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n\r\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(\r\n 0,\r\n entitlementLaborCost,\r\n laborCostNotCovered,\r\n partsCost,\r\n partsCostNotCovered,\r\n 0,\r\n regularLaborCost,\r\n totalDueFromCustomer,\r\n totalLaborCost,\r\n totalLaborPartsCoveredCost,\r\n tripFee,\r\n laborCost,\r\n materialCost,\r\n totalOrderCost,\r\n );\r\n }\r\n } else if (\r\n typeof so.orderCostTimeDetails !== 'object' ||\r\n !so.orderCostTimeDetails.hasOwnProperty('materialCost')\r\n ) {\r\n const entitlementLaborCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const laborCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const partsCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const partsCostNotCovered = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const regularLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalDueFromCustomer = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const totalLaborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalLaborPartsCoveredCost = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n const tripFee = new FPDataModelsConfigService.priceWsDTO(0);\r\n const laborCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const materialCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n const totalOrderCost = new FPDataModelsConfigService.priceWsDTO(0);\r\n\r\n so.orderCostTimeDetails = new FPDataModelsConfigService.orderCostTimeDetailsWsDTO(\r\n 0,\r\n entitlementLaborCost,\r\n laborCostNotCovered,\r\n partsCost,\r\n partsCostNotCovered,\r\n 0,\r\n regularLaborCost,\r\n totalDueFromCustomer,\r\n totalLaborCost,\r\n totalLaborPartsCoveredCost,\r\n tripFee,\r\n laborCost,\r\n materialCost,\r\n totalOrderCost,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.program !== 'object' ||\r\n !so.program.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.program = new FPDataModelsConfigService.codeNamePair('', '');\r\n }\r\n\r\n if (\r\n typeof so.programAnnualCoverageLimit !== 'object' ||\r\n !so.programAnnualCoverageLimit.hasOwnProperty('value')\r\n ) {\r\n so.programAnnualCoverageLimit = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.programEntitlementBalance !== 'object' ||\r\n !so.programEntitlementBalance.hasOwnProperty('value')\r\n ) {\r\n so.programEntitlementBalance = new FPDataModelsConfigService.priceWsDTO(\r\n 0,\r\n );\r\n }\r\n\r\n if (\r\n typeof so.repairType !== 'object' ||\r\n !so.repairType.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.repairType = new FPDataModelsConfigService.codeNamePair('', '');\r\n }\r\n\r\n if (\r\n typeof so.resolutionDetails !== 'object' ||\r\n !so.resolutionDetails.hasOwnProperty('resolutionType')\r\n ) {\r\n const resolutionType = new FPDataModelsConfigService.codeNamePair(\r\n '',\r\n '',\r\n );\r\n so.resolutionDetails = new FPDataModelsConfigService.resolutionDetailsWsDTO(\r\n resolutionType,\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.serviceAddress !== 'object' ||\r\n !so.serviceAddress.hasOwnProperty('city')\r\n ) {\r\n so.serviceAddress = new FPDataModelsConfigService.serviceAddressWsDTO(\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n );\r\n }\r\n\r\n if (\r\n typeof so.serviceOrderBalance !== 'object' ||\r\n !so.serviceOrderBalance.hasOwnProperty('value')\r\n ) {\r\n so.serviceOrderBalance = new FPDataModelsConfigService.priceWsDTO(0);\r\n }\r\n\r\n if (\r\n typeof so.soStatus !== 'object' ||\r\n !so.soStatus.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.soStatus = new FPDataModelsConfigService.codeNamePair('', '');\r\n }\r\n\r\n if (\r\n typeof so.soType !== 'object' ||\r\n !so.soType.hasOwnProperty('name') ||\r\n !so.program.hasOwnProperty('code')\r\n ) {\r\n so.soType = new FPDataModelsConfigService.codeNamePair('', '');\r\n }\r\n\r\n const newServiceOrder = new FPDataModelsConfigService.flatServiceOrder(\r\n so.assignedOtherTechnician,\r\n so.assignedTechnician,\r\n so.cancelledReason,\r\n so.contactName,\r\n so.contractorInternalRefNumber,\r\n so.contractorInvoiceNumber,\r\n so.createdDate,\r\n so.customer,\r\n so.customerContactHistory,\r\n so.customerContactPreferences,\r\n so.declinedReason,\r\n so.descriptionOfWorkQtyParts,\r\n so.descriptionOfWorkQtyPartsCovered,\r\n so.descriptionOfWorkQtyPartsNonCovered,\r\n so.dukeInvoiceNumber,\r\n so.equipmentDetails,\r\n so.equipmentOptions,\r\n so.groundingDetails,\r\n so.invoiceReceivedDate,\r\n so.isRushOrder,\r\n so.lastModifiedDate,\r\n so.multipleTechnicianRequired,\r\n so.orderCostTimeDetails,\r\n so.program,\r\n so.programAnnualCoverageLimit,\r\n so.programEntitlementBalance,\r\n so.repairType,\r\n so.rescheduledEndDate,\r\n so.rescheduledStartDate,\r\n so.resolutionDetails,\r\n so.returnTripRequired,\r\n so.scheduledEndDate,\r\n so.scheduledStartDate,\r\n so.serviceComments,\r\n so.serviceOrderBalance,\r\n so.serviceOrderId,\r\n so.soStatus,\r\n so.soType,\r\n so.woorSR,\r\n so.serviceAddress,\r\n so.soDbStatus,\r\n soToggleFlag,\r\n );\r\n\r\n dataSet.push(newServiceOrder);\r\n });\r\n\r\n return dataSet;\r\n };\r\n\r\n const validateFullAddendum = function(jsonObj) {\r\n const definedObj = FPDataModelsConfigService.FullAddendum;\r\n return _.merge({}, definedObj, jsonObj);\r\n };\r\n\r\n return {\r\n deserializeServiceOrder,\r\n patchInstallation,\r\n patchInspectReplace,\r\n patchRemoval,\r\n patchServiceRequest,\r\n patchWrapper,\r\n transformServiceOrder,\r\n transformServiceOrders,\r\n validateFullAddendum,\r\n };\r\n },\r\n);\r\n","/* eslint-disable max-len */\r\n/* eslint-disable id-length */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-undef */\r\n/* eslint-disable vars-on-top */\r\n/* eslint-disable no-var */\r\n/* eslint-disable no-redeclare */\r\n/* eslint-disable block-scoped-var */\r\n/* eslint-disable no-use-before-define */\r\napp.factory('FPDateHelperService', () => {\r\n const addDays = function (date, days) {\r\n const newDate = new Date(date);\r\n newDate.setDate(newDate.getDate() + days);\r\n\r\n return getDateFromFullDate(new Date(newDate));\r\n };\r\n\r\n const addZeroDate = function (number) {\r\n return (number < 10 ? `0${number}` : number);\r\n };\r\n\r\n const concatDate = function (date, time) {\r\n if (date && time) {\r\n // Returns YYYY-MM-DDTHH:MM:SS-05:00\r\n const splittedDate = date.replace(/\\s/g, '').split('/');\r\n const splittedTime = time.replace(/\\s/g, '').split(':');\r\n\r\n const year = splittedDate[2];\r\n const month = splittedDate[0];\r\n var date = splittedDate[1];\r\n\r\n const hour = splittedTime[0];\r\n const minutes = splittedTime[1];\r\n\r\n return `${year}-${month}-${date}T${hour}:${minutes}:00-05:00`;\r\n }\r\n return null;\r\n };\r\n\r\n const conversionToStandardTime = function (value) {\r\n if (!value) { return null; }\r\n return moment(value, 'HH:mm').format('hh:mm a');\r\n };\r\n\r\n const dateConversion = function (value) {\r\n const newValue = `${value}:00`;\r\n return newValue;\r\n };\r\n\r\n var getDateFromFullDate = function (date, defaultValueToReturn) {\r\n if (!date) {\r\n if (!defaultValueToReturn) {\r\n return null;\r\n }\r\n return defaultValueToReturn;\r\n }\r\n\r\n // Returns MM/DD/YYYY format date\r\n const formattedDate = new Date(date);\r\n formattedDate.setHours(formattedDate.getHours() + ((formattedDate.getTimezoneOffset() / 60) - 5));\r\n let dd = formattedDate.getDate();\r\n let mm = formattedDate.getMonth() + 1;\r\n const yyyy = formattedDate.getFullYear();\r\n\r\n dd = addZeroDate(dd);\r\n mm = addZeroDate(mm);\r\n return `${mm}/${dd}/${yyyy}`;\r\n };\r\n\r\n const getHourFromFullDate = function (date, defaultValueToReturn) {\r\n if (!date) {\r\n if (!defaultValueToReturn) {\r\n return null;\r\n }\r\n return defaultValueToReturn;\r\n }\r\n // Returns HH:MM format hour\r\n const formattedDate = new Date(date);\r\n formattedDate.setHours(formattedDate.getHours() + ((formattedDate.getTimezoneOffset() / 60) - 5));\r\n let HH = formattedDate.getHours();\r\n let MM = formattedDate.getMinutes();\r\n\r\n HH = addZeroDate(HH);\r\n MM = addZeroDate(MM);\r\n\r\n return `${HH}:${MM}`;\r\n };\r\n\r\n return {\r\n addDays,\r\n addZeroDate,\r\n concatDate,\r\n conversionToStandardTime,\r\n dateConversion,\r\n getDateFromFullDate,\r\n getHourFromFullDate,\r\n };\r\n});\r\n","app.factory('FPGenericHelperService', FPAssetService => {\r\n // Global Vars\r\n const convertArraytoDukeDropDownValues = function(arrayList) {\r\n const newSet = _.map(arrayList, item => ({\r\n value: item,\r\n text: item,\r\n }));\r\n\r\n return newSet;\r\n };\r\n\r\n const convertArrayToString = function(arrayList, property) {\r\n if (arrayList) {\r\n const stringArray = [];\r\n let stringList = null;\r\n _.forEach(arrayList, item => {\r\n stringArray.push(item[property]);\r\n });\r\n\r\n stringList = stringArray.join(',');\r\n return stringList || null;\r\n }\r\n return null;\r\n };\r\n\r\n const createDropdownList = function(\r\n arraySource,\r\n valueKey = 'value',\r\n textKey = 'text',\r\n ) {\r\n const dropdownList = [];\r\n\r\n if (arraySource.length > 0) {\r\n arraySource.forEach(element => {\r\n dropdownList.push({\r\n value: element[valueKey],\r\n text: element[textKey],\r\n });\r\n });\r\n } else {\r\n dropdownList.push({\r\n value: '',\r\n text: '',\r\n });\r\n }\r\n\r\n return dropdownList;\r\n };\r\n\r\n const formatCurrency = function(value) {\r\n if (value || value === 0) {\r\n const valueAsString = String(value);\r\n const valueAsNumber = Number(valueAsString);\r\n const fixedValue = valueAsNumber.toFixed(2);\r\n return fixedValue;\r\n }\r\n\r\n return '0.00';\r\n };\r\n\r\n const generateIds = function(list) {\r\n const listWithIds = list.map((item, index) => {\r\n const newItem = item;\r\n newItem.id = index;\r\n\r\n return newItem;\r\n });\r\n\r\n return listWithIds;\r\n };\r\n\r\n const generateRandomNumbers = function(size) {\r\n const add = 1;\r\n let max = 12 - add;\r\n\r\n if (size > max) {\r\n return generate(max) + generate(size - max);\r\n }\r\n\r\n max = Math.pow(10, size + add);\r\n const min = max / 10;\r\n const number = Math.floor(Math.random() * (max - min + 1)) + min;\r\n\r\n return `${number}`.substring(add);\r\n };\r\n\r\n const getStatusObject = function(obj) {\r\n const filteredObj = Object.prototype.hasOwnProperty.call(\r\n obj.soStatus,\r\n 'code',\r\n )\r\n ? _.find(\r\n FPAssetService.serviceOrderStatus,\r\n order => order.code.toUpperCase() === obj.soStatus.code.toUpperCase(),\r\n )\r\n : _.find(\r\n FPAssetService.serviceOrderStatus,\r\n order => order.code.toUpperCase() === obj.soStatus.toUpperCase(),\r\n );\r\n\r\n return filteredObj || null;\r\n };\r\n\r\n const getStatusCode = function(obj) {\r\n const filteredObj = Object.prototype.hasOwnProperty.call(\r\n obj.soStatus,\r\n 'code',\r\n )\r\n ? _.find(\r\n FPAssetService.serviceOrderStatus,\r\n order => order.code.toUpperCase() === obj.soStatus.code.toUpperCase(),\r\n )\r\n : _.find(\r\n FPAssetService.serviceOrderStatus,\r\n order => order.code.toUpperCase() === obj.soStatus.toUpperCase(),\r\n );\r\n\r\n return filteredObj ? filteredObj.code : null;\r\n };\r\n\r\n const intersectionObjects2 = function(a, b, areEqualFunction) {\r\n const results = [];\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n let aElement = a[i];\r\n const existsInB = _.some(b, bElement =>\r\n areEqualFunction(bElement, aElement),\r\n );\r\n\r\n if (existsInB) {\r\n results.push(aElement);\r\n }\r\n }\r\n\r\n return results;\r\n };\r\n\r\n const intersectionObjects = function() {\r\n let results = arguments[0];\r\n const lastArgument = arguments[arguments.length - 1];\r\n let arrayCount = arguments.length;\r\n let areEqualFunction = _.isEqual;\r\n\r\n if (typeof lastArgument === 'function') {\r\n areEqualFunction = lastArgument;\r\n arrayCount--;\r\n }\r\n\r\n for (let i = 1; i < arrayCount; i++) {\r\n const array = arguments[i];\r\n results = intersectionObjects2(results, array, areEqualFunction);\r\n if (results.length === 0) break;\r\n }\r\n\r\n return results;\r\n };\r\n\r\n const setSelectedProp = function(list, propToSearch, propValueToSearch) {\r\n const newList = angular.copy(list);\r\n const itemIndex = _.findIndex(\r\n newList,\r\n props => props[propToSearch] === propValueToSearch,\r\n );\r\n if (itemIndex != -1) {\r\n newList[itemIndex].selected = true;\r\n\r\n return newList;\r\n }\r\n\r\n return newList;\r\n };\r\n\r\n const telFormat = function(tel) {\r\n const regexObj = /^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;\r\n if (regexObj.test(tel)) {\r\n const parts = tel.match(regexObj);\r\n let phone = '';\r\n if (parts[1]) {\r\n phone += `(${parts[1]}) `;\r\n }\r\n\r\n phone += `${parts[2]}-${parts[3]}`;\r\n return phone;\r\n }\r\n // invalid phone number\r\n return tel;\r\n };\r\n\r\n const printValueFromArrayPositionKey = function(key, array, position) {\r\n if (!Array.isArray(array)) {\r\n return '';\r\n }\r\n\r\n return array[position] ? array[position][key] : '';\r\n };\r\n\r\n const printValueFromObjectKey = function(key, obj) {\r\n if (\r\n obj === Object(obj) &&\r\n Object.prototype.toString.call(obj) !== '[object Array]'\r\n ) {\r\n return obj[key] ? obj[key] : '';\r\n }\r\n return '';\r\n };\r\n\r\n return {\r\n convertArraytoDukeDropDownValues,\r\n convertArrayToString,\r\n createDropdownList,\r\n formatCurrency,\r\n generateIds,\r\n generateRandomNumbers,\r\n getStatusObject,\r\n getStatusCode,\r\n intersectionObjects,\r\n setSelectedProp,\r\n telFormat,\r\n printValueFromArrayPositionKey,\r\n printValueFromObjectKey,\r\n };\r\n});\r\n","app.factory('FPGroupingPagerService', function(){\r\n // service definition\r\n let _pager = {\r\n totalRows: 0,\r\n currentPage: 0,\r\n pageSizeByRows: 0,\r\n totalPages: 0,\r\n startPage: 0,\r\n endPage: 0,\r\n startRow: 0,\r\n endRow: 0,\r\n pages: 0\r\n };\r\n \r\n // service implementation\r\n let _pagerObj = function (totalRows, currentPage, pageSizeByRows) {\r\n\r\n // default to first page\r\n _pager.currentPage = currentPage || 1;\r\n\r\n // default page size is 12\r\n _pager.pageSizeByRows = pageSizeByRows || 4;\r\n\r\n //default total items\r\n _pager.totalRows = totalRows;\r\n\r\n // calculate total pages\r\n _pager.totalPages = Math.ceil(_pager.totalRows / _pager.pageSizeByRows);\r\n\r\n if (_pager.totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n _pager.startPage = 1;\r\n _pager.endPage = _pager.totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (_pager.currentPage <= 6) {\r\n _pager.startPage = 1;\r\n _pager.endPage = 10;\r\n } else if (_pager.currentPage + 4 >= _pager.totalPages) {\r\n _pager.startPage = _pager.totalPages - 9;\r\n _pager.endPage = _pager.totalPages;\r\n } else {\r\n _pager.startPage = _pager.currentPage - 5;\r\n _pager.endPage = _pager.currentPage + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n _pager.startRow = (_pager.currentPage - 1) * _pager.pageSizeByRows;\r\n _pager.endRow = Math.min(_pager.startRow + _pager.pageSizeByRows - 1, _pager.totalRows - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n _pager.pages = _.range(_pager.startPage, _pager.endPage + 1);\r\n\r\n // return object with all pager properties required by the view\r\n return _pager;\r\n }\r\n\r\n let setPager = function (pager) {\r\n _pager = pager;\r\n }\r\n \r\n let getPager = function () {\r\n return _pager;\r\n }\r\n\r\n let createPager = function(_totalRows, _currentPage, _pageSizeByRows){\r\n let result = _pagerObj(_totalRows, _currentPage, _pageSizeByRows);\r\n return result;\r\n }\r\n\r\n return {\r\n createPager: createPager,\r\n setPager: setPager,\r\n getPager: getPager\r\n };\r\n})","/* eslint-disable no-magic-numbers */\r\n/* eslint-disable consistent-return */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable id-length */\r\n\r\napp.factory('FPIndexedDbDataService', ($q, $log, assetService, FPAssetService, sessionStorageService) => {\r\n let _db = null;\r\n\r\n const ensureDb = function () {\r\n if (_db === null) {\r\n _db = new Dexie('ServiceOrdersDb');\r\n _db.version(1).stores({\r\n companyOverview: 'name,jurisdiction,fieldCoordinator,email,contactNumber,billingAddress,*billingAddress.id',\r\n users: 'cdpId,badgeNumber,effectiveDate,email,name,phone,role,status',\r\n acceptedOrders:\r\n '&serviceOrderId,assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,*contractorInvoiceNumber,createdDate,customer,*customer.name,customerContactHistory,customerContactPreferences,declinedReason,dukeInvoiceNumber,isRushOrder,multipleTechnicianRequired,orderCostTimeDetails,*program,programName,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduleStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceAddress,*serviceAddress.postalCode,serviceComments,serviceOrderBalance,*soStatus,soStatusName,*soType,soTypeName,woorSR,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,equipmentDetails,groundingDetails,toggleFlag',\r\n invoiceOrders:\r\n '&serviceOrderId,assignedOtherTechnician,assignedTechnician,cancelledReason,contactName,*contractorInvoiceNumber,createdDate,customer,*customer.name,customerContactHistory,customerContactPreferences,declinedReason,dukeInvoiceNumber,isRushOrder,multipleTechnicianRequired,orderCostTimeDetails,*program,programName,programAnnualCoverageLimit,programEntitlementBalance,repairType,rescheduledEndDate,rescheduleStartDate,resolutionDetails,returnTripRequired,scheduledEndDate,scheduledStartDate,serviceAddress,*serviceAddress.postalCode,serviceComments,serviceOrderBalance,*soStatus,soStatusName,*soType,soTypeName,woorSR,descriptionOfWorkQtyParts,descriptionOfWorkQtyPartsCovered,descriptionOfWorkQtyPartsNonCovered,equipmentDetails,groundingDetails,toggleFlag',\r\n cancelledReasonTypes: 'code,name',\r\n declinedReasonTypes: 'code,name',\r\n srRepairTypes: 'id,code,name,product',\r\n srResolutionTypes: 'id,code,name,product',\r\n srStatusTypes: 'code,name',\r\n woResolutionTypes: 'id,code,name,woType',\r\n woStatusTypes: 'code,name',\r\n statusTypes: 'code,name',\r\n });\r\n\r\n return $q((resolve, reject) => {\r\n _db.open().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n }\r\n };\r\n\r\n const cleanAcceptedOrders = function () {\r\n const toggleFlag = sessionStorageService.get(FPAssetService.storageKeys.toggleFlags.acceptedOrders) === '1' ? 0 : 1;\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders\r\n .where(FPAssetService.filterCol.toggleFlag)\r\n .equals(toggleFlag)\r\n .delete()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const cleanInvoiceOrders = function () {\r\n const toggleFlag = sessionStorageService.get(FPAssetService.storageKeys.toggleFlags.invoiceOrders) === '1' ? 0 : 1;\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders\r\n .where(FPAssetService.filterCol.toggleFlag)\r\n .equals(toggleFlag)\r\n .delete()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearAcceptedOrders = function () {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearCancelledReasonTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.cancelledReasonTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearCompanyOverview = function () {\r\n return $q((resolve, reject) => {\r\n _db.companyOverview.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearDeclinedReasonTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.declinedReasonTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearInvoiceOrders = function () {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearStatusTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.statusTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearSRResolutionTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.srResolutionTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearSRRepairTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.srRepairTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearSRStatusTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.srStatusTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearUsers = function () {\r\n return $q((resolve, reject) => {\r\n _db.users.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearWOResolutionTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.woResolutionTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const clearWOStatusTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.woStatusTypes.clear().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const deleteAcceptedOrder = function (serviceOrderId) {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders\r\n .delete(serviceOrderId)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const deleteAcceptedOrders = function (serviceOrderIds) {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders\r\n .bulkDelete(serviceOrderIds)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const deleteDb = function () {\r\n return $q((resolve, reject) => {\r\n _db.delete().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const deleteInvoiceOrder = function (serviceOrderId) {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders\r\n .delete(serviceOrderId)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const deleteInvoiceOrders = function (serviceOrderIds) {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders\r\n .bulkDelete(serviceOrderIds)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const filterInvoiceOrders = function (filterCol, filterList) {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders\r\n .where(filterCol)\r\n .anyOfIgnoreCase(filterList)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getAcceptedOrders = function () {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getInvoiceOrders = function () {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getCancelledReasonTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.cancelledReasonTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getCompanyOverview = function () {\r\n return $q((resolve, reject) => {\r\n _db.companyOverview.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getDeclinedReasonTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.declinedReasonTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRRepairTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.srRepairTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRRepairTypesByProduct = function (productFilter) {\r\n return $q((resolve, reject) => {\r\n _db.srRepairTypes\r\n .where(FPAssetService.filterCol.product)\r\n .equals(productFilter)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRResolutionTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.srResolutionTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRResolutionTypesByProduct = function (productFilter) {\r\n return $q((resolve, reject) => {\r\n _db.srResolutionTypes\r\n .where(FPAssetService.filterCol.product)\r\n .equals(productFilter)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRStatusList = function () {\r\n return $q((resolve, reject) => {\r\n _db.srStatusTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getSRStatusByStatusCode = function (statusCode) {\r\n return $q((resolve, reject) => {\r\n _db.srStatusTypes\r\n .where(FPAssetService.filterCol.code)\r\n .equals(statusCode)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getUsers = function () {\r\n return $q((resolve, reject) => {\r\n _db.users.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getWOResolutionTypes = function () {\r\n return $q((resolve, reject) => {\r\n _db.woResolutionTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getWOResolutionTypesByWOType = function (woTypeFilter) {\r\n return $q((resolve, reject) => {\r\n _db.woResolutionTypes\r\n .where(FPAssetService.filterCol.woType)\r\n .equals(woTypeFilter)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getWOStatusByStatusCode = function (statusCode) {\r\n return $q((resolve, reject) => {\r\n _db.woStatusTypes\r\n .where('code')\r\n .equals(statusCode)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getWOStatusList = function () {\r\n return $q((resolve, reject) => {\r\n _db.woStatusTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getStatusList = function () {\r\n return $q((resolve, reject) => {\r\n _db.statusTypes.toArray().then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getStatusByStatusCode = function (statusCode) {\r\n return $q((resolve, reject) => {\r\n _db.statusTypes\r\n .where(FPAssetService.filterCol.code)\r\n .equals(statusCode)\r\n .toArray()\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putCancelledReasonTypes = function (cancelledReasonTypes) {\r\n return $q((resolve, reject) => {\r\n _db.cancelledReasonTypes.bulkPut(cancelledReasonTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putCompanyOverview = function (companyOverview) {\r\n return $q((resolve, reject) => {\r\n _db.companyOverview.bulkPut(companyOverview).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putDeclinedReasonTypes = function (declinedReasonTypes) {\r\n return $q((resolve, reject) => {\r\n _db.declinedReasonTypes.bulkPut(declinedReasonTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putAcceptedOrder = function (serviceOrder) {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders.put(serviceOrder).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putAcceptedOrders = function (serviceOrders) {\r\n return $q((resolve, reject) => {\r\n _db.acceptedOrders.bulkPut(serviceOrders).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putInvoiceOrder = function (serviceOrder) {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders.put(serviceOrder).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putInvoiceOrders = function (serviceOrders) {\r\n return $q((resolve, reject) => {\r\n _db.invoiceOrders.bulkPut(serviceOrders).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putSRRepairTypes = function (srRepairTypes) {\r\n return $q((resolve, reject) => {\r\n _db.srRepairTypes.bulkPut(srRepairTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putSRResolutionTypes = function (srResolutionTypes) {\r\n return $q((resolve, reject) => {\r\n _db.srResolutionTypes.bulkPut(srResolutionTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putSRStatusTypes = function (srStatusTypes) {\r\n return $q((resolve, reject) => {\r\n _db.srStatusTypes.bulkPut(srStatusTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putUsers = function (users) {\r\n return $q((resolve, reject) => {\r\n _db.users.bulkPut(users).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putWOResolutionTypes = function (woResolutionTypes) {\r\n return $q((resolve, reject) => {\r\n _db.woResolutionTypes.bulkPut(woResolutionTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putWOStatusTypes = function (woStatusTypes) {\r\n return $q((resolve, reject) => {\r\n _db.woStatusTypes.bulkPut(woStatusTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putStatusTypes = function (statusTypes) {\r\n return $q((resolve, reject) => {\r\n _db.statusTypes.bulkPut(statusTypes).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n reject(error);\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n ensureDb,\r\n cleanAcceptedOrders,\r\n cleanInvoiceOrders,\r\n clearAcceptedOrders,\r\n clearCancelledReasonTypes,\r\n clearCompanyOverview,\r\n clearDeclinedReasonTypes,\r\n clearInvoiceOrders,\r\n clearStatusTypes,\r\n clearSRResolutionTypes,\r\n clearSRRepairTypes,\r\n clearSRStatusTypes,\r\n clearUsers,\r\n clearWOResolutionTypes,\r\n clearWOStatusTypes,\r\n deleteAcceptedOrder,\r\n deleteAcceptedOrders,\r\n deleteDb,\r\n deleteInvoiceOrder,\r\n deleteInvoiceOrders,\r\n filterInvoiceOrders,\r\n getAcceptedOrders,\r\n getInvoiceOrders,\r\n getCancelledReasonTypes,\r\n getCompanyOverview,\r\n getDeclinedReasonTypes,\r\n getSRRepairTypes,\r\n getSRRepairTypesByProduct,\r\n getSRResolutionTypes,\r\n getSRResolutionTypesByProduct,\r\n getStatusByStatusCode,\r\n getSRStatusByStatusCode,\r\n getSRStatusList,\r\n getUsers,\r\n getWOResolutionTypes,\r\n getWOResolutionTypesByWOType,\r\n getWOStatusList,\r\n getWOStatusByStatusCode,\r\n getStatusList,\r\n putAcceptedOrder,\r\n putAcceptedOrders,\r\n putCancelledReasonTypes,\r\n putCompanyOverview,\r\n putDeclinedReasonTypes,\r\n putInvoiceOrder,\r\n putInvoiceOrders,\r\n putSRRepairTypes,\r\n putSRResolutionTypes,\r\n putSRStatusTypes,\r\n putUsers,\r\n putWOResolutionTypes,\r\n putWOStatusTypes,\r\n putStatusTypes,\r\n };\r\n});\r\n","app.factory('FPInviteUserFactory', function ($q, FPAssetService, apiService) {\r\n\r\n let getServiceUser = function(url){\r\n return $q(function (resolve, reject) {\r\n apiService.getDataAsync(url,'',false).then(\r\n function (result) {\r\n resolve(result);\r\n },\r\n function (error) {\r\n if(error.hasOwnProperty('data')){\r\n if(error.data.hasOwnProperty('fault')){\r\n reject({reason: error.data.fault.detail.errorcode,message: error.data.fault.faultstring,status: error.status});\r\n }else{\r\n reject({reason: error.status,message: error.data.errors[0].message,status: error.statusText});\r\n }\r\n }else{\r\n reject({reason: FPAssetService.errors.unknownError.reason,message: FPAssetService.errors.unknownError.message,status: FPAssetService.errors.unknownError.statusCode});\r\n }\r\n },\r\n);\r\n });\r\n };\r\n let getServiceNewUser = function(url){\r\n return $q(function (resolve, reject) {\r\n apiService.getDataAsync(url,'',false).then(\r\n function (result) {\r\n resolve(result);\r\n },\r\n function (error) {\r\n if(error.hasOwnProperty('data')){\r\n if(error.data.hasOwnProperty('fault')){\r\n reject({reason: error.data.fault.detail.errorcode,message: error.data.fault.faultstring,status: error.status});\r\n }else{\r\n reject({reason: error.status,message: error.data.errors[0].message,status: error.statusText});\r\n }\r\n }else{\r\n reject({reason: FPAssetService.errors.unknownError.reason,message: FPAssetService.errors.unknownError.message,status: FPAssetService.errors.unknownError.statusCode});\r\n }\r\n },\r\n);\r\n });\r\n };\r\n\r\n return {\r\n getServiceUser,\r\n getServiceNewUser,\r\n };\r\n});\r\n","/* eslint-disable no-magic-numbers */\r\n/* eslint-disable no-undef */\r\n/* eslint-disable max-len */\r\napp.factory('FPInvoiceService', (\r\n FPAssetService,\r\n) => {\r\n const calculateTotalLaborPartsCoveredCost = function (regularLaborCost, entitlementLaborCost, partsCost, tripFee) {\r\n return parseFloat((!regularLaborCost ? '0.0' : regularLaborCost)) \r\n + parseFloat((!entitlementLaborCost ? '0.0' : entitlementLaborCost))\r\n + parseFloat((!partsCost ? '0.0' : partsCost))\r\n + parseFloat((!tripFee ? '0.0' : tripFee));\r\n };\r\n\r\n const calculateTotalCost = function (tripFee, laborCost, materialCost) {\r\n return parseFloat(!tripFee ? '0.0' : tripFee)\r\n + parseFloat(!laborCost ? '0.0' : laborCost)\r\n + parseFloat(!materialCost ? '0.0' : materialCost);\r\n };\r\n\r\n const takeStatus = function (serviceOrders) {\r\n return FPAssetService.status[serviceOrders[0].soStatus].label;\r\n };\r\n\r\n const applyGrouping = function (serviceOrders) {\r\n const groupSets = [];\r\n const groupInvoicesInformation = _.groupBy(\r\n serviceOrders,\r\n serviceOrder => serviceOrder.contractorInvoiceNumber,\r\n );\r\n\r\n Object.keys(groupInvoicesInformation).forEach((contractorInvoiceNo) => {\r\n let invoiceTotal = 0;\r\n _.forEach(groupInvoicesInformation[contractorInvoiceNo], (invoice) => {\r\n if (invoice.woorSR.toUpperCase() === FPAssetService.woorSRType.SERVICE_REQUEST) {\r\n const totalLaborPartsCoveredCost = !invoice.orderCostTimeDetails.totalLaborPartsCoveredCost.value\r\n || invoice.orderCostTimeDetails.totalLaborPartsCoveredCost.value === ''\r\n ? 0\r\n : calculateTotalLaborPartsCoveredCost(invoice.orderCostTimeDetails.regularLaborCost.value, invoice.orderCostTimeDetails.entitlementLaborCost.value, invoice.orderCostTimeDetails.partsCost.value, invoice.orderCostTimeDetails.tripFee.value);\r\n invoiceTotal += parseFloat(totalLaborPartsCoveredCost);\r\n } else {\r\n const totalOrderCostValue = !invoice.orderCostTimeDetails.totalOrderCost.value\r\n || invoice.orderCostTimeDetails.totalOrderCost.value === ''\r\n ? 0\r\n : calculateTotalCost(invoice.orderCostTimeDetails.tripFee.value, invoice.orderCostTimeDetails.laborCost.value, invoice.orderCostTimeDetails.materialCost.value);\r\n invoiceTotal += parseFloat(totalOrderCostValue);\r\n }\r\n });\r\n\r\n groupSets.push({\r\n contractorInvoiceNumber: contractorInvoiceNo,\r\n serviceOrders: groupInvoicesInformation[contractorInvoiceNo],\r\n invoiceTotal,\r\n orderCount: groupInvoicesInformation[contractorInvoiceNo].length,\r\n status: takeStatus(groupInvoicesInformation[contractorInvoiceNo]),\r\n lastModifiedDate: groupInvoicesInformation[contractorInvoiceNo][0].lastModifiedDate,\r\n });\r\n });\r\n\r\n return groupSets;\r\n };\r\n\r\n return {\r\n applyGrouping,\r\n takeStatus,\r\n };\r\n});\r\n","app.factory('FPModalService', (\r\n $modal,\r\n FPAssetService,\r\n) => {\r\n const cancelModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.CANCEL_WORK_ORDER.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.CANCEL_WORK_ORDER.windowTemplateUrl,\r\n backdrop: true,\r\n windowClass: 'right fade',\r\n controller: FPAssetService.modalsObj.CANCEL_WORK_ORDER.controller,\r\n controllerAs: 'vm',\r\n });\r\n };\r\n\r\n const saveChangesModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.SAVE_CHANGES.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.SAVE_CHANGES.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.SAVE_CHANGES.backdrop,\r\n windowClass: FPAssetService.modalsObj.SAVE_CHANGES.windowClass,\r\n controller: FPAssetService.modalsObj.SAVE_CHANGES.controller,\r\n controllerAs: FPAssetService.modalsObj.SAVE_CHANGES.controllerAs,\r\n });\r\n };\r\n\r\n const assignWorkOrderModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.backdrop,\r\n windowClass: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.windowClass,\r\n controller: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.controller,\r\n controllerAs: FPAssetService.modalsObj.ASSIGN_WORK_ORDER.controllerAs,\r\n });\r\n };\r\n\r\n const scheduleWorkOrderModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.backdrop,\r\n windowClass: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.windowClass,\r\n controller: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.controller,\r\n controllerAs: FPAssetService.modalsObj.SCHEDULE_WORK_ORDER.controllerAs,\r\n });\r\n };\r\n\r\n\r\n const dispatchModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.DISPATCH.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.DISPATCH.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.DISPATCH.backdrop,\r\n windowClass: FPAssetService.modalsObj.DISPATCH.windowClass,\r\n controller: FPAssetService.modalsObj.DISPATCH.controller,\r\n controllerAs: FPAssetService.modalsObj.DISPATCH.controllerAs,\r\n });\r\n };\r\n\r\n const workCompleteModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.WORK_COMPLETE.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.WORK_COMPLETE.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.WORK_COMPLETE.backdrop,\r\n windowClass: FPAssetService.modalsObj.WORK_COMPLETE.windowClass,\r\n controller: FPAssetService.modalsObj.WORK_COMPLETE.controller,\r\n controllerAs: FPAssetService.modalsObj.WORK_COMPLETE.controllerAs,\r\n });\r\n };\r\n\r\n const reviewModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.REVIEW.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.REVIEW.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.REVIEW.backdrop,\r\n windowClass: FPAssetService.modalsObj.REVIEW.windowClass,\r\n controller: FPAssetService.modalsObj.REVIEW.controller,\r\n controllerAs: FPAssetService.modalsObj.REVIEW.controllerAs,\r\n });\r\n };\r\n\r\n const readyForInvoiceModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.READY_FOR_INVOICE.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.READY_FOR_INVOICE.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.READY_FOR_INVOICE.backdrop,\r\n windowClass: FPAssetService.modalsObj.READY_FOR_INVOICE.windowClass,\r\n controller: FPAssetService.modalsObj.READY_FOR_INVOICE.controller,\r\n controllerAs: FPAssetService.modalsObj.READY_FOR_INVOICE.controllerAs,\r\n });\r\n };\r\n\r\n const bundleWorkOrderModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.templateUrl,\r\n windowTemplateUrl: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.windowTemplateUrl,\r\n backdrop: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.backdrop,\r\n windowClass: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.windowClass,\r\n controller: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.controller,\r\n controllerAs: FPAssetService.modalsObj.BUNDLE_WORK_ORDER.controllerAs,\r\n });\r\n };\r\n\r\n const declineModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.DECLINE.templateUrl,\r\n backdrop: FPAssetService.modalsObj.DECLINE.backdrop,\r\n windowClass: FPAssetService.modalsObj.DECLINE.windowClass,\r\n controller: FPAssetService.modalsObj.DECLINE.controller,\r\n controllerAs: FPAssetService.modalsObj.DECLINE.controllerAs,\r\n });\r\n };\r\n\r\n const acceptWorkOrderModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.templateUrl,\r\n backdrop: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.backdrop,\r\n windowClass: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.windowClass,\r\n controller: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.controller,\r\n controllerAs: FPAssetService.modalsObj.ACCEPT_WORK_ORDER.controllerAs,\r\n });\r\n };\r\n\r\n const multiDispatchModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.MULTI_DISPATCH.templateUrl,\r\n backdrop: FPAssetService.modalsObj.MULTI_DISPATCH.backdrop,\r\n windowClass: FPAssetService.modalsObj.MULTI_DISPATCH.windowClass,\r\n controller: FPAssetService.modalsObj.MULTI_DISPATCH.controller,\r\n controllerAs: FPAssetService.modalsObj.MULTI_DISPATCH.controllerAs,\r\n });\r\n };\r\n\r\n const inviteUserModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.INVITE_USER.templateUrl,\r\n backdrop: FPAssetService.modalsObj.INVITE_USER.backdrop,\r\n windowClass: FPAssetService.modalsObj.INVITE_USER.windowClass,\r\n controller: FPAssetService.modalsObj.INVITE_USER.controller,\r\n controllerAs: FPAssetService.modalsObj.INVITE_USER.controllerAs,\r\n });\r\n };\r\n\r\n const userAdministrationModal = () => {\r\n $modal.open({\r\n templateUrl: FPAssetService.modalsObj.USER_ADMINISTRATION.templateUrl,\r\n backdrop: FPAssetService.modalsObj.USER_ADMINISTRATION.backdrop,\r\n windowClass: FPAssetService.modalsObj.USER_ADMINISTRATION.windowClass,\r\n controller: FPAssetService.modalsObj.USER_ADMINISTRATION.controller,\r\n controllerAs: FPAssetService.modalsObj.USER_ADMINISTRATION.controllerAs,\r\n })\r\n };\r\n\r\n return {\r\n cancelModal,\r\n saveChangesModal,\r\n assignWorkOrderModal,\r\n scheduleWorkOrderModal,\r\n dispatchModal,\r\n workCompleteModal,\r\n reviewModal,\r\n readyForInvoiceModal,\r\n bundleWorkOrderModal,\r\n declineModal,\r\n acceptWorkOrderModal,\r\n multiDispatchModal,\r\n inviteUserModal,\r\n userAdministrationModal,\r\n };\r\n});","app.factory('FPPagerService', function(sessionStorageService){\r\n // service definition\r\n let _pager = {\r\n totalItems: 0,\r\n currentPage: 0,\r\n pageSize: 0,\r\n totalPages: 0,\r\n startPage: 0,\r\n endPage: 0,\r\n startIndex: 0,\r\n endIndex: 0,\r\n pages: 0\r\n };\r\n\r\n let _getPager = function (storageKey) {\r\n let pager = sessionStorageService.get(storageKey);\r\n\r\n return pager ? pager : null;\r\n }\r\n\r\n let _setPager = function (pager,storageKey) {\r\n sessionStorageService.set(storageKey,pager);\r\n }\r\n \r\n // service implementation\r\n let _pagerObj = function (storageKey,totalItems, currentPage, pageSize) {\r\n\r\n let pager = _getPager(storageKey);\r\n if(!pager){ pager = angular.copy(_pager); }\r\n\r\n // default to first page\r\n pager.currentPage = currentPage || 1;\r\n\r\n // default page size is 12\r\n pager.pageSize = pageSize || 12;\r\n\r\n //default total items\r\n pager.totalItems = totalItems;\r\n\r\n // calculate total pages\r\n pager.totalPages = Math.ceil(pager.totalItems / pager.pageSize);\r\n\r\n let startPage, endPage;\r\n if (pager.totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n pager.startPage = 1;\r\n pager.endPage = pager.totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (pager.currentPage <= 6) {\r\n pager.startPage = 1;\r\n pager.endPage = 10;\r\n } else if (pager.currentPage + 4 >= pager.totalPages) {\r\n pager.startPage = pager.totalPages - 9;\r\n pager.endPage = pager.totalPages;\r\n } else {\r\n pager.startPage = pager.currentPage - 5;\r\n pager.endPage = pager.currentPage + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n pager.startIndex = (pager.currentPage - 1) * pager.pageSize;\r\n pager.endIndex = Math.min(pager.startIndex + pager.pageSize - 1, pager.totalItems - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n pager.pages = _.range(pager.startPage, pager.endPage + 1);\r\n\r\n // return object with all pager properties required by the view\r\n _setPager(pager,storageKey);\r\n return pager;\r\n }\r\n\r\n let createPager = function(_storageKey,_totalItems, _currentPage, _pageSize){ \r\n let result = _pagerObj(_storageKey,_totalItems, _currentPage, _pageSize);\r\n return result;\r\n }\r\n\r\n return {\r\n createPager: createPager\r\n };\r\n})","app.factory('FPPdfFactory', function (FPPdfService) {\r\n\r\n let _openServiceOrder = function(serviceOrder){\r\n return FPPdfService.open(serviceOrder);\r\n };\r\n\r\n let _printServiceOrder = function(serviceOrder){\r\n return FPPdfService.print(serviceOrder);\r\n };\r\n\r\n let _downloadServiceOrder = function(serviceOrder, fileName){\r\n return FPPdfService.download(serviceOrder, fileName);\r\n };\r\n\r\n return {\r\n _openServiceOrder: _openServiceOrder,\r\n _printServiceOrder: _printServiceOrder,\r\n _downloadServiceOrder: _downloadServiceOrder,\r\n };\r\n});\r\n","app.factory(\"FPPdfService\", function(FPAssetService, FPPdfServiceRequest, FPPdfWorkOrderInstallation, FPPdfWorkOrderRemoval, FPPdfWorkOrderInspectionReplacement) {\r\n \r\n let getPdfContent = function(serviceOrder) {\r\n if(serviceOrder.woorSR === FPAssetService.woorSRType.SERVICE_REQUEST) {\r\n return FPPdfServiceRequest._getPdfContentServiceRequest(serviceOrder);\r\n }else {\r\n switch(serviceOrder[FPAssetService.fieldNames.SO_TYPE]) {\r\n case FPAssetService.soType.INSTALLATION.code:\r\n return FPPdfWorkOrderInstallation._getPdfContentWorkOrderInstallation(serviceOrder);\r\n\r\n case FPAssetService.soType.REMOVAL.code:\r\n return FPPdfWorkOrderRemoval._getPdfContentWorkOrderRemoval(serviceOrder);\r\n\r\n case FPAssetService.soType.INSPECTION_REPLACEMENT.code:\r\n return FPPdfWorkOrderInspectionReplacement._getPdfContentWorkOrderInspectionReplacement(serviceOrder);\r\n }\r\n }\r\n }\r\n\r\n const open = function(serviceOrder) {\r\n pdfMake.createPdf(getPdfContent(serviceOrder)).open();\r\n };\r\n\r\n const print = function(serviceOrder) {\r\n pdfMake.createPdf(getPdfContent(serviceOrder)).print();\r\n };\r\n\r\n const download = function(serviceOrder, fileName) {\r\n pdfMake.createPdf(getPdfContent(serviceOrder)).download(fileName);\r\n };\r\n\r\n return {\r\n open: open,\r\n print: print,\r\n download: download\r\n };\r\n});\r\n","app.factory('FPServiceOrderService', assetService => {\r\n const canBeAssigned = function(serviceOrder) {\r\n return !serviceOrder.assignedTechnician.cdpId;\r\n };\r\n\r\n const canBeDispatched = function(serviceOrder) {\r\n return serviceOrder.soStatus === assetService.status.SCHEDULED.code;\r\n };\r\n\r\n const canBeInvoiced = function(serviceOrder) {\r\n return (\r\n serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code &&\r\n serviceOrder.assignedTechnician.cdpId &&\r\n !serviceOrder.contractorInvoiceNumber\r\n );\r\n };\r\n\r\n const isCompleteOrder = function(serviceOrder) {\r\n if (serviceOrder.scheduledStartDate) {\r\n const scheduledStartDate = moment(serviceOrder.scheduledStartDate);\r\n const today = moment();\r\n\r\n if (today.isAfter(scheduledStartDate)) {\r\n return serviceOrder.soStatus === assetService.status.DISPATCHED.code;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isContactOrder = function(serviceOrder) {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (\r\n today.diff(lastModifiedDate, 'days') > 3 &&\r\n serviceOrder.soStatus === assetService.status.ACCEPTED.code &&\r\n !serviceOrder.customerContactHistory.firstAttemptDate\r\n ) {\r\n if (serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER) {\r\n return serviceOrder.customerContactHistory.contactForAppointment;\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isInvoiceOrder = function(serviceOrder) {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (today.diff(lastModifiedDate, 'days') >= 14) {\r\n return (\r\n serviceOrder.soStatus === assetService.status.CONTRACTOR_REVIEWED.code\r\n );\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isNewOrder = function(serviceOrder) {\r\n if (serviceOrder.createdDate) {\r\n const createdDate = moment(serviceOrder.createdDate);\r\n const today = moment();\r\n\r\n return today.diff(createdDate, 'days') <= 3;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isScheduleOrder = function(serviceOrder) {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (\r\n today.diff(lastModifiedDate, 'days') >= 30 &&\r\n serviceOrder.soStatus === assetService.status.ACCEPTED.code &&\r\n serviceOrder.customerContactHistory.firstAttemptDate &&\r\n !serviceOrder.scheduledStartDate\r\n ) {\r\n if (serviceOrder.woorSR === assetService.woorSRType.WORK_ORDER) {\r\n return serviceOrder.customerContactHistory.contactForAppointment;\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n return {\r\n canBeAssigned,\r\n canBeDispatched,\r\n canBeInvoiced,\r\n isCompleteOrder,\r\n isContactOrder,\r\n isInvoiceOrder,\r\n isNewOrder,\r\n isScheduleOrder,\r\n };\r\n});\r\n","/* eslint-disable no-undef */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable id-length */\r\n/* eslint-disable no-underscore-dangle */\r\napp.factory('FPServiceOrdersFactory', (\r\n $q,\r\n FPAssetService,\r\n errorHandlingService,\r\n apiService,\r\n FPBroadcastService,\r\n sessionStorageService,\r\n FPTokenFactory,\r\n) => {\r\n const _deleteAppViewsLoad = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.appViewsLoad);\r\n };\r\n\r\n const _deleteSelectedOrders = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.selectedWorkOrders);\r\n };\r\n\r\n const _deletedSelectedOrder = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.selectedWorkOrder);\r\n };\r\n\r\n const _getAppViewsLoad = function () {\r\n const viewsObj = sessionStorageService.get(\r\n FPAssetService.storageKeys.appViewsLoad,\r\n );\r\n\r\n return viewsObj || null;\r\n };\r\n\r\n const _getAddendum = function () {\r\n const serviceOrder = sessionStorageService.get(\r\n FPAssetService.storageKeys.selectedWorkOrder,\r\n );\r\n\r\n return serviceOrder ? serviceOrder.addendum : null;\r\n };\r\n\r\n const _getHeader = function () {\r\n const token = FPTokenFactory.getToken();\r\n const headers = FPAssetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n const _getSelectedOrder = function () {\r\n const serviceOrder = sessionStorageService.get(\r\n FPAssetService.storageKeys.selectedWorkOrder,\r\n );\r\n\r\n return serviceOrder || null;\r\n };\r\n\r\n const _getSelectedOrders = function () {\r\n const serviceOrders = sessionStorageService.get(\r\n FPAssetService.storageKeys.selectedWorkOrders,\r\n );\r\n\r\n return serviceOrders || null;\r\n };\r\n\r\n const _getServiceOrders = function () {\r\n const serviceOrders = sessionStorageService.get(\r\n FPAssetService.storageKeys.serviceOrders,\r\n );\r\n\r\n return serviceOrders || null;\r\n };\r\n\r\n const _setAppViewsLoad = function (viewsObj) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.appViewsLoad,\r\n viewsObj,\r\n );\r\n };\r\n\r\n const _setSelectedOrder = function (selectedOrder) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.selectedWorkOrder,\r\n selectedOrder,\r\n );\r\n };\r\n\r\n const _setSelectedOrders = function (selectedOrders) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.selectedWorkOrders,\r\n selectedOrders,\r\n );\r\n };\r\n\r\n const _setServiceOrders = function (serviceOrders) {\r\n sessionStorageService.set(\r\n FPAssetService.storageKeys.serviceOrders,\r\n serviceOrders,\r\n );\r\n };\r\n\r\n const calculateCompleteOrders = function (serviceOrders) {\r\n // soStatus == 'DISPATCHED' & lastModifiedDate > 7 days\r\n const orders = serviceOrders.filter((serviceOrder) => {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (today.diff(lastModifiedDate, 'days') >= 7) {\r\n return (\r\n serviceOrder.soStatus === FPAssetService.status.DISPATCHED.code\r\n );\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateContactOrders = function (serviceOrders) {\r\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate == NULL & lastModifiedDate < 3 days\r\n const orders = serviceOrders.filter((serviceOrder) => {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (today.diff(lastModifiedDate, 'days') <= 3) {\r\n return (\r\n serviceOrder.soStatus === FPAssetService.status.ACCEPTED.code\r\n && !serviceOrder.customerContactHistory.firstAttemptDate);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateInvoiceOrders = function (serviceOrders) {\r\n // soStatus == 'CONTRACTOR_REVIEWED' & lastModifiedDate > 14 Day\r\n const orders = serviceOrders.filter((serviceOrder) => {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (today.diff(lastModifiedDate, 'days') >= 14) {\r\n return (\r\n serviceOrder.soStatus\r\n === FPAssetService.status.CONTRACTOR_REVIEWED.code\r\n );\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateNewOrders = function (serviceOrders) {\r\n // createdDate < 3 days\r\n const orders = serviceOrders.filter((serviceOrder) => {\r\n if (serviceOrder.createdDate) {\r\n const createdDate = moment(serviceOrder.createdDate);\r\n const today = moment();\r\n\r\n return today.diff(createdDate, 'days') <= 3;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return orders.length;\r\n };\r\n\r\n const calculateScheduleOrders = function (serviceOrders) {\r\n // soStatus == 'ACCEPTED' & customerContactHistory.firstAttemptDate != NULL & lastModifiedDate > 30 days & scheduledStartDate == NULL\r\n const orders = serviceOrders.filter((serviceOrder) => {\r\n if (serviceOrder.lastModifiedDate) {\r\n const lastModifiedDate = moment(serviceOrder.lastModifiedDate);\r\n const today = moment();\r\n\r\n if (today.diff(lastModifiedDate, 'days') >= 30) {\r\n return (\r\n serviceOrder.soStatus === FPAssetService.status.ACCEPTED.code\r\n && serviceOrder.customerContactHistory.firstAttemptDate\r\n && !serviceOrder.scheduledStartDate);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return orders.length;\r\n };\r\n\r\n const getAddendum = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getServiceOrder = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getServiceOrders = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getAllUsers = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getCompanyDetails = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getDefaultCompanyInvoicesWidget = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getUserRoles = function (url) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const patchServiceOrders = function (url, serviceOrder) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.patchDataAsync(url, serviceOrder, header, true).then(\r\n (result) => {\r\n _setSelectedOrder(serviceOrder);\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const postServiceOrders = function (url, serviceOrder) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.postDataAsync(url, serviceOrder, header).then(\r\n (result) => {\r\n _setSelectedOrder(serviceOrder);\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const putServiceOrders = function (url, serviceOrder) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.putDataAsync(url, serviceOrder, header).then(\r\n (result) => {\r\n _setSelectedOrder(serviceOrder);\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const updateServiceOrder = function (serviceOrder) {\r\n const sessionServiceOrder = _getSelectedOrder();\r\n const workingServiceOrder = _.merge({}, sessionServiceOrder, serviceOrder);\r\n _setSelectedOrder(workingServiceOrder);\r\n FPBroadcastService.triggerServiceOrderUpdate();\r\n };\r\n\r\n const validateAppLoad = function (viewsObj) {\r\n let flag = false;\r\n Object.keys(viewsObj).forEach((key, _index) => {\r\n if (!viewsObj[key] && !flag) {\r\n flag = true;\r\n }\r\n });\r\n\r\n if (flag) {\r\n return false;\r\n }\r\n FPBroadcastService.appLoaded();\r\n _deleteAppViewsLoad();\r\n return true;\r\n };\r\n\r\n return {\r\n _deleteAppViewsLoad,\r\n _deleteSelectedOrders,\r\n _deleteSelectedOrder: _deletedSelectedOrder,\r\n _getAppViewsLoad,\r\n _getAddendum,\r\n _getSelectedOrder,\r\n _getSelectedOrders,\r\n _getServiceOrders,\r\n _setAppViewsLoad,\r\n _setSelectedOrder,\r\n _setSelectedOrders,\r\n _setServiceOrders,\r\n calculateCompleteOrders,\r\n calculateContactOrders,\r\n calculateInvoiceOrders,\r\n calculateNewOrders,\r\n calculateScheduleOrders,\r\n getAddendum,\r\n getCompanyDetails,\r\n getDefaultCompanyInvoicesWidget,\r\n getServiceOrder,\r\n getServiceOrders,\r\n getAllUsers,\r\n getUserRoles,\r\n patchServiceOrders,\r\n postServiceOrders,\r\n putServiceOrders,\r\n updateServiceOrder,\r\n validateAppLoad,\r\n };\r\n});\r\n","app.factory('FPTokenFactory', (\r\n FPApigeeApiConfigService,\r\n FPApiConfigService,\r\n FPSitecoreServices,\r\n) => {\r\n // const clientUsername = '3A5Jkv6S1SUcPJ4KF03ON4QQKZrZvxvy';\r\n // const clientSecret = '1zqXc0GB3z3kfrgd';\r\n\r\n const clientUsername = '5Qp8ySKwjDw5FIcvCOR8bSlYD1EeiMwz';\r\n const clientSecret = '41OAfTlMuGFU8lME';\r\n\r\n // const clientUsername = 'I1t1irgqvRAUJnwgbqg1fMhFcjCQC1sT';\r\n // const clientSecret = 'LDtVmqF3Q1WlN1ho';\r\n\r\n const tokenRequest = function () {\r\n let token = null;\r\n const getAccessTokenUrl = FPApiConfigService.getAccessTokenUrl();\r\n\r\n $.ajax({\r\n url: `${getAccessTokenUrl}`,\r\n type: 'GET',\r\n dataType: 'json',\r\n async: false,\r\n success(data) {\r\n token = data;\r\n },\r\n error(xhr, status, error) {\r\n FPSitecoreServices.logException(error);\r\n },\r\n });\r\n return token;\r\n };\r\n\r\n const oAuthTokenRequest = function () {\r\n let token = null;\r\n const getCCAccessTokenUrl = FPApigeeApiConfigService.getOAuthTokenUrl();\r\n\r\n $.ajax({\r\n url: `${getCCAccessTokenUrl}`,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n grant_type: 'client_credentials',\r\n },\r\n async: false,\r\n beforeSend(xhr) {\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n xhr.setRequestHeader('Authorization', `Basic ${btoa(`${clientUsername}:${clientSecret}`)}`);\r\n xhr.setRequestHeader('CacheControl', 'no-cache');\r\n xhr.setRequestHeader('ID', 'test');\r\n },\r\n success(data) {\r\n token = data.access_token;\r\n },\r\n error(xhr, status, error) {\r\n FPSitecoreServices.logException(error);\r\n },\r\n });\r\n return token;\r\n };\r\n\r\n const ccTokenRequest = function () {\r\n let token = null;\r\n const getCCAccessTokenUrl = FPApigeeApiConfigService.getCCAccessTokenUrl();\r\n\r\n $.ajax({\r\n url: `${getCCAccessTokenUrl}`,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n grant_type: 'client_credentials',\r\n },\r\n async: false,\r\n beforeSend(xhr) {\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n xhr.setRequestHeader('Authorization', `Basic ${btoa(`${clientUsername}:${clientSecret}`)}`);\r\n xhr.setRequestHeader('CacheControl', 'no-cache');\r\n xhr.setRequestHeader('ID', 'test');\r\n },\r\n success(data) {\r\n token = data.access_token;\r\n },\r\n error(xhr, status, error) {\r\n FPSitecoreServices.logException(error);\r\n },\r\n });\r\n return token;\r\n };\r\n\r\n const getToken = function () {\r\n const token = tokenRequest();\r\n return token;\r\n };\r\n\r\n const getCCToken = function () {\r\n const token = ccTokenRequest();\r\n return token;\r\n };\r\n\r\n const getOAuthToken = function () {\r\n const token = oAuthTokenRequest();\r\n return token;\r\n };\r\n\r\n return {\r\n getToken,\r\n getCCToken,\r\n getOAuthToken,\r\n };\r\n});\r\n","/* eslint-disable no-undef */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable max-len */\r\n/* eslint-disable no-magic-numbers */\r\n/* eslint-disable id-length */\r\n/* eslint-disable no-underscore-dangle */\r\napp.factory('FPUserService', ($q, FPAssetService, apiService, sessionStorageService, FPTokenFactory) => {\r\n const _getHeader = function () {\r\n const token = FPTokenFactory.getToken();\r\n const headers = FPAssetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n const deleteUsers = function () {\r\n sessionStorageService.delete(FPAssetService.storageKeys.appViewsLoad);\r\n };\r\n\r\n const getUsers = function () {\r\n sessionStorageService.get(FPAssetService.storageKeys.widgetsData.users);\r\n };\r\n\r\n const setUsers = function (users) {\r\n sessionStorageService.set(FPAssetService.storageKeys.widgetsData.users, users);\r\n };\r\n\r\n const postUser = function (url, user) {\r\n const header = _getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.postDataAsync(url, user, header).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.length > 0) {\r\n reject({\r\n reason: error[0].reason,\r\n message: error[0].message,\r\n status: error[0].type,\r\n });\r\n } else if (error.data) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: FPAssetService.errors.unknownError.reason,\r\n message: FPAssetService.errors.unknownError.message,\r\n status: FPAssetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n deleteUsers,\r\n getUsers,\r\n setUsers,\r\n postUser,\r\n };\r\n});\r\n","app.factory(\r\n 'installmentpaymentplansandeligibilityservice',\r\n (\r\n $q,\r\n apiConfigService,\r\n apiApigeeConfigService,\r\n assetService,\r\n apiService,\r\n errorHandlingService,\r\n tokenFactory,\r\n ) => {\r\n const dataTransformation = function (object) {\r\n const dtoObj = {\r\n Source: 'SEW',\r\n Action: 'GET',\r\n BusinessPartner: '',\r\n ReqCA: {\r\n results: [\r\n {\r\n ContractAccount: object,\r\n Extensions: {},\r\n PaymentPlan: {\r\n results: [{}],\r\n },\r\n Messages: {},\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return dtoObj;\r\n };\r\n\r\n const getHeader = function() {\r\n const token = tokenFactory.getCCToken();\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n const ainstalmentPaymentPlansAndEligibilityCheck = function(data) {\r\n const header = getHeader();\r\n const targetEndpointUrl = apiApigeeConfigService.post.instalmentPaymentPlansAndEligibilityCheck();\r\n const requestPayload = dataTransformation(data);\r\n\r\n return $q((resolve, reject) => {\r\n apiService\r\n .postDataAsync(targetEndpointUrl, requestPayload, header)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const instalmentPaymentPlansAndEligibilityCheck = function(data) {\r\n const header = assetService.apiHeaders.authorization;\r\n const targetEndpointUrl = apiConfigService.post.instalmentPaymentPlansAndEligibilityCheck();\r\n const datamodel = JSON.stringify(dataTransformation(data));\r\n const requestPayload = JSON.stringify({ request: datamodel });\r\n\r\n return $q((resolve, reject) => {\r\n apiService\r\n .postDataAsync(targetEndpointUrl, requestPayload, header)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n apigee: {\r\n instalmentPaymentPlansAndEligibilityCheck: ainstalmentPaymentPlansAndEligibilityCheck,\r\n },\r\n sitecore: {\r\n instalmentPaymentPlansAndEligibilityCheck,\r\n },\r\n };\r\n },\r\n);\r\n","app.factory(\r\n 'installmentpaymentplansextensionsandeligibilityservice',\r\n (\r\n $q,\r\n apiConfigService,\r\n apiApigeeConfigService,\r\n assetService,\r\n apiService,\r\n errorHandlingService,\r\n tokenFactory,\r\n ) => {\r\n const dataTransformation = function (object) {\r\n const dtoObj = {\r\n Source: 'SEW',\r\n Action: 'GET',\r\n RequestedBy: (Object.prototype.hasOwnProperty.call(object, 'requestedBy') ? object.requestedBy : ''),\r\n RequestedOn: moment().format('YYYY-MM-DDTHH:mm:ss'),\r\n RequestedTime: `PT${moment().format('hh')}H${moment().format('mm')}M${moment().format('ss')}S`,\r\n ContractAccount: object.hasOwnProperty('accountNumber') ? object.accountNumber : '',\r\n TypeOfCharge: object.hasOwnProperty('TypeOfCharge') ? object.TypeOfCharge : '',\r\n TotalAmount: '',\r\n IPMessage: { },\r\n IPTypes: {\r\n results: [\r\n {\r\n InstallmentPlanType: object.hasOwnProperty('planType') ? object.planType : '',\r\n IPTypesInfo: {\r\n results: [],\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return dtoObj;\r\n };\r\n\r\n const getHeader = function () {\r\n const token = tokenFactory.getCCToken();\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n const ainstallmentpaymentplansextensionsandeligibilityservice = function (data) {\r\n const header = getHeader();\r\n const targetEndpointUrl = apiApigeeConfigService.post.getinstallmentpaymentplansextensionsandeligibilityservice();\r\n const requestPayload = dataTransformation(data);\r\n\r\n return $q((resolve, reject) => {\r\n apiService\r\n .postDataAsync(targetEndpointUrl, requestPayload, header)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const installmentpaymentplansextensionsandeligibilityservice = function (data) {\r\n const header = assetService.apiHeaders.authorization;\r\n const targetEndpointUrl = apiConfigService.post.getinstallmentpaymentplansextensionsandeligibilityservice();\r\n const datamodel = JSON.stringify(dataTransformation(data));\r\n const requestPayload = JSON.stringify({ request: datamodel });\r\n\r\n return $q((resolve, reject) => {\r\n apiService\r\n .postDataAsync(targetEndpointUrl, requestPayload, header)\r\n .then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n apigee: {\r\n installmentpaymentplansextensionsandeligibilityservice: ainstallmentpaymentplansextensionsandeligibilityservice,\r\n },\r\n sitecore: {\r\n installmentpaymentplansextensionsandeligibilityservice,\r\n },\r\n };\r\n },\r\n);\r\n","app.factory('acceptedOrdersPollingWebWorkerService', function (\r\n $q,\r\n $log,\r\n assetService,\r\n FPBroadcastService,\r\n FPIndexedDbDataService,\r\n tokenFactory,\r\n) {\r\n const self = this;\r\n\r\n self.cachedServiceOrders = [];\r\n self.putOrders = [];\r\n self.promises = [];\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const getHeader = function () {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return FPIndexedDbDataService.putAcceptedOrders(serviceOrders)\r\n .then(\r\n () => {},\r\n );\r\n }\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.pollingWebworkerMedium;\r\n const headers = getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function (e) {\r\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\r\n putAcceptedOrders(e.data.data.serviceOrders).then(\r\n ()=>{\r\n FPBroadcastService.triggerRefreshAcceptedOrders();\r\n },\r\n (error)=>{\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n )\r\n }\r\n\r\n defer.resolve(e.data.data);\r\n };\r\n\r\n worker.onerror = function (e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('invoiceOrdersPollingWebWorkerService', function (\r\n $q,\r\n $log,\r\n assetService,\r\n FPBroadcastService,\r\n FPIndexedDbDataService,\r\n tokenFactory,\r\n) {\r\n const self = this;\r\n\r\n self.cachedServiceOrders = [];\r\n self.putOrders = [];\r\n self.promises = [];\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const getHeader = function () {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function putInvoiceOrders(serviceOrders) {\r\n return FPIndexedDbDataService.putInvoiceOrders(serviceOrders)\r\n .then(\r\n () => {},\r\n );\r\n }\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.pollingWebworkerLong;\r\n const headers = getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function (e) {\r\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\r\n putInvoiceOrders(e.data.data.serviceOrders).then(\r\n () => {\r\n FPBroadcastService.triggerRefreshInvoiceOrders();\r\n },\r\n (error)=>{\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n )\r\n }\r\n\r\n defer.resolve(e.data.data);\r\n };\r\n\r\n worker.onerror = function (e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('serviceOrderPollingWebWorkerService', function (\r\n $log,\r\n $q,\r\n assetService,\r\n FPBroadcastService,\r\n FPIndexedDbDataService,\r\n tokenFactory,\r\n) {\r\n const self = this;\r\n\r\n self.cachedServiceOrders = [];\r\n self.putOrders = [];\r\n self.promises = [];\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const getHeader = function () {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function putAcceptedOrders(serviceOrders) {\r\n return FPIndexedDbDataService.putAcceptedOrders(serviceOrders)\r\n .then(\r\n () => {},\r\n );\r\n }\r\n\r\n function putInvoiceOrders(serviceOrders) {\r\n return FPIndexedDbDataService.putInvoiceOrders(serviceOrders)\r\n .then(\r\n () => {},\r\n );\r\n }\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.pollingWebworker;\r\n const headers = getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function (e) {\r\n if (e.data.data.serviceOrders && e.data.data.serviceOrders.length > 0) {\r\n if (assetService.status[e.data.data.serviceOrders[0].soStatus.code].id < 9) {\r\n putAcceptedOrders(e.data.data.serviceOrders).then(\r\n ()=>{\r\n FPBroadcastService.triggerRefreshAcceptedOrders();\r\n FPBroadcastService.triggerServiceOrderUpdate();\r\n },\r\n (error)=>{\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n )\r\n } else {\r\n putInvoiceOrders(e.data.data.serviceOrders).then(\r\n ()=>{\r\n FPBroadcastService.triggerRefreshInvoiceOrders();\r\n FPBroadcastService.triggerServiceOrderUpdate();\r\n },\r\n (error)=>{\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n }\r\n )\r\n }\r\n }\r\n defer.resolve(e.data.data);\r\n };\r\n\r\n worker.onerror = function (e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('acceptedOrdersWebWorkerService', function(\r\n $q,\r\n tokenFactory,\r\n assetService,\r\n) {\r\n const self = this;\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const _getHeader = function() {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.webworker;\r\n const headers = _getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function(e) {\r\n defer.resolve(e.data);\r\n };\r\n\r\n worker.onerror = function(e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('addendumWebWorkerService', function(\r\n $q,\r\n tokenFactory,\r\n assetService,\r\n) {\r\n const self = this;\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const _getHeader = function() {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.webworker;\r\n const headers = _getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function(e) {\r\n defer.resolve(e.data);\r\n };\r\n\r\n worker.onerror = function(e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('companyDetailsWebWorkerService', function(\r\n $q,\r\n tokenFactory,\r\n assetService,\r\n) {\r\n const self = this;\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const _getHeader = function() {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.webworker;\r\n const headers = _getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function(e) {\r\n defer.resolve(e.data);\r\n };\r\n\r\n worker.onerror = function(e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('invoiceOrdersWebWorkerService', function(\r\n $q,\r\n tokenFactory,\r\n assetService,\r\n) {\r\n const self = this;\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const _getHeader = function() {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.webworker;\r\n const headers = _getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function(e) {\r\n defer.resolve(e.data);\r\n };\r\n\r\n worker.onerror = function(e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('usersWebWorkerService', function($q, tokenFactory, assetService) {\r\n const self = this;\r\n\r\n self.callWebWorker = callWebWorker;\r\n\r\n const _getHeader = function() {\r\n let token = null;\r\n if (assetService.apiConfig.useLocalHost) {\r\n token = tokenFactory.getCCToken();\r\n } else {\r\n token = tokenFactory.getToken();\r\n }\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n function callWebWorker(apiUrl) {\r\n const workerUrl = assetService.webworkersUrl.webworker;\r\n const headers = _getHeader();\r\n const worker = new Worker(workerUrl);\r\n const defer = $q.defer();\r\n worker.onmessage = function(e) {\r\n defer.resolve(e.data);\r\n };\r\n\r\n worker.onerror = function(e) {\r\n console.log(e.message, e);\r\n };\r\n\r\n worker.postMessage({ url: apiUrl, headers }); // Send data to our worker.\r\n\r\n return defer.promise;\r\n }\r\n\r\n return self;\r\n});\r\n","app.factory('CCAddAccountFactory', (\r\n $q,\r\n assetService,\r\n apiService,\r\n sessionStorageService,\r\n) => {\r\n const setAddAccount = function (move) {\r\n sessionStorageService.set(assetService.storageKeys.move, move);\r\n };\r\n\r\n const getAddAccount = function () {\r\n const dataMove = sessionStorageService.get(assetService.storageKeys.move);\r\n return dataMove || null;\r\n };\r\n\r\n const getAddAccountMultiple = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getAddAccountSingle = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n setAddAccount,\r\n getAddAccount,\r\n getAddAccountMultiple,\r\n getAddAccountSingle,\r\n };\r\n});\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable max-len */\r\napp.factory('BPACSVService', function() {\r\n const vm = this;\r\n let formattedData = {};\r\n\r\n function exportToCSV(pageCase, newData, fileName, contributionMethod) {\r\n /* (NewCaseToMap, Array, FileNAme) */\r\n switch (pageCase) {\r\n case 'bill':\r\n formattedData = _.map(newData, bill => ({\r\n Type: bill.type.toUpperCase(),\r\n 'Due Date': bill.dueDate,\r\n Description: bill.description,\r\n Amount: bill.dueAmount !== undefined ? '$' + bill.dueAmount : '',\r\n 'Previous Amount Due':\r\n bill.prevAmountDue !== undefined ? '$' + bill.prevAmountDue : '',\r\n 'Payment Received':\r\n bill.paymentReceived !== undefined\r\n ? '$' + bill.paymentReceived\r\n : '',\r\n 'Current Charges':\r\n bill.currentCharges !== undefined ? '$' + bill.currentCharges : '',\r\n 'Total Amount Due':\r\n bill.totalAmountDue !== undefined ? '$' + bill.totalAmountDue : '',\r\n 'Total Electric Usage (kWh)': bill.totalElectricUsage,\r\n 'Avg. Daily Electric Cost (/Day)':\r\n bill.avgDailyElectricCost !== undefined\r\n ? '$' + bill.avgDailyElectricCost\r\n : '',\r\n 'Total Gas Usage (CCF)': bill.totalGasUsage,\r\n 'Avg. Daily Gas Cost (/Day)':\r\n bill.avgDailyGasCost !== undefined\r\n ? '$' + bill.avgDailyGasCost\r\n : '',\r\n 'Confirm Number': bill.confirmNumber,\r\n 'Payment Method': bill.paymentMethod,\r\n 'Routing Number': bill.routingNumber,\r\n 'Account Number': bill.accountNumber,\r\n 'Payment Status': bill.paymentStatus,\r\n 'BP Name': bill.bpName,\r\n Address: bill.address,\r\n 'Bill Days': bill.billDays,\r\n 'Bill Date': bill.billDate,\r\n 'Total Amount Paid': bill.totalAmountPaid,\r\n 'Energy Neighbor Fund': bill.energyNeighborFund,\r\n }));\r\n\r\n formattedData = formattedData.map(function(bill) {\r\n if (contributionMethod) {\r\n bill[contributionMethod] = bill['Energy Neighbor Fund'];\r\n delete bill['Energy Neighbor Fund'];\r\n return bill;\r\n } else {\r\n delete bill['Energy Neighbor Fund'];\r\n return bill;\r\n }\r\n });\r\n saveAsCSV(formattedData, fileName);\r\n break;\r\n\r\n case 'balance':\r\n formattedData = newData.map(balance => {\r\n const balanceReturn = {\r\n Description: balance.type.toUpperCase(),\r\n Date: balance.date,\r\n Amount: `$${balance.amount}`,\r\n 'Daily Electic Usage': '',\r\n 'Daily Cost': '',\r\n };\r\n\r\n if (balance.type === 'Payment') {\r\n //balanceReturn['Confirmation Number'] = balance.confirmationNumber;\r\n //balanceReturn['Payment Method'] = balance.paymentMetod;\r\n //balanceReturn['Prepaid Amount'] = `$${balance.payment}`;\r\n //balanceReturn['Deferred Balance'] = `$${balance.deferredBalance}`;\r\n balanceReturn['Amount'] = `$${balance.amount}`;\r\n }\r\n\r\n if (balance.type === 'Daily Usage') {\r\n balanceReturn['Daily Electic Usage'] =\r\n balance.dailyElectricUsage + ' KWH';\r\n balanceReturn['Daily Cost'] = `$${balance.dailyElectricCost}`;\r\n //balanceReturn['Meter Read Number'] = balance.meterReadNumber;\r\n //balanceReturn['Misc Adjustments'] = balance.miscAdjustments;\r\n }\r\n\r\n return balanceReturn;\r\n });\r\n\r\n saveAsCSV(formattedData, fileName);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function saveAsCSV(dataFormatted, fileName) {\r\n const csvFile = Papa.unparse(dataFormatted, {\r\n header: true,\r\n });\r\n\r\n const blob = new Blob([csvFile], { type: 'text/plain;charset=utf-8' });\r\n saveAs(blob, `${fileName}.csv`);\r\n }\r\n\r\n return {\r\n exportToCSV,\r\n };\r\n});\r\n","app.factory('budgetBillingFactory', (\r\n $q,\r\n assetService,\r\n apiService,\r\n) => {\r\n\r\n const getServicePlans = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getAccount = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getMonthsAmounts = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n getServicePlans,\r\n getAccount,\r\n getMonthsAmounts,\r\n };\r\n});\r\n","app.factory('ccCareProgramsFactory', (\r\n $q,\r\n assetService,\r\n apiService,\r\n) => {\r\n const getCarePrograms = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.assetService.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n return {\r\n getCarePrograms,\r\n };\r\n});\r\n","app.factory('CCDashboardFactory', (\r\n $q,\r\n assetService,\r\n apiService,\r\n apiConfigService,\r\n) => {\r\n const getDashboarDdueDataUrl = function () {\r\n const url = apiConfigService.developUrls.getDashboarDdueDataUrl();\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getDashboarBPPUrl = function () {\r\n const url = apiConfigService.developUrls.getDefaultProgramsUrl();\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n getDashboarDdueDataUrl,\r\n getDashboarBPPUrl\r\n };\r\n});\r\n","app.factory('paperlessBillingFactory', function ($q, assetService, apiService, FPBroadcastService) {\r\n\r\n let getServicePaperlessBilling = function(url){\r\n return $q(function (resolve, reject) {\r\n apiService.getDataAsync(url,'',false).then(\r\n function (result) {\r\n resolve(result);\r\n },\r\n function (error) {\r\n if(error.hasOwnProperty('data')){\r\n if(error.data.hasOwnProperty('fault')){\r\n reject({reason:error.data.fault.detail.errorcode,message:error.data.fault.faultstring,status:error.status});\r\n }else{\r\n reject({reason:error.status,message:error.data.errors[0].message,status:error.statusText});\r\n }\r\n }else{\r\n reject({reason:assetService.errors.unknownError.reason,message:assetService.errors.unknownError.message,status:assetService.errors.unknownError.statusCode});\r\n }\r\n });\r\n });\r\n };\r\n \r\n return {\r\n getServicePaperlessBilling: getServicePaperlessBilling\r\n };\r\n});","app.factory('correspondenceFactory', function ($q,assetService,apiService) {\r\n\r\nlet getServiceCorrespon = function(url){\r\n\r\n return $q(function (resolve, reject) {\r\n apiService.getDataAsync(url,'',false).then(\r\n function (result) {\r\n resolve(result);\r\n },\r\n function (error) {\r\n if(error.hasOwnProperty('data')){\r\n if(error.data.hasOwnProperty('fault')){\r\n reject({reason:error.data.fault.detail.errorcode,message:error.data.fault.faultstring,status:error.status});\r\n }else{\r\n reject({reason:error.status,message:error.data.errors[0].message,status:error.statusText});\r\n }\r\n }else{\r\n reject({reason:assetService.errors.unknownError.reason,message:assetService.errors.unknownError.message,status:assetService.errors.unknownError.statusCode});\r\n }\r\n });\r\n });\r\n};\r\n\r\nreturn {\r\n getServiceCorrespon: getServiceCorrespon\r\n};\r\n\r\n});","/* eslint-disable id-length */\r\napp.factory('energyService', () => ({\r\n\r\n energyDataFail: {\r\n Series1: ['0'],\r\n Series2: ['0'],\r\n Series3: [],\r\n TickSeries: ['-'],\r\n },\r\n\r\n intervalFrequency: {\r\n dailyEnergy: 'dailyEnergy', // valid with BillingCycle, Week, Month\r\n averageEnergyByDayOfWeek: 'averageEnergyByDayOfWeek', // valid with BillingCycle, Month\r\n hourlyEnergyUse: 'hourlyEnergyUse', // valid with Week, Day\r\n halfHourlyEnergyUse: 'halfHourlyEnergyUse', // Valid with Day\r\n quarterHourlyEnergyUse: 'quarterHourlyEnergyUse', // Valid with Day\r\n },\r\n\r\n periodTypeOption: {\r\n Year:'Year',\r\n Months: 'Months',\r\n Week: 'Week',\r\n Days: 'Day',\r\n Hours: 'Hours',\r\n Min: 'Min',\r\n },\r\n\r\n periodType: {\r\n Year:'Year',\r\n Week: 'Week',\r\n Day: 'Day',\r\n Month: 'Month',\r\n BillingCycle: 'billingCycle',\r\n },\r\n\r\n serviceType: {\r\n Gas: 'Gas',\r\n Electric: 'Electric',\r\n },\r\n\r\n graphColors: {\r\n gasBar: '#005984',\r\n electricBar: '#00853f',\r\n grayBar: '#696969',\r\n averageLine: '#464646',\r\n temperatureText: '#cccccc',\r\n temperatureBubble: '#999999',\r\n gridLines: '#dfe4e4',\r\n netMeter: '#4c4c4c'\r\n },\r\n\r\n unitOfMeasure: {\r\n CCF: 'CCF',\r\n kWh: 'kWh',\r\n Dollar: 'Dollar',\r\n },\r\n\r\n string: {\r\n WEEKS: 'WEEKS',\r\n currency: 'currency',\r\n CostOfUnitsConsumed: 'Cost of Units Consumed',\r\n gray: 'gray',\r\n number: 'number',\r\n line: 'line',\r\n accountSelected: 'accountSelected',\r\n string: 'string',\r\n ready: 'ready',\r\n select: 'select',\r\n onmouseover: 'onmouseover',\r\n onmouseout: 'onmouseout',\r\n rect: 'rect',\r\n rx: 'rx',\r\n ry: 'ry',\r\n path: 'path',\r\n graphDiv: 'graph-div',\r\n current: 'current',\r\n corechart: 'corechart',\r\n maximized: 'maximized',\r\n out: 'out',\r\n point: 'point',\r\n loadGraph: 'loadGraph',\r\n }, \r\n}));\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable max-len */\r\napp.factory('exportCsvService', function (\r\n ) {\r\n const vm = this;\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n vm.averageArray = [];\r\n \r\n function exportToCSV(pageCase, newData, fileName, accountInfo, startDate) {\r\n vm.fileName = fileName; /* (NewCaseToMap, Array, FileNAme) */\r\n switch (pageCase) {\r\n case 'Dollar':\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n if(newData.length > 0){\r\n vm.formattedData = _.map(newData, bill => ({\r\n 'Date': moment(bill.BillingDate).utc().format('MM/DD/YYYY'),\r\n 'Total': bill.Bill_Amt,\r\n 'Average': bill.averageCost,\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n case 'Year':\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n newData = newData == undefined ? [] : newData;\r\n if(newData.length > 0){\r\n vm.formattedData = _.map(newData, bill => ({\r\n 'Date': moment(bill.BillingDate).utc().format('MM/DD/YYYY'),\r\n 'Total': parseFloat(bill.Usage).toFixed(2),\r\n 'Average': parseFloat(bill.averageUsage).toFixed(2),\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n case 'billingCycle':\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2\r\n vm.tempArray = [];\r\n let tempArray = [];\r\n let testDate;\r\n if(vm.averageArray.length > 0){\r\n for (let i = 0; i < vm.averageArray.length; i++) {\r\n if((newData.TickSeries[i]) == \"\"){\r\n testDate = new Date(new Date(newData.TickSeries[i-1]).setDate(new Date(newData.TickSeries[i-1]).getDate() + 1)); \r\n }else{\r\n testDate = new Date(newData.TickSeries[i]);\r\n }\r\n let yearSelected = testDate.getFullYear();\r\n let temp = {\r\n 'Date': moment(new Date(`${testDate.getMonth() + 1}/${testDate.getDate()}/${yearSelected}`)).format('MM/DD/YYYY'),\r\n 'Total': parseFloat(newData.Series1[i]).toFixed(2),\r\n 'Average': parseFloat(newData.Series2[i]).toFixed(2),\r\n }\r\n tempArray.push(temp);\r\n }\r\n vm.formattedData = _.map(tempArray, bill => ({\r\n 'Date': bill.Date,\r\n 'Total': bill.Total,\r\n 'Average': bill.Average,\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n case 'Week':\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2\r\n tempArray = [];\r\n if(vm.averageArray.length >0){\r\n for (let i = 0; i < vm.averageArray.length; i++) {\r\n testDate = new Date(newData.TickSeries[i]);\r\n yearSelected = testDate.getMonth() < startDate.getMonth() ? startDate.getFullYear() + 1 : startDate.getFullYear();\r\n let temp = {\r\n 'Date': newData.TickSeries[i] == \"-\" ? \"-\" :moment(newData.TickSeries[i]).format('MM/DD/YYYY'),\r\n 'Total': parseFloat(newData.Series1[i]).toFixed(2),\r\n 'Average': parseFloat(newData.Series2[i]).toFixed(2),\r\n }\r\n tempArray.push(temp);\r\n }\r\n vm.formattedData = _.map(tempArray, bill => ({\r\n 'Date': bill.Date,\r\n 'Total': bill.Total,\r\n 'Average': bill.Average,\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n case \"billingCycleEnergyUse\":\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n vm.averageArray = newData.Series1 == undefined ? [] : newData.Series1\r\n tempArray = [];\r\n if(vm.averageArray.length > 0){\r\n for (let i = 0; i < vm.averageArray.length; i++) {\r\n let temp = {\r\n 'Date': newData.TickSeries[i] == \"-\" ? \"-\" :moment(newData.TickSeries[i]).format('MM/DD/YYYY'),\r\n 'Total': parseFloat(newData.Series1[i]).toFixed(2),\r\n 'Average': parseFloat(newData.Series2[i]).toFixed(2),\r\n }\r\n tempArray.push(temp);\r\n }\r\n vm.formattedData = _.map(tempArray, bill => ({\r\n 'Date': bill.Date,\r\n 'Total': bill.Total,\r\n 'Average': bill.Average,\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n case \"NetMeter\" :\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n vm.averageArray = newData.Series1 == undefined ? [] : newData.Series1\r\n tempArray = [];\r\n if(vm.averageArray.length > 0){\r\n for (let i = 0; i < vm.averageArray.length; i++) {\r\n let temp = {\r\n 'Date': newData.TickSeries[i] == \"-\" ? \"-\" :moment(newData.TickSeries[i]).format('MM/DD/YYYY'),\r\n 'Consumed': parseFloat(newData.Series1[i]).toFixed(2),\r\n 'Generated': parseFloat(newData.Series3[i]).toFixed(2),\r\n 'Average': parseFloat(newData.Series2[i]).toFixed(2),\r\n }\r\n tempArray.push(temp);\r\n }\r\n vm.formattedData = _.map(tempArray, bill => ({\r\n 'Date': bill.Date,\r\n 'Consumed': bill.Consumed,\r\n 'Generated' : bill.Generated,\r\n 'Average': bill.Average,\r\n }));\r\n }else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n default:\r\n vm.formattedData = {};\r\n vm.description = {};\r\n vm.tempArray = [];\r\n vm.averageArray = newData.Series2 == undefined ? [] : newData.Series2\r\n tempArray = [];\r\n let startDateFormatted = moment(startDate).utc().format(\"MM/DD/YYYY\")\r\n if(vm.averageArray.length > 0){\r\n for (let i = 0; i < vm.averageArray.length; i++) {\r\n let temp = {\r\n 'Date': newData.TickSeries[i],\r\n 'total': parseFloat(newData.Series1[i]).toFixed(2),\r\n }\r\n tempArray.push(temp);\r\n }\r\n vm.formattedData = tempArray.map(function(obj){\r\n obj[startDateFormatted] = obj['Date']\r\n obj['Total'] = obj['total']\r\n delete obj['Date']\r\n delete obj['total']\r\n return obj;\r\n })\r\n }\r\n else{\r\n vm.formattedData = [{\"\":\"No Data Found\"}]\r\n }\r\n break;\r\n }\r\n for (let k in accountInfo) {\r\n let temp = {\r\n \"text\": k,\r\n \"value\": accountInfo[k]\r\n }\r\n vm.tempArray.push(temp)\r\n }\r\n vm.description = _.map(vm.tempArray, item => ({\r\n 'text': item.text,\r\n 'value': item.value\r\n }));\r\n let csvFile = Papa.unparse(vm.formattedData, {\r\n header: true,\r\n });\r\n let formattedCsvFile = Papa.unparse(vm.description, {\r\n header: false,\r\n });\r\n let concatinatedString = formattedCsvFile + '\\n\\n' + csvFile\r\n saveAsCSV(concatinatedString, vm.fileName);\r\n }\r\n function saveAsCSV(concatinatedString, fileName) {\r\n const bytes = new TextEncoder().encode(concatinatedString);\r\n const blob = new Blob([bytes], { type: 'text/plain;charset=utf-8' });\r\n saveAs(blob, `${fileName}.csv`);\r\n }\r\n \r\n return {\r\n exportToCSV,\r\n };\r\n });\r\n ","app.factory('fixedBillFactory', (\r\n $q,\r\n assetService,\r\n apiService,\r\n) => {\r\n\r\n const getServicePlans = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getAccount = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getMonthsAmounts = function (url) {\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, '', false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({ reason: error.data.fault.detail.errorcode, message: error.data.fault.faultstring, status: error.status });\r\n } else {\r\n reject({ reason: error.status, message: error.data.errors[0].message, status: error.statusText });\r\n }\r\n } else {\r\n reject({ reason: assetService.errors.unknownError.reason, message: assetService.errors.unknownError.message, status: assetService.errors.unknownError.statusCode });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n getServicePlans,\r\n getAccount,\r\n getMonthsAmounts,\r\n };\r\n});\r\n","app.factory('installmentPlansFactory', ($q, assetService, apiService) => {\r\n const getInstallmentPlansData = function (url) {\r\n let header = '';\r\n\r\n if (!assetService.apiConfig.liveApi) {\r\n header = '';\r\n } else {\r\n header = getHeader();\r\n }\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: error.status,\r\n message: error.data.errors[0].message,\r\n status: error.statusText,\r\n });\r\n }\r\n } else {\r\n reject({\r\n reason: assetService.errors.unknownError.reason,\r\n message: assetService.errors.unknownError.message,\r\n status: assetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getInstallmentPlansBillDate = function (url) {\r\n let header = '';\r\n\r\n if (!assetService.apiConfig.liveApi) {\r\n header = '';\r\n } else {\r\n header = getHeader();\r\n }\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: error.status,\r\n message: error.data.errors[0].message,\r\n status: error.statusText,\r\n });\r\n }\r\n } else {\r\n reject({\r\n reason: assetService.errors.unknownError.reason,\r\n message: assetService.errors.unknownError.message,\r\n status: assetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const postInstallmentPlan = function (url, installmentPlanData) {\r\n const header = getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.postDataAsync(url, installmentPlanData, header).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.data) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: assetService.errors.unknownError.reason,\r\n message: assetService.errors.unknownError.message,\r\n status: assetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getInstallmentPlansToManage = function (url) {\r\n let header = '';\r\n\r\n if (!assetService.apiConfig.liveApi) {\r\n header = '';\r\n } else {\r\n header = getHeader();\r\n }\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.hasOwnProperty('data')) {\r\n if (error.data.hasOwnProperty('fault')) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: error.status,\r\n message: error.data.errors[0].message,\r\n status: error.statusText,\r\n });\r\n }\r\n } else {\r\n reject({\r\n reason: assetService.errors.unknownError.reason,\r\n message: assetService.errors.unknownError.message,\r\n status: assetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n getInstallmentPlansData,\r\n getInstallmentPlansBillDate,\r\n postInstallmentPlan,\r\n getInstallmentPlansToManage,\r\n };\r\n});\r\n","app.factory(\r\n 'NotificationPreferencesFactory', (\r\n $q,\r\n apiConfigService,\r\n apiApigeeConfigService,\r\n assetService,\r\n errorHandlingService,\r\n apiService,\r\n tokenFactory,\r\n ) => { \r\n const getHeader = function () {\r\n const token = tokenFactory.getCCToken();\r\n const headers = assetService.apiHeaders.authorization;\r\n headers.Authorization = `Bearer ${token}`;\r\n return headers;\r\n };\r\n\r\n const getCommOpt = function (url) {\r\n const header = '';\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(url, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n };\r\n\r\n const getPreferences = function (data) {\r\n const header = getHeader();\r\n const targetEndpointUrl = apiConfigService.get.readAndDerivePreferencesUrl(data);\r\n\r\n return $q((resolve, reject) => {\r\n apiService.getDataAsync(targetEndpointUrl, header, false).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n reject(errorHandlingService.getException(error));\r\n },\r\n );\r\n });\r\n }; \r\n\r\n const updatePreferences = function (url, paymentPreferences) {\r\n const header = getHeader();\r\n\r\n return $q((resolve, reject) => {\r\n apiService.putDataAsync(url, paymentPreferences, header).then(\r\n (result) => {\r\n resolve(result);\r\n },\r\n (error) => {\r\n if (error.data) {\r\n reject({\r\n reason: error.data.fault.detail.errorcode,\r\n message: error.data.fault.faultstring,\r\n status: error.status,\r\n });\r\n } else {\r\n reject({\r\n reason: assetService.errors.unknownError.reason,\r\n message: assetService.errors.unknownError.message,\r\n status: assetService.errors.unknownError.statusCode,\r\n });\r\n }\r\n },\r\n );\r\n });\r\n };\r\n\r\n return {\r\n getCommOpt, \r\n getPreferences, \r\n updatePreferences \r\n };\r\n },\r\n);\r\n","app.factory(\r\n 'NotificationPreferencesHelperService',\r\n (\r\n $log,\r\n $rootScope,\r\n assetService,\r\n genericHelperService,\r\n createPreferencesService,\r\n sessionStorageService,\r\n commonService,\r\n updatePreferencesService,\r\n updatePhoneNumberService,\r\n maintainUserProfileService,\r\n dateHelperService,\r\n ebillEnrollKubraService,\r\n accountSearchService,\r\n $window,\r\n broadcastService,\r\n notificationPreferencesAssetsService,\r\n commongaTaggingService,\r\n ) => {\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n const addressNumber = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.commOpt.addressNumber,\r\n );\r\n const strings = notificationPreferencesAssetsService.strings;\r\n\r\n let globalAccountInfo = sessionStorageService.get(\r\n assetService.storageKeys.selectedAddressData,\r\n );\r\n let isPrepaid = globalAccountInfo.accountSelected.prepaid;\r\n\r\n const getCurrentNotification = function(notifId, data) {\r\n return _.find(data, element => element.id === notifId);\r\n };\r\n\r\n const beautifyPhone = function(value) {\r\n if (value.length < 11)\r\n return `(${value.substr(0, 3)}) ${value.substr(3, 3)}-${value.substr(\r\n 6,\r\n 4,\r\n )}`;\r\n return value;\r\n };\r\n\r\n function createDropObj(dropList) {\r\n return dropList.map(element => ({\r\n text: beautifyPhone(element),\r\n value: element,\r\n }));\r\n }\r\n\r\n function createDrop(value, text, phones, phonesTextEnabled) {\r\n let dropObj = [];\r\n for (let i = 0; i < text.length; i++) {\r\n let dropObjEntry = {\r\n value: value[i],\r\n text: text[i],\r\n };\r\n if (phones) {\r\n dropObjEntry.text = beautifyPhone(dropObjEntry.text);\r\n dropObjEntry.textEnabled = phonesTextEnabled[i];\r\n }\r\n dropObj.push(dropObjEntry);\r\n }\r\n return dropObj;\r\n }\r\n\r\n function createDrop1(value, text, show, phones, phonesTextEnabled) {\r\n let dropObj1 = [];\r\n for (let i = 0; i < text.length; i++) {\r\n let dropObjEntry1 = {\r\n value: value[i],\r\n text: text[i],\r\n show: show[i],\r\n };\r\n if (phones) {\r\n dropObjEntry1.text = beautifyPhone(dropObjEntry1.text);\r\n dropObjEntry1.textEnabled = phonesTextEnabled[i];\r\n }\r\n dropObj1.push(dropObjEntry1);\r\n }\r\n return dropObj1;\r\n }\r\n\r\n const setNotifications = function(\r\n notifId,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n ) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n const { phones } = communicationOptions;\r\n const { emails } = communicationOptions;\r\n let commTypeText = [];\r\n const notifDrop = notificationDropdowns;\r\n\r\n notifDrop[currentNotif.id].channel = [];\r\n notifDrop[currentNotif.id].communication = [];\r\n\r\n currentNotif.deleted = 10 - currentNotif.notifications.length;\r\n currentNotif.notifications.forEach(notif => {\r\n const commType =\r\n notif.channel === assetService.notifPref.channelComm.email.channel\r\n ? emails\r\n : phones;\r\n let availableChannels = [];\r\n let availableChannelsTxt = [];\r\n if (\r\n strings.prefChannelFilterConfig &&\r\n strings.prefChannelFilterConfig[notifId] &&\r\n strings.prefChannelFilterConfig[notifId].length\r\n ) {\r\n availableChannels = assetService.notifPref.channelItems.filter(\r\n x => !strings.prefChannelFilterConfig[notifId].includes(x),\r\n );\r\n availableChannelsTxt = assetService.notifPref.channelItemsText.filter(\r\n x =>\r\n !strings.prefChannelFilterConfig[notifId].includes(\r\n assetService.notifPref.channelItems[\r\n assetService.notifPref.channelItemsText.indexOf(x)\r\n ],\r\n ),\r\n );\r\n } else {\r\n availableChannels = assetService.notifPref.channelItems;\r\n availableChannelsTxt = assetService.notifPref.channelItemsText;\r\n }\r\n\r\n let dropDown = createDrop(availableChannels, availableChannelsTxt);\r\n notifDrop[currentNotif.id].channel.push(dropDown);\r\n notif.channelText = assetService.notifPref.channels[notif.channel];\r\n let commText = !notif.communicationText\r\n ? notif.communication\r\n : notif.communicationText;\r\n let communicaiton = false;\r\n if (notif.channel !== strings.channels.MAIL) {\r\n communicaiton = commType.find(communications => {\r\n let findComm = false;\r\n\r\n if (communications.text !== '') {\r\n let comText = communications.text.replace(/[^a-zA-Z 0-9]+/g, '');\r\n comText = comText.replace(/\\s+/g, '');\r\n let commTxt = commText.replace(/[^a-zA-Z 0-9]+/g, '');\r\n commTxt = commTxt.replace(/\\s+/g, '');\r\n findComm = comText === commTxt;\r\n }\r\n return findComm;\r\n });\r\n // To filter text-enabled numbers QC-63557\r\n if (\r\n notif.channel === assetService.notifPref.channelComm.text.channel\r\n ) {\r\n commTypeText = commType.filter(x => {\r\n if (\r\n notif.channel !==\r\n assetService.notifPref.channelComm.text.channel ||\r\n x.text === assetService.notifPref.addNewComm.phone\r\n )\r\n return true;\r\n return x.textEnabled;\r\n });\r\n }\r\n } else {\r\n communicaiton = _.find(\r\n commType,\r\n x => x.text.toLocaleLowerCase() === commText.toLocaleLowerCase(),\r\n );\r\n }\r\n\r\n if (!communicaiton) {\r\n communicaiton = _.find(\r\n commType,\r\n x => x.value.toLocaleLowerCase() === commText.toLocaleLowerCase(),\r\n );\r\n }\r\n if (communicaiton) {\r\n if (\r\n notif.channel === assetService.notifPref.channelComm.email.channel\r\n ) {\r\n notifDrop[currentNotif.id].communication.push(commType);\r\n\r\n notif.communicationText = communicaiton.text;\r\n } else {\r\n if (\r\n notif.channel === assetService.notifPref.channelComm.text.channel\r\n ) {\r\n notifDrop[currentNotif.id].communication.push(commTypeText);\r\n } else {\r\n notifDrop[currentNotif.id].communication.push(commType);\r\n }\r\n notif.communicationText = beautifyPhone(communicaiton.text);\r\n }\r\n }\r\n });\r\n currentNotif.disableUnEnroll = updateDisableToggle(currentNotif);\r\n };\r\n\r\n const addNotification = function(\r\n notifId,\r\n phoneItems,\r\n notificationDropdowns,\r\n data,\r\n ) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n currentNotif.deleted -= 1;\r\n\r\n const newNotif = {\r\n channel: assetService.notifPref.channelComm.text.channel,\r\n communication:\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText,\r\n channelModel: assetService.notifPref.channelComm.text.channel,\r\n communicationModel:\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText,\r\n };\r\n\r\n currentNotif.notifications.push(newNotif);\r\n let availableChannels = [];\r\n let availableChannelsTxt = [];\r\n if (\r\n strings.prefChannelFilterConfig &&\r\n strings.prefChannelFilterConfig[notifId] &&\r\n strings.prefChannelFilterConfig[notifId].length\r\n ) {\r\n availableChannels = assetService.notifPref.channelItems.filter(\r\n x => !strings.prefChannelFilterConfig[notifId].includes(x),\r\n );\r\n availableChannelsTxt = assetService.notifPref.channelItemsText.filter(\r\n x =>\r\n !strings.prefChannelFilterConfig[notifId].includes(\r\n assetService.notifPref.channelItems[\r\n assetService.notifPref.channelItemsText.indexOf(x)\r\n ],\r\n ),\r\n );\r\n } else {\r\n availableChannels = assetService.notifPref.channelItems;\r\n availableChannelsTxt = assetService.notifPref.channelItemsText;\r\n }\r\n\r\n let dropDown = createDrop(availableChannels, availableChannelsTxt);\r\n notificationDropdowns[notifId].channel.push(dropDown);\r\n newNotif.channelText = assetService.notifPref.defaultChannelText;\r\n newNotif.communicationText =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n //notificationDropdowns[notifId].communication.push(phoneItems);\r\n\r\n findError(notifId, data);\r\n };\r\n\r\n const errorMesage = function(notifId, data) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n currentNotif.cardError = false;\r\n const error = _.find(\r\n currentNotif.notifications,\r\n item => item.classError === true,\r\n );\r\n\r\n if (error) currentNotif.cardError = true;\r\n };\r\n\r\n const findError = function(notifId, data) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n const emailText =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n const phoneText =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n\r\n currentNotif.notifications.forEach(notif => {\r\n const notifFind = currentNotif.notifications.filter(\r\n element =>\r\n element.communication === notif.communication &&\r\n element.channel === notif.channel,\r\n );\r\n\r\n notif.classError = notifFind.length > 1;\r\n\r\n if (\r\n notif.communication === emailText ||\r\n notif.communication === phoneText\r\n ) {\r\n notif.classError = true;\r\n }\r\n });\r\n\r\n errorMesage(notifId, data);\r\n };\r\n\r\n const deleteNotification = function(\r\n notifId,\r\n dropDownIndex,\r\n data,\r\n notificationDropdowns,\r\n ) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n currentNotif.deleted += 1;\r\n\r\n currentNotif.notifications.splice(dropDownIndex, 1);\r\n notificationDropdowns[currentNotif.id].channel.splice(dropDownIndex, 1);\r\n notificationDropdowns[currentNotif.id].communication.splice(\r\n dropDownIndex,\r\n 1,\r\n );\r\n findError(notifId, data);\r\n };\r\n\r\n function addPhoneNumber(data, notifId) {\r\n return updatePhoneNumberService.sitecore.updatePhoneNumber(data).then(\r\n result => {\r\n if (\r\n result?.ReturnCodes[0]?.ReturnCode1?.Type &&\r\n result?.ReturnCodes[0]?.ReturnCode1?.Type == 'E'\r\n ) {\r\n $rootScope.phoneErrorModal = true;\r\n let errorMessage = result?.ReturnCodes[0]?.ReturnCode1?.Message;\r\n let errorCode = result?.ReturnCodes[0]?.ReturnCode1?.MessageNum;\r\n let card = 'trouble-saving-your-phone';\r\n let action =\r\n errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.UpdatePhoneNumberUrl}`;\r\n\r\n gatModal(notifId, errorCode, action, card);\r\n } else {\r\n $rootScope.phoneErrorModal = false;\r\n }\r\n return result;\r\n },\r\n error => {\r\n $rootScope.phoneErrorModal = true;\r\n\r\n let card = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n card +\r\n '/' +\r\n tab +\r\n '/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.UpdatePhoneNumberUrl}`,\r\n card,\r\n );\r\n\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n const pushVPV = function(vpv) {\r\n $rootScope.dataLayer.push({\r\n event: 'send-VPV',\r\n 'vpv-name': vpv,\r\n });\r\n };\r\n\r\n const pushDL = function(category, action, label) {\r\n $rootScope.dataLayer.push({\r\n event: 'event-click',\r\n 'event-category': category,\r\n 'event-action': action,\r\n 'event-label': label,\r\n });\r\n };\r\n\r\n function tabName(notifId) {\r\n if (\r\n notifId == 'BILL_DEL' ||\r\n notifId == 'BILL_NOTIF' ||\r\n notifId == 'PAY_CONFRM' ||\r\n notifId == 'PMT_UPDT' ||\r\n notifId == 'PREPAY' ||\r\n notifId == 'PPY_AUTO'\r\n ) {\r\n return 'billing-payment';\r\n }\r\n if (\r\n notifId == 'ACTIVE_OUT' ||\r\n notifId == 'SRVO_NOT' ||\r\n notifId == 'APPT_REM' ||\r\n notifId == 'PPY_DISC'\r\n ) {\r\n return 'outages-and-services';\r\n }\r\n if (notifId == 'ENRL_PRCHS') {\r\n return 'additional-options';\r\n }\r\n }\r\n\r\n function subheadline(notifId) {\r\n if (notifId == 'BILL_DEL') {\r\n return 'paperless-billing';\r\n }\r\n if (notifId == 'BILL_NOTIF') {\r\n return 'billing-notifications';\r\n }\r\n if (notifId == 'PAY_CONFRM') {\r\n return 'payment-confirmation';\r\n }\r\n if (notifId == 'PMT_UPDT') {\r\n return 'paperless-payment-updates';\r\n }\r\n if (notifId == 'PREPAY') {\r\n return 'low-balance-alerts';\r\n }\r\n if (notifId == 'PPY_AUTO') {\r\n return 'auto-reload';\r\n }\r\n if (notifId == 'BILLPRINT') {\r\n return 'bill-format';\r\n }\r\n if (notifId == 'ACTIVE_OUT') {\r\n return 'outage-alerts';\r\n }\r\n if (notifId == 'SRVO_NOT') {\r\n return 'service-orders';\r\n }\r\n if (notifId == 'APPT_REM') {\r\n return 'appointments';\r\n }\r\n if (notifId == 'PPY_DISC') {\r\n return 'electric-connectdisconnect';\r\n }\r\n if (notifId == 'ENRL_PRCHS') {\r\n return 'enrollments-and-purchases';\r\n }\r\n }\r\n\r\n function gatModal(notifId, errorCode, action, card) {\r\n let cardName = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n cardName +\r\n '/' +\r\n tab +\r\n '/' +\r\n errorCode +\r\n '/' +\r\n card,\r\n );\r\n pushDL('preferences-notifications_error', action, cardName);\r\n }\r\n\r\n function gatError(notifId, errorCode, action, card) {\r\n if (notifId == 'BILL_DEL') {\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/paperless-billing/billing-payment/' +\r\n errorCode +\r\n '/' +\r\n card,\r\n );\r\n pushDL('preferences-notifications_error', action, 'paperless-billing');\r\n }\r\n }\r\n\r\n function addEmail(data, notifId) {\r\n return maintainUserProfileService.sitecore.maintainUserProfile(data).then(\r\n result => {\r\n if (\r\n result?.ReturnCodes[1]?.ReturnCode2?.Type &&\r\n result?.ReturnCodes[1]?.ReturnCode2?.Type == 'E'\r\n ) {\r\n $rootScope.emailErrorModal = true;\r\n let errorMessage = result?.ReturnCodes[1]?.ReturnCode2?.Message;\r\n let errorCode = result?.ReturnCodes[1]?.ReturnCode2?.MessageNum;\r\n let card = 'trouble-saving-your-email';\r\n let action =\r\n errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.MaintainUserProfile}`;\r\n\r\n gatModal(notifId, errorCode, action, card);\r\n } else {\r\n $rootScope.emailErrorModal = false;\r\n }\r\n return result;\r\n },\r\n error => {\r\n $rootScope.emailErrorModal = true;\r\n\r\n let card = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n card +\r\n '/' +\r\n tab +\r\n '/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.MaintainUserProfile}`,\r\n card,\r\n );\r\n\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n function updatePreferences(data, notifId) {\r\n return updatePreferencesService.sitecore.updatePreferences(data).then(\r\n result => {\r\n let buttonAction = 'UPDATE';\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.preferenceAction,\r\n buttonAction,\r\n );\r\n\r\n if (\r\n result.ReturnCodes[0].ReturnCode1?.Type &&\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ) {\r\n let errorMessage =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.Message\r\n : '';\r\n let errorCode =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.MessageNum\r\n : '';\r\n let card = 'trouble-updating-your-changes';\r\n let action =\r\n errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`;\r\n\r\n gatError(notifId, errorCode, action, card);\r\n }\r\n console.log('Preferences updated');\r\n return result;\r\n },\r\n error => {\r\n let card = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n card +\r\n '/' +\r\n tab +\r\n '/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`,\r\n card,\r\n );\r\n\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function updateCreatePreferences(data, notificationAction, notifId) {\r\n return updatePreferencesService.sitecore.updatePreferences(data).then(\r\n result => {\r\n let buttonAction = 'UPDATE';\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.preferenceAction,\r\n buttonAction,\r\n );\r\n\r\n if (\r\n result.ReturnCodes[0].ReturnCode1?.Type &&\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ) {\r\n let errorMessage =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.Message\r\n : '';\r\n let errorCode =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.MessageNum\r\n : '';\r\n let card = 'trouble-updating-your-changes';\r\n let action =\r\n errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`;\r\n\r\n gatError(notifId, errorCode, action, card);\r\n }\r\n console.log('Preferences updated');\r\n data.created = notificationAction.create;\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n createPreferences(data, notifId).then(() => {\r\n if (notificationAction.update.length !== 0) {\r\n data.updated = notificationAction.update;\r\n data.action = strings.preferences_actions.PREF_UPDATE;\r\n [updatePreferences(data, notifId)];\r\n }\r\n });\r\n return result;\r\n },\r\n error => {\r\n let card = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n card +\r\n '/' +\r\n tab +\r\n '/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.updateDndPreferenceUrl}`,\r\n card,\r\n );\r\n\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n function createPreferences(data, notifId) {\r\n return createPreferencesService.sitecore.createPreferences(data).then(\r\n result => {\r\n let buttonAction = 'CREATE';\r\n sessionStorageService.set(\r\n assetService.notifPref.sessionStorage.preferenceAction,\r\n buttonAction,\r\n );\r\n\r\n if (\r\n result.ReturnCodes[0].ReturnCode1?.Type &&\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ) {\r\n let errorMessage =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.Message\r\n : '';\r\n let errorCode =\r\n result.ReturnCodes[0]?.ReturnCode1.Type == 'E'\r\n ? result.ReturnCodes[0]?.ReturnCode1.MessageNum\r\n : '';\r\n let card = 'trouble-updating-your-changes';\r\n let action =\r\n errorCode +\r\n '-|-' +\r\n $rootScope.dataLayerFormat(errorMessage) +\r\n '-|-' +\r\n `${assetService.sitecoreEndpoints.CreatePreferences}`;\r\n\r\n gatError(notifId, errorCode, action, card);\r\n }\r\n console.log('Preferences updated');\r\n return result;\r\n },\r\n error => {\r\n let card = subheadline(notifId);\r\n let tab = tabName(notifId);\r\n pushVPV(\r\n '/vpv/de/card/preferences-notifications/error/' +\r\n card +\r\n '/' +\r\n tab +\r\n '/na/problem-loading-preferences-notifications',\r\n );\r\n pushDL(\r\n 'preferences-notifications_error',\r\n 'na-|-na-|-' +\r\n `${assetService.sitecoreEndpoints.CreatePreferences}`,\r\n card,\r\n );\r\n\r\n if (assetService.apiConfig.showAppErrors) $log.error(error);\r\n },\r\n );\r\n }\r\n\r\n const compareChanges = function(notifId, newData, currentData) {\r\n let notifNew = [];\r\n let notifCurrent = [];\r\n const notifNewData = getCurrentNotification(notifId, newData);\r\n const notifCurrentData = getCurrentNotification(notifId, currentData);\r\n notifNewData.notifications.forEach(item => {\r\n notifNew.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n });\r\n });\r\n notifCurrentData.notifications.forEach(item => {\r\n notifCurrent.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n });\r\n });\r\n const tempA = notifNew.sort((a, b) => {\r\n if (a.channel !== b.channel)\r\n // order by channel, then by communication\r\n return a.channel.localeCompare(b.channel);\r\n return a.communication.localeCompare(b.communication);\r\n });\r\n const tempB = notifCurrent.sort((a, b) => {\r\n if (a.channel !== b.channel)\r\n // order by channel, then by communication\r\n return a.channel.localeCompare(b.channel);\r\n return a.communication.localeCompare(b.communication);\r\n });\r\n\r\n if (\r\n JSON.stringify(notifNew) === JSON.stringify(notifCurrent) ||\r\n JSON.stringify(tempA) === JSON.stringify(tempB)\r\n ) {\r\n return true;\r\n } else return false;\r\n };\r\n\r\n const resetChanges = function(notifId, data, modalData) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n currentNotif.notifications[modalData.channelIdModal].communication =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n\r\n currentNotif.notifications[modalData.channelIdModal].communicationText =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n\r\n findError(notifId, data);\r\n currentNotif.loadingChanges = false;\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n };\r\n\r\n const saveChanges = function(\r\n notifId,\r\n newData,\r\n currentData,\r\n currentCommunication,\r\n floridaUser,\r\n ) {\r\n let created = 0;\r\n let deleted = 0;\r\n let promises = [];\r\n let promisesFirst = [];\r\n let promisesSecond = [];\r\n let notifNew = [];\r\n let notifCurrent = [];\r\n let updatePrefId = [];\r\n let newPrefIds = [];\r\n const notificationAction = {\r\n delete: [],\r\n update: [],\r\n create: [],\r\n };\r\n // action payload items for paperless update only\r\n const NotificationActionPaperless = {\r\n update:[],\r\n };\r\n\r\n const notifNewData = getCurrentNotification(notifId, newData);\r\n\r\n const notifCurrentData = getCurrentNotification(notifId, currentData);\r\n\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n\r\n notifNewData.notifications.forEach(item => {\r\n notifNew.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n });\r\n newPrefIds.push(item.prefId);\r\n });\r\n\r\n const updateBillingPDF =\r\n notifNewData.checkedPDFOption !== notifCurrentData.checkedPDFOption;\r\n const updateRemainDays =\r\n notifNewData.remainingDays !== notifCurrentData.remainingDays;\r\n const subThersholdvar =\r\n notifNewData.subThersholdvar !== notifCurrentData.subThersholdvar;\r\n\r\n if (notifCurrentData || updateBillingPDF || subThersholdvar) {\r\n notifCurrentData.notifications.forEach(item => {\r\n notifCurrent.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n prefId: item.prefId,\r\n });\r\n });\r\n\r\n deleted = notifCurrent.length - notifNew.length;\r\n created = notifNew.length - notifCurrent.length;\r\n\r\n notifCurrent.forEach(element => {\r\n const delNotif = _.find(notifNew, item => {\r\n return (\r\n element.communication === item.communication &&\r\n element.channel === item.channel\r\n );\r\n });\r\n //del notif contains items which are not changed so we add them in our varaible to call update pref\r\n if(delNotif && notifCurrentData.checkedPDFOption !== notifNewData.checkedPDFOption) {\r\n element.channel = notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL; \r\n NotificationActionPaperless.update.push(element); //adding unaffected elements\r\n }\r\n if (\r\n !delNotif ||\r\n (deleted === 0 &&\r\n created === 0 &&\r\n (updateBillingPDF || updateRemainDays || subThersholdvar))\r\n ) {\r\n let notif = _.find(\r\n notifCurrentData.notifications,\r\n curNotif => curNotif.prefId === element.prefId,\r\n );\r\n //checking if channel is still present in new communication (only updated)\r\n let inNewPref = _.find(newPrefIds, item => {\r\n return item === notif.prefId;\r\n });\r\n if (\r\n deleted > 0 &&\r\n !notifCurrentData.isCardAutoEnrolled &&\r\n inNewPref === undefined\r\n ) {\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n element.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n } \r\n notificationAction.delete.push(element);\r\n deleted -= 1;\r\n } else if (\r\n //added the logic to add optout flag as X\r\n //for auto enrolled preference delete/Update\r\n notifCurrentData.isCardAutoEnrolled \r\n ) {\r\n element.optout = 'X'; \r\n notificationAction.create.push(element);\r\n } else {\r\n updatePrefId.push(notif.prefId);\r\n }\r\n } else {\r\n let notif = _.find(\r\n notifCurrentData.notifications,\r\n curNotif => curNotif.prefId === element.prefId,\r\n );\r\n\r\n //delNotif.prefId = notif.prefId;\r\n if(delNotif && NotificationActionPaperless.update && \r\n (NotificationActionPaperless.update).length > 0 ) {\r\n updatePrefId.push(notif.prefId); \r\n }\r\n else {\r\n delNotif.prefId = notif.prefId;\r\n }\r\n }\r\n });\r\n\r\n if (updatePrefId.length > 0) {\r\n updatePrefId.forEach(element => {\r\n let notif = _.find(notifNew, item => !item.prefId);\r\n let isUpdated = _.find(\r\n notifNewData.notifications,\r\n item => item.prefId == element,\r\n );\r\n if (notif && isUpdated) {\r\n notif.prefId = element;\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n notif.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n if (!notifCurrentData.isCardAutoEnrolled)\r\n notificationAction.update.push(notif);\r\n } else {\r\n delNotif = _.find(notifCurrent, item => item.prefId == element);\r\n if(delNotif && notifId && notifId === strings.preferences.BILL_DEL) {\r\n delNotif.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n notificationAction.delete.push(delNotif);\r\n }\r\n });\r\n }\r\n } else {\r\n created = notifNew.length;\r\n }\r\n if (\r\n created > 0 ||\r\n notifCurrentData.isCardAutoEnrolled ||\r\n (created == 0 && deleted == 0)\r\n ) {\r\n notifNew.forEach(element => {\r\n if (!element.prefId || notifCurrentData.isCardAutoEnrolled) {\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n element.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n notificationAction.create.push(element);\r\n }\r\n });\r\n }\r\n\r\n if(notifCurrent.length - notifNew.length > 0){\r\n notifNew.forEach(newElement => {\r\n let count = 0; \r\n if(newElement.prefId != undefined){\r\n notifCurrent.forEach(currentElement => {\r\n if(newElement.prefId === currentElement.prefId){\r\n count = 1;\r\n }\r\n });\r\n if(count === 0){\r\n notificationAction.update.forEach(actionUElement => {\r\n if(newElement.prefId === actionUElement.prefId){\r\n count = 1;\r\n }\r\n });\r\n\r\n if(count === 0){\r\n notificationAction.create.forEach(actionCElement => {\r\n if(newElement.prefId === actionCElement.prefId){\r\n count = 1;\r\n }\r\n });\r\n if(count === 0){\r\n notificationAction.create.push(newElement);\r\n }\r\n }\r\n }\r\n }\r\n else{\r\n if(newElement && notifId && notifId === strings.preferences.BILL_DEL) {\r\n newElement.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n notificationAction.create.push(newElement);\r\n }\r\n });\r\n }\r\n\r\n let data = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId,\r\n };\r\n\r\n let dataSecond = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId,\r\n };\r\n\r\n let dataFirst = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId,\r\n };\r\n\r\n //payload data for paperless extra update call\r\n let dataPaperless = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n relatedBusinessPartnerId: accountData.relatedBusinessPartnerId,\r\n };\r\n\r\n if (notifNewData.subThersholdvar) {\r\n data.subThersholdvar = notifNewData.subThersholdvar;\r\n dataFirst.subThersholdvar = notifCurrentData.subThersholdvar;\r\n dataSecond.subThersholdvar = notifNewData.subThersholdvarModel;\r\n }\r\n\r\n if (notifNewData.remainingDays && notifNewData.remainingDays.length > 0) {\r\n data.numberOfDays = notifNewData.remainingDays;\r\n dataFirst.numberOfDays = notifCurrentData.remainingDays;\r\n dataSecond.numberOfDays = notifNewData.remainingDays;\r\n }\r\n\r\n if (notifNewData.id === strings.preferences.RATE_REVW) {\r\n data.rateReviewType =\r\n !!notifNewData.rateReviewType && floridaUser\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n dataFirst.rateReviewType =\r\n !!notifCurrentData.rateReviewType && floridaUser\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n dataSecond.rateReviewType =\r\n !!notifNewData.rateReviewType && floridaUser\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n if (notificationAction.delete.length > 0) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n promises = [updatePreferences(data, notifId)];\r\n } else {\r\n if (!notifNewData.previousEnrolled) {\r\n data.created = [{ chanel: '', communication: '' }];\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n promises = [createPreferences(data, notifId)];\r\n } else {\r\n dataFirst.updated = [{ chanel: '', communication: '' }];\r\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\r\n\r\n dataSecond.created = [{ chanel: '', communication: '' }];\r\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\r\n updatePreferences(dataFirst, notifId).then(() => {\r\n window.setTimeout(() => {\r\n createPreferences(dataSecond, notifId).then(() => {\r\n console.log('Preferences Updated');\r\n notifCurrentData.rateReviewType = notifNewData.rateReviewType;\r\n });\r\n }, 900);\r\n });\r\n }\r\n }\r\n notifNewData.previousEnrolled = notifNewData.enrolled;\r\n } else {\r\n if (notifNewData.id === strings.preferences.BILLPRINT) {\r\n data.billFormatType = !!notifNewData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n dataFirst.billFormatType = !!notifCurrentData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n dataSecond.billFormatType = !!notifNewData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n if (notificationAction.delete.length > 0) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n promises = [updatePreferences(data, notifId)];\r\n } else {\r\n if (!notifNewData.previousEnrolled) {\r\n data.created = [{ chanel: '', communication: '' }];\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n promises = [createPreferences(data, notifId)];\r\n } else {\r\n dataFirst.updated = [{ chanel: '', communication: '' }];\r\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\r\n\r\n dataSecond.created = [{ chanel: '', communication: '' }];\r\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\r\n promises = [createPreferences(dataSecond, notifId)];\r\n }\r\n notifNewData.previousEnrolled = true;\r\n }\r\n } else if (\r\n notificationAction.delete.length > 0 &&\r\n notificationAction.create.length > 0\r\n ) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n \r\n // in case of create and delete first update existing items (if any with new checkbox), then normal update create pref \r\n if(notifNewData.id === strings.preferences.BILL_DEL && NotificationActionPaperless.update.length > 0) { \r\n if(notificationAction.update.length === 0) { \r\n dataPaperless.updated = NotificationActionPaperless.update;\r\n dataPaperless.action = strings.preferences_actions.PREF_UPDATE; \r\n promises = [updatePreferences(dataPaperless, notifId)]; \r\n } \r\n promises = [updateCreatePreferences(data, notificationAction, notifId)]; \r\n } else {\r\n promises = [updateCreatePreferences(data,notificationAction, notifId)];\r\n } \r\n } \r\n else {\r\n if((notificationAction.delete.length > 0 || notificationAction.create.length > 0) &&\r\n (notificationAction.update.length === 0)\r\n && JSON.stringify(notificationAction.update) !== JSON.stringify(NotificationActionPaperless.update)) {\r\n if(NotificationActionPaperless.update.length > 0 && notifNewData.id === strings.preferences.BILL_DEL) {\r\n dataPaperless.updated = NotificationActionPaperless.update;\r\n dataPaperless.action = strings.preferences_actions.PREF_UPDATE;\r\n promises = [updatePreferences(dataPaperless, notifId)];\r\n }\r\n } \r\n \r\n if (notificationAction.delete.length > 0) {\r\n if (notifNewData.id === strings.preferences.PREPAY) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_UPDATE;\r\n //notifNewData.loadingChanges = true;\r\n promises = [updatePreferences(data, notifId)];\r\n // window.setTimeout(() => {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n data.numberOfDays = [];\r\n\r\n promises = [updatePreferences(data, notifId)];\r\n console.log('Preferences Updated');\r\n notifCurrentData.remainingDays = notifNewData.remainingDays;\r\n notifNewData.loadingChanges = false;\r\n //});\r\n // }, 900);\r\n // });\r\n } else {\r\n if (notifNewData.id === strings.preferences.BILL_DEL) {\r\n //if paperless and unenroll case (no notifications in newData)\r\n if (notifNewData.notifications.length === 0) {\r\n let tempData = [];\r\n //checking if primary email was present as communication channel.\r\n tempData = notificationAction.delete.filter(\r\n x => x.communication.slice(-3) !== '001',\r\n );\r\n if (tempData.length !== 0) {\r\n data.updated = tempData;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n promises = [updatePreferences(data, notifId)];\r\n }\r\n }\r\n //if paperless but not unenroll case\r\n else {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n promises = [updatePreferences(data, notifId)];\r\n }\r\n }\r\n //if not paperless (as it was )\r\n else {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n promises = [updatePreferences(data, notifId)];\r\n }\r\n }\r\n }\r\n\r\n if (notificationAction.update.length > 0) {\r\n data.updated = notificationAction.update;\r\n data.action = strings.preferences_actions.PREF_UPDATE;\r\n promises = [updatePreferences(data, notifId)];\r\n }\r\n\r\n if (notificationAction.create.length > 0) {\r\n data.created = notificationAction.create;\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n promises = [createPreferences(data, notifId)];\r\n }\r\n }\r\n }\r\n let updateResult = commonService.executePromises(promises).then(res => {\r\n notifNewData.disableUnEnroll = updateDisableToggle(notifNewData);\r\n if (notifId === strings.preferences.PREPAY)\r\n notifCurrentData.remainingDays = notifNewData.remainingDays;\r\n if (notifId === strings.preferences.PMT_RMDR)\r\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\r\n if (notifId === strings.preferences.BILLPRINT)\r\n notifCurrentData.billFormatType = notifNewData.billFormatType;\r\n if (!notifNewData.enrolled) notifNewData.deleted = 10;\r\n console.log('Preferences Updated');\r\n return res;\r\n });\r\n\r\n notifCurrentData.notifications = [];\r\n\r\n notifNewData.notifications.forEach(notifElement => {\r\n console.log('entry');\r\n if (notifElement.channel !== strings.channels.MAIL) {\r\n let communicationTextData = _.find(\r\n currentCommunication.phones,\r\n communication => communication.value === notifElement.communication,\r\n );\r\n if (communicationTextData)\r\n notifElement.communicationText = beautifyPhone(\r\n communicationTextData.text,\r\n );\r\n } else {\r\n communicationTextData = _.find(\r\n currentCommunication.emails,\r\n communication => communication.value === notifElement.communication,\r\n );\r\n if (communicationTextData)\r\n notifElement.communicationText = communicationTextData.text;\r\n }\r\n notifCurrentData.notifications.push(\r\n (({\r\n channel: channel,\r\n communication: communication,\r\n prefId: prefId,\r\n }) => ({ channel, communication, prefId }))(notifElement),\r\n );\r\n });\r\n\r\n if (notifId === strings.preferences.PMT_RMDR) {\r\n notifNewData.subThersholdvarText = `${notifNewData.subThersholdvar} Days`;\r\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\r\n }\r\n\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n notifCurrentData.checkedPDFOption = notifNewData.checkedPDFOption;\r\n }\r\n\r\n if (notifNewData.optoutEdit) {\r\n notifCurrentData.optout = notifNewData.optout;\r\n notifCurrentData.optoutModel = notifNewData.optoutModel;\r\n notifNewData.optoutEdit = false;\r\n }\r\n\r\n //if (!notifNewData.cardError) notifNewData.editionMode = false;\r\n\r\n return updateResult;\r\n };\r\n\r\n const createsaveChanges = function(\r\n notifId,\r\n newData,\r\n currentData,\r\n currentCommunication,\r\n ) {\r\n let created = 0;\r\n let deleted = 0;\r\n let promises = [];\r\n let promisesFirst = [];\r\n let promisesSecond = [];\r\n let notifNew = [];\r\n let notifCurrent = [];\r\n const addPrefId = [];\r\n const notificationAction = {\r\n delete: [],\r\n update: [],\r\n create: [],\r\n };\r\n\r\n const notifNewData = getCurrentNotification(notifId, newData);\r\n\r\n const notifCurrentData = getCurrentNotification(notifId, currentData);\r\n\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n\r\n notifNewData.notifications.forEach(item => {\r\n notifNew.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n });\r\n });\r\n\r\n const updateBillingPDF =\r\n notifNewData.checkedPDFOption !== notifCurrentData.checkedPDFOption;\r\n const updateRemainDays =\r\n notifNewData.remainingDays !== notifCurrentData.remainingDays;\r\n\r\n if (notifCurrentData || updateBillingPDF) {\r\n notifCurrentData.notifications.forEach(item => {\r\n notifCurrent.push({\r\n communication: item.communication,\r\n channel: item.channel,\r\n prefId: item.prefId,\r\n });\r\n });\r\n\r\n deleted = notifCurrent.length - notifNew.length;\r\n created = notifNew.length - notifCurrent.length;\r\n\r\n notifCurrent.forEach(element => {\r\n const delNotif = _.find(notifNew, item => {\r\n return (\r\n element.communication === item.communication &&\r\n element.channel === item.channel\r\n );\r\n });\r\n if (\r\n !delNotif ||\r\n (deleted === 0 &&\r\n created === 0 &&\r\n (updateBillingPDF || updateRemainDays))\r\n ) {\r\n let notif = _.find(\r\n notifCurrentData.notifications,\r\n curNotif => curNotif.prefId === element.prefId,\r\n );\r\n\r\n if (deleted > 0) {\r\n notificationAction.delete.push(element);\r\n deleted -= 1;\r\n } else addPrefId.push(notif.prefId);\r\n } else {\r\n let notif = _.find(\r\n notifCurrentData.notifications,\r\n curNotif => curNotif.prefId === element.prefId,\r\n );\r\n\r\n delNotif.prefId = notif.prefId;\r\n }\r\n });\r\n\r\n if (addPrefId.length > 0) {\r\n addPrefId.forEach(element => {\r\n let notif = _.find(notifNew, item => !item.prefId);\r\n\r\n if (notif) {\r\n notif.prefId = element;\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n if (newData[0].confirmButton === 'Save') {\r\n let emailAccount = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.email,\r\n );\r\n let currStatus = _.find(\r\n currentCommunication.emails,\r\n communication => communication.selected === true,\r\n );\r\n if (emailAccount.EmailAddress === currStatus.text) {\r\n notifCurrentData.isCardAutoEnrolled = true;\r\n }\r\n }\r\n notif.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n if (\r\n notifId === strings.preferences.BILL_DEL &&\r\n !notifCurrentData.isCardAutoEnrolled\r\n ) {\r\n notificationAction.update.push(notif);\r\n } else {\r\n notificationAction.create.push(notif);\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n created = notifNew.length;\r\n }\r\n\r\n if (created > 0) {\r\n notifNew.forEach(element => {\r\n let updateStatus;\r\n if (!element.prefId) {\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n if (newData[0].confirmButton === 'Save') {\r\n let emailAccount = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.email,\r\n );\r\n let currStatus = _.find(\r\n currentCommunication.emails,\r\n communication => communication.selected === true,\r\n );\r\n updateStatus = true;\r\n }\r\n element.channel =\r\n notifNewData.checkedPDFOption === true\r\n ? strings.channels.EBLP\r\n : strings.channels.EBIL;\r\n }\r\n if (updateStatus === true) {\r\n notificationAction.update.push(element);\r\n } else {\r\n notificationAction.create.push(element);\r\n }\r\n }\r\n });\r\n }\r\n\r\n let data = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n };\r\n\r\n let dataSecond = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n };\r\n\r\n let dataFirst = {\r\n groupId: notifNewData.groupId,\r\n id: notifNewData.id,\r\n prefId: notifNewData.prefId,\r\n contractAccountId: accountData.contractAccountId,\r\n businessPartnerId: accountData.businessPartnerId,\r\n };\r\n\r\n if (notifNewData.subThersholdvar) {\r\n data.subThersholdvar = notifNewData.subThersholdvar;\r\n dataFirst.subThersholdvar = notifCurrentData.subThersholdvar;\r\n dataSecond.subThersholdvar = notifNewData.subThersholdvarModel;\r\n }\r\n\r\n if (notifNewData.remainingDays && notifNewData.remainingDays.length > 0) {\r\n data.numberOfDays = notifNewData.remainingDays;\r\n dataFirst.numberOfDays = notifCurrentData.remainingDays;\r\n dataSecond.numberOfDays = notifNewData.remainingDays;\r\n }\r\n\r\n if (notifNewData.id === strings.preferences.RATE_REVW) {\r\n data.rateReviewType = !!notifNewData.rateReviewType\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n dataFirst.rateReviewType = !!notifCurrentData.rateReviewType\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n dataSecond.rateReviewType = !!notifNewData.rateReviewType\r\n ? notifNewData.rateReviewType\r\n : strings.rate_review_type.A;\r\n if (notificationAction.delete.length > 0) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n } else {\r\n if (!notifNewData.previousEnrolled) {\r\n data.created = [{ chanel: '', communication: '' }];\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n } else {\r\n dataFirst.updated = [{ chanel: '', communication: '' }];\r\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\r\n\r\n dataSecond.created = [{ chanel: '', communication: '' }];\r\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\r\n notifCurrentData.billFormatType = notifNewData.billFormatType;\r\n }\r\n }\r\n notifNewData.previousEnrolled = notifNewData.enrolled;\r\n } else {\r\n if (notifNewData.id === strings.preferences.BILLPRINT) {\r\n data.billFormatType = !!notifNewData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n dataFirst.billFormatType = !!notifCurrentData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n dataSecond.billFormatType = !!notifNewData.billFormatType\r\n ? notifNewData.billFormatType\r\n : strings.font_type.detailed;\r\n if (notificationAction.delete.length > 0) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n } else {\r\n if (!notifNewData.previousEnrolled) {\r\n data.created = [{ chanel: '', communication: '' }];\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n } else {\r\n dataFirst.updated = [{ chanel: '', communication: '' }];\r\n dataFirst.action = strings.preferences_actions.PREF_DELETE;\r\n\r\n dataSecond.created = [{ chanel: '', communication: '' }];\r\n dataSecond.action = strings.preferences_actions.PREF_CREATE;\r\n notifCurrentData.billFormatType = notifNewData.billFormatType;\r\n }\r\n notifNewData.previousEnrolled = true;\r\n }\r\n } else {\r\n if (notificationAction.delete.length > 0) {\r\n if (notifNewData.id === strings.preferences.PREPAY) {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_UPDATE;\r\n //notifNewData.loadingChanges = true;\r\n } else {\r\n data.updated = notificationAction.delete;\r\n data.action = strings.preferences_actions.PREF_DELETE;\r\n }\r\n }\r\n\r\n if (notificationAction.update.length > 0) {\r\n data.updated = notificationAction.update;\r\n data.action = strings.preferences_actions.PREF_UPDATE;\r\n }\r\n\r\n if (notificationAction.create.length > 0) {\r\n data.created = notificationAction.create;\r\n data.action = strings.preferences_actions.PREF_CREATE;\r\n }\r\n }\r\n }\r\n let updateResult = commonService.executePromises(promises).then(res => {\r\n if (notifId === strings.preferences.PREPAY)\r\n notifCurrentData.remainingDays = notifNewData.remainingDays;\r\n if (notifId === strings.preferences.PMT_RMDR)\r\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\r\n console.log('Preferences Updated');\r\n return res;\r\n });\r\n\r\n notifCurrentData.notifications = [];\r\n\r\n notifNewData.notifications.forEach(notifElement => {\r\n console.log('entryy');\r\n if (notifElement.channel !== strings.channels.MAIL) {\r\n communicationTextData = _.find(\r\n currentCommunication.phones,\r\n communication => communication.value === notifElement.communication,\r\n );\r\n if (communicationTextData)\r\n notifElement.communicationText = beautifyPhone(\r\n communicationTextData.text,\r\n );\r\n } else {\r\n communicationTextData = _.find(\r\n currentCommunication.emails,\r\n communication => communication.value === notifElement.communication,\r\n );\r\n if (communicationTextData)\r\n notifElement.communicationText = communicationTextData.text;\r\n }\r\n notifCurrentData.notifications.push(\r\n (({\r\n channel: channel,\r\n communication: communication,\r\n prefId: prefId,\r\n }) => ({ channel, communication, prefId }))(notifElement),\r\n );\r\n });\r\n\r\n if (notifId === strings.preferences.PMT_RMDR) {\r\n notifNewData.subThersholdvarText = `${notifNewData.subThersholdvar} Days`;\r\n notifCurrentData.subThersholdvar = notifNewData.subThersholdvar;\r\n }\r\n\r\n if (notifId === strings.preferences.BILL_DEL) {\r\n notifCurrentData.checkedPDFOption = notifNewData.checkedPDFOption;\r\n }\r\n\r\n if (notifNewData.optoutEdit) {\r\n notifCurrentData.optout = notifNewData.optout;\r\n notifCurrentData.optoutModel = notifNewData.optoutModel;\r\n notifNewData.optoutEdit = false;\r\n }\r\n\r\n if (!notifNewData.cardError) notifNewData.editionMode = false;\r\n\r\n return updateResult;\r\n };\r\n\r\n const cancelChanges = function(\r\n notifId,\r\n data,\r\n dataModel,\r\n notificationDropdowns,\r\n communicationOptions,\r\n ) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n const notifModel = getCurrentNotification(notifId, dataModel);\r\n\r\n currentNotif.cardError = false;\r\n\r\n if (!notifModel.notifications) currentNotif.notifications = [];\r\n else\r\n currentNotif.notifications = genericHelperService.notReferencesArrayObjects(\r\n notifModel.notifications,\r\n );\r\n\r\n setNotifications(\r\n notifId,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n );\r\n\r\n if (currentNotif.notifications.length === 0) {\r\n currentNotif.enrolled = false;\r\n currentNotif.enrolledStatus = '';\r\n notificationDropdowns[notifId].channel = [];\r\n notificationDropdowns[notifId].communication = [];\r\n }\r\n currentNotif.editionMode = false;\r\n\r\n if (notifId === strings.preferences.PMT_RMDR) {\r\n currentNotif.subThersholdvar = notifModel.subThersholdvar;\r\n currentNotif.subThersholdvarText = `${notifModel.subThersholdvar} Days`;\r\n }\r\n\r\n findError(notifId, data);\r\n };\r\n\r\n const createNewCommunication = function(\r\n saveChanges,\r\n notifId,\r\n data,\r\n modalData,\r\n communicationOptions,\r\n ) {\r\n const { type } = modalData;\r\n let promises = [];\r\n\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n //currentNotif.loadingChanges = true;\r\n\r\n if (!saveChanges) {\r\n modalData.communicationModel = '';\r\n }\r\n const accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n\r\n const addressNumber = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.commOpt.addressNumber,\r\n );\r\n\r\n let phoneNumberRaw = modalData.communicationModel\r\n .replaceAll('(', '')\r\n .replaceAll(')', '')\r\n .replaceAll(' ', '')\r\n .replaceAll('-', '');\r\n if (saveChanges) {\r\n if (modalData.type === strings.channels_type.phones) {\r\n const mydata = {\r\n newPhone: phoneNumberRaw,\r\n action: strings.preferences_actions.ADD_PHN,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n preferredFlag: false,\r\n dndStartTime: strings.PT00H00M00S,\r\n dndStopTime: strings.PT00H00M00S,\r\n typeOfContact: modalData.phoneType,\r\n };\r\n promises = [addPhoneNumber(mydata, notifId)];\r\n } else {\r\n const reqTime = dateHelperService.convertToISOTime(moment());\r\n const emailAddress = [\r\n {\r\n AddressNumber: addressNumber,\r\n EmailNew: modalData.communicationModel,\r\n CUDFlag: strings.C,\r\n },\r\n ];\r\n const data = {\r\n requestedTime: reqTime,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n addressNumber: addressNumber,\r\n emailAccounts: emailAddress,\r\n };\r\n const dataForEmail = {\r\n requestedTime: reqTime,\r\n businessPartnerId: accountData.relatedBusinessPartnerId,\r\n emailAccounts: emailAddress,\r\n };\r\n promises = [addEmail(dataForEmail, notifId)];\r\n }\r\n\r\n let update = commonService.executePromises(promises).then(result => {\r\n if (\r\n (result[0]?.ReturnCodes[0]?.ReturnCode1?.Type &&\r\n result[0]?.ReturnCodes[0]?.ReturnCode1.Type != 'E') ||\r\n (result[0]?.ReturnCodes[1]?.ReturnCode2?.Type &&\r\n result[0]?.ReturnCodes[1]?.ReturnCode2.Type != 'E')\r\n ) {\r\n communicationOptions[type].pop();\r\n\r\n let communicationValue = '';\r\n\r\n if (modalData.type === strings.channels_type.phones) {\r\n let addressNumber =\r\n result[0].d.PhoneSrcToAction_NAV.results[0].AddressNumber;\r\n let consNumber =\r\n result[0].d.PhoneSrcToAction_NAV.results[0].SequenceNumber;\r\n communicationValue = `${addressNumber}${consNumber}`;\r\n } else {\r\n let addressNumber =\r\n result[0].d.MaintainProfileReqCA.results[0].AddressNumber;\r\n let consNumber =\r\n result[0].d.MaintainProfileReqCA.results[0].Consnumber;\r\n communicationValue = `${addressNumber}${consNumber}`;\r\n }\r\n const newComm = {\r\n text: modalData.communicationModel,\r\n value: communicationValue,\r\n };\r\n\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].communication = communicationValue;\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].communicationModel = communicationValue;\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].communicationText = modalData.communicationModel;\r\n\r\n if (modalData.type === strings.channels_type.phones) {\r\n // QC-45718/CCOT-13063\r\n if (\r\n result[0].d.PhoneSrcToAction_NAV.results[0].TypeOfContact.toLocaleUpperCase() ===\r\n 'HOME'\r\n ) {\r\n let voiceChannelStr =\r\n assetService.notifPref.channelComm.voice.channel;\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].channel = voiceChannelStr;\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].channelModel = voiceChannelStr;\r\n currentNotif.notifications[\r\n modalData.channelIdModal\r\n ].channelText =\r\n assetService.notifPref.channels[voiceChannelStr];\r\n\r\n newComm.textEnabled = false;\r\n } else newComm.textEnabled = true;\r\n }\r\n\r\n communicationOptions[type].push(newComm);\r\n\r\n communicationOptions[type].push({\r\n text: modalData.title,\r\n value: modalData.title,\r\n });\r\n\r\n modalData.communicationModel = undefined;\r\n findError(notifId, data);\r\n\r\n broadcastService.addNewCommunication(notifId);\r\n } else {\r\n return result ? result[0] : undefined;\r\n }\r\n });\r\n return update;\r\n } else {\r\n currentNotif.loadingChanges = false;\r\n return new Promise(resolve => {\r\n resolve();\r\n });\r\n }\r\n };\r\n\r\n const updateNotif = function(\r\n notifId,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n ) {\r\n data.forEach(card => {\r\n setNotifications(\r\n card.id,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n );\r\n });\r\n\r\n findError(notifId, data);\r\n };\r\n\r\n const channelChange = function(\r\n model,\r\n extra,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n ) {\r\n const divId = extra.search('/');\r\n const notifId = extra.substr(0, divId);\r\n const channelId = Number(extra.substr(divId + 1, extra.length));\r\n\r\n const { phones } = communicationOptions;\r\n const { emails } = communicationOptions;\r\n\r\n const commType =\r\n model.value === assetService.notifPref.channelComm.email.channel\r\n ? emails\r\n : phones;\r\n\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n //if(currentNotif.notifications[channelId].channel !== model.value) {\r\n notificationDropdowns[notifId].communication[channelId] = [\r\n { value: '', text: '' },\r\n ];\r\n currentNotif.notifications[channelId].communication =\r\n window.innerWidth <= 705\r\n ? assetService.notifPref.defaultcommunicationChannelTextMobile\r\n : assetService.notifPref.defaultcommunicationChannelText;\r\n // model.value === assetService.notifPref.channelComm.email.channel\r\n // ? assetService.notifPref.channelComm.email.communication\r\n // : assetService.notifPref.channelComm.text.communication;\r\n currentNotif.notifications[channelId].communicationText =\r\n currentNotif.notifications[channelId].communication;\r\n currentNotif.notifications[channelId].communicationModel =\r\n currentNotif.notifications[channelId].communication;\r\n currentNotif.notifications[channelId].channel = model.value;\r\n currentNotif.notifications[channelId].channelText =\r\n assetService.notifPref.channels[\r\n currentNotif.notifications[channelId].channel\r\n ];\r\n currentNotif.cardError = false;\r\n //}\r\n\r\n //window.setTimeout(() => {\r\n notificationDropdowns[notifId].communication[channelId] = commType.filter(\r\n x => {\r\n // QC-45718/CCOT-13063\r\n if (\r\n currentNotif.notifications[channelId].channel !==\r\n assetService.notifPref.channelComm.text.channel ||\r\n x.text === assetService.notifPref.addNewComm.phone\r\n )\r\n return true;\r\n return x.textEnabled;\r\n },\r\n );\r\n //}, 5);\r\n\r\n findError(notifId, data);\r\n };\r\n\r\n const commChange = function(\r\n model,\r\n extra,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n ) {\r\n const divId = extra.search('/');\r\n const notifId = extra.substr(0, divId);\r\n const channelId = Number(extra.substr(divId + 1, extra.length));\r\n\r\n const { phones } = communicationOptions;\r\n const { emails } = communicationOptions;\r\n\r\n const commType =\r\n model === assetService.notifPref.channelComm.email.channel\r\n ? emails\r\n : phones;\r\n\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n //if(currentNotif.notifications[channelId].channel !== model.value) {\r\n notificationDropdowns[notifId].communication[channelId] = [\r\n { value: '', text: '' },\r\n ];\r\n currentNotif.cardError = false;\r\n //}\r\n\r\n //window.setTimeout(() => {\r\n notificationDropdowns[notifId].communication[channelId] = commType.filter(\r\n x => {\r\n // QC-45718/CCOT-13063\r\n if (\r\n currentNotif.notifications[channelId].channel !==\r\n assetService.notifPref.channelComm.text.channel ||\r\n x.text === assetService.notifPref.addNewComm.phone\r\n )\r\n return true;\r\n return x.textEnabled;\r\n },\r\n );\r\n //}, 5);\r\n\r\n findError(notifId, data);\r\n };\r\n\r\n const dropdownFilter = function(\r\n cardId,\r\n communicationOptions,\r\n enrolledPref,\r\n model,\r\n ) {\r\n const displayOptions = {\r\n emails: [],\r\n phones: [],\r\n };\r\n let groupVal = [];\r\n const enrolledComms = [];\r\n const allEmails = [];\r\n const allPhones = [];\r\n const emailPresent = [];\r\n const phonePresent = [];\r\n let showSelections = [];\r\n let showPhSelections = [];\r\n const emails = [];\r\n const phones = [];\r\n\r\n for (i = 0; i < enrolledPref.length; i++) {\r\n if (enrolledPref[i].id == cardId) {\r\n groupVal = enrolledPref[i];\r\n }\r\n }\r\n if (model && model === 'Method') {\r\n displayOptions.emails = [];\r\n displayOptions.phones = [];\r\n } else {\r\n if (\r\n groupVal &&\r\n (groupVal.notifications != undefined ||\r\n groupVal.confirmButton != 'SAVE')\r\n ) {\r\n let mailLength = groupVal.notifications.length;\r\n for (i = 0; i < mailLength; i++) {\r\n enrolledComms.push(\r\n (groupVal.notifications[i].communicationText\r\n ? groupVal.notifications[i].communicationText\r\n : groupVal.notifications[i].communication\r\n )\r\n .toLowerCase()\r\n .concat(groupVal.notifications[i].channel),\r\n );\r\n }\r\n\r\n let emailLength = communicationOptions.emails.length;\r\n let phoneLength = communicationOptions.phones.length;\r\n\r\n for (i = 0; i < emailLength; i++) {\r\n if (communicationOptions.emails[i].text !== 'Add New Email') {\r\n allEmails.push(\r\n communicationOptions.emails[i].text.toLowerCase().concat(model),\r\n );\r\n } else if (\r\n communicationOptions.emails[i].text === 'Add New Email'\r\n ) {\r\n allEmails.push(communicationOptions.emails[i].text.concat(model));\r\n }\r\n }\r\n\r\n for (i = 0; i < phoneLength; i++) {\r\n allPhones.push(communicationOptions.phones[i].text.concat(model));\r\n }\r\n\r\n for (i = 0; i < emailLength; i++) {\r\n if (_.includes(enrolledComms, allEmails[i])) {\r\n emailPresent.push(false);\r\n } else {\r\n emailPresent.push(true);\r\n }\r\n }\r\n for (i = 0; i < phoneLength; i++) {\r\n if (_.includes(enrolledComms, allPhones[i])) {\r\n phonePresent.push(false);\r\n } else {\r\n phonePresent.push(true);\r\n }\r\n }\r\n const emailsTxt = communicationOptions.emails.map(\r\n email => email.text,\r\n );\r\n const emailsVal = communicationOptions.emails.map(\r\n email => email.value,\r\n );\r\n const phonesTxt = communicationOptions.phones.map(\r\n phone => phone.text,\r\n );\r\n const phonesVal = communicationOptions.phones.map(\r\n phone => phone.value,\r\n );\r\n const textPresent = communicationOptions.phones.map(\r\n phone => phone.textEnabled,\r\n );\r\n\r\n showSelections = createDrop1(\r\n emailsVal,\r\n emailsTxt,\r\n emailPresent,\r\n false,\r\n );\r\n showPhSelections = createDrop1(\r\n phonesVal,\r\n phonesTxt,\r\n phonePresent,\r\n true,\r\n textPresent,\r\n );\r\n\r\n for (i = 0; i < showSelections.length; i++) {\r\n if (showSelections[i].show == true) {\r\n emails.push(showSelections[i]);\r\n }\r\n }\r\n for (i = 0; i < showPhSelections.length; i++) {\r\n if (showPhSelections[i].show == true) {\r\n phones.push(showPhSelections[i]);\r\n }\r\n }\r\n displayOptions.emails = emails;\r\n displayOptions.phones = phones;\r\n } else {\r\n displayOptions.emails = communicationOptions.emails;\r\n displayOptions.phones = communicationOptions.phones;\r\n }\r\n }\r\n sessionStorageService.set('displayOptions', displayOptions);\r\n };\r\n\r\n const communicationChange = function(\r\n model,\r\n extra,\r\n currentNotifModal,\r\n data,\r\n ) {\r\n const divId = extra.search('/');\r\n const notifId = extra.substr(0, divId);\r\n const channelId = Number(extra.substr(divId + 1, extra.length));\r\n\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n\r\n const remainDays = _.filter(\r\n assetService.notifPref.subThersholdvarDropdown,\r\n element => element.value === model.value,\r\n );\r\n if (remainDays.length === 0 || channelId !== 10) {\r\n if (\r\n model.value === assetService.notifPref.addNewComm.email ||\r\n model.value === assetService.notifPref.addNewComm.phone\r\n ) {\r\n currentNotifModal.title = model.value;\r\n currentNotifModal.type =\r\n model.value === assetService.notifPref.addNewComm.email\r\n ? assetService.notifPref.modalUpdate.emails\r\n : assetService.notifPref.modalUpdate.phones;\r\n currentNotifModal.notifIdModal = notifId;\r\n currentNotifModal.channelIdModal = channelId;\r\n\r\n currentNotif.notifications[channelId].addNew = true;\r\n currentNotif.notifications[channelId].communicationModel = undefined;\r\n } else {\r\n currentNotif.notifications[channelId].communication = model.value;\r\n currentNotif.notifications[channelId].addNew = false;\r\n }\r\n }\r\n\r\n let dataReturn =\r\n channelId === 10 ? false : currentNotif.notifications[channelId].addNew;\r\n currentNotif.cardError = false;\r\n findError(notifId, data);\r\n\r\n return dataReturn;\r\n };\r\n\r\n const setCommunicationValue = function(\r\n currentPref,\r\n newPref,\r\n communicationOptions,\r\n ) {\r\n let i = 0;\r\n currentPref.forEach(pref => {\r\n if (pref.notifications.length > 0) {\r\n let j = 0;\r\n pref.notifications.forEach(chanels => {\r\n let mediumChannel =\r\n chanels.channel === strings.channels.MAIL\r\n ? strings.channels_type.emails\r\n : strings.channels_type.phones;\r\n let communication;\r\n if (mediumChannel === strings.channels_type.phones) {\r\n communication = communicationOptions[mediumChannel].find(\r\n communications => {\r\n let findComm = false;\r\n\r\n if (communications.text !== '') {\r\n let comText = communications.text.replace(\r\n /[^a-zA-Z 0-9]+/g,\r\n '',\r\n );\r\n comText = comText.replace(/\\s+/g, '');\r\n findComm = comText === chanels.communication;\r\n }\r\n return findComm;\r\n },\r\n );\r\n } else {\r\n communication = communicationOptions[mediumChannel].find(\r\n communications =>\r\n communications.text.toLowerCase() ===\r\n chanels.communication.toLowerCase(),\r\n );\r\n }\r\n if (communication) {\r\n currentPref[i].notifications[j].communication =\r\n communication.value;\r\n newPref[i].notifications[j].communication = communication.value;\r\n }\r\n // else{\r\n // currentPref[i].notifications.splice(j,1);\r\n // newPref[i].notifications.splice(j,1);\r\n // }\r\n j += 1;\r\n });\r\n }\r\n i += 1;\r\n });\r\n };\r\n\r\n const setCardCommunication = function(newPref) {\r\n newPref.forEach(card => {\r\n if (card.notifications.length === 0 && card.id !== 'BILLPRINT') {\r\n card.enrolled = false;\r\n }\r\n });\r\n };\r\n\r\n const enrolledNotif = function(\r\n notifId,\r\n data,\r\n dataModel,\r\n notificationDropdowns,\r\n communicationOptions,\r\n floridaUser,\r\n ) {\r\n const currentNotif = getCurrentNotification(notifId, data);\r\n const notifModel = getCurrentNotification(notifId, dataModel);\r\n const { phones } = communicationOptions;\r\n\r\n currentNotif.cardError = false;\r\n\r\n if (\r\n notifId === strings.preferences.RATE_REVW ||\r\n notifId === strings.preferences.BILLPRINT\r\n ) {\r\n currentNotif.previousEnrolled = currentNotif.enrolled;\r\n }\r\n\r\n currentNotif.enrolled = !currentNotif.enrolled;\r\n if (\r\n (notifId === strings.preferences.RATE_REVW && !floridaUser) ||\r\n (notifId !== strings.preferences.RATE_REVW &&\r\n notifId !== strings.preferences.BILLPRINT)\r\n ) {\r\n if (notifModel.notifications.length === 0) {\r\n if (\r\n notifId !== strings.preferences.BILL_DEL &&\r\n notifId !== strings.preferences.PREPAY &&\r\n notifId !== strings.preferences.PMT_RMDR\r\n ) {\r\n addNotification(notifId, phones, notificationDropdowns, data);\r\n //addNotification(notifId, phones, notificationDropdowns, data);\r\n // let model = { value: assetService.notifPref.channelComm.voice.channel };\r\n // extra = `${notifId}/1`;\r\n // channelChange(model, extra, communicationOptions, notificationDropdowns, data);\r\n } else {\r\n addNotification(notifId, phones, notificationDropdowns, data);\r\n let model = {\r\n value: assetService.notifPref.channelComm.email.channel,\r\n };\r\n let extra =\r\n notifId !== strings.preferences.BILL_DEL &&\r\n notifId !== strings.preferences.PREPAY &&\r\n notifId !== strings.preferences.PMT_RMDR\r\n ? `${notifId}/2`\r\n : `${notifId}/0`;\r\n channelChange(\r\n model,\r\n extra,\r\n communicationOptions,\r\n notificationDropdowns,\r\n data,\r\n );\r\n }\r\n currentNotif.editionMode = true;\r\n } else findError(notifId, data);\r\n\r\n if (!currentNotif.enrolled)\r\n cancelChanges(\r\n notifId,\r\n data,\r\n dataModel,\r\n notificationDropdowns,\r\n communicationOptions,\r\n );\r\n }\r\n if (\r\n notifId === strings.preferences.RATE_REVW ||\r\n notifId === strings.preferences.BILLPRINT\r\n ) {\r\n currentNotif.editionMode = false;\r\n }\r\n };\r\n\r\n const updateDisableSave = function(\r\n currentNotifModal,\r\n communicationOptions,\r\n ) {\r\n let optionsCopy = JSON.parse(\r\n JSON.stringify(communicationOptions[currentNotifModal.type]),\r\n ); // stringify and parse for shallow copy\r\n let filteredOptions = optionsCopy.filter(x => {\r\n let optionRaw = x.text\r\n .replace('(', '')\r\n .replace(' ', '')\r\n .replace(')', '')\r\n .replace('-', '');\r\n let inputRaw = currentNotifModal.communicationModel\r\n ? currentNotifModal.communicationModel\r\n .replace('(', '')\r\n .replace(' ', '')\r\n .replace(')', '')\r\n .replace('-', '')\r\n : '';\r\n return optionRaw === inputRaw;\r\n });\r\n\r\n if (currentNotifModal.type === 'emails') {\r\n let emailCheck = optionsCopy.filter(x => {\r\n let emailOptions = x.text.toLowerCase();\r\n let emailinput = currentNotifModal.communicationModel\r\n ? currentNotifModal.communicationModel.toLowerCase()\r\n : '';\r\n return emailOptions === emailinput;\r\n });\r\n filteredOptions = emailCheck;\r\n }\r\n\r\n return !!filteredOptions.length;\r\n };\r\n\r\n const sendEventAttribute = function(objParams) {\r\n let params = [\r\n 'workFlow:' + objParams.workFlow,\r\n 'buttonText:' + objParams.buttonText,\r\n 'headline:' + objParams.headline,\r\n ];\r\n if (objParams.subheadline)\r\n params.push('subheadline:' + objParams.subheadline);\r\n if (objParams.addedSpec) params.push('addedSpec:' + objParams.addedSpec);\r\n if (objParams.addedHeadline)\r\n params.push('addedHeadline:' + objParams.addedHeadline);\r\n if (!objParams.subheadline) {\r\n commongaTaggingService.attributePush(params);\r\n } else {\r\n if (objParams.subheadline != 'Paperless Billing') {\r\n commongaTaggingService.attributePush(params);\r\n }\r\n }\r\n };\r\n const updateDisableToggle = function(card) {\r\n let accountData = sessionStorageService.get(\r\n assetService.notifPref.sessionStorage.accountData,\r\n );\r\n if (\r\n !accountData ||\r\n !accountData.relatedBusinessPartnerId ||\r\n !accountData.businessPartnerId\r\n ) {\r\n console.warn('BP unavailable in session');\r\n return false;\r\n }\r\n if (\r\n accountData.relatedBusinessPartnerId !== accountData.businessPartnerId\r\n )\r\n return false;\r\n if (!card.enrolled) return false;\r\n return notificationPreferencesAssetsService.strings.cardToggleMapping.unEnrollable.includes(\r\n card.id,\r\n );\r\n };\r\n\r\n return {\r\n setNotifications,\r\n saveChanges,\r\n createsaveChanges,\r\n cancelChanges,\r\n deleteNotification,\r\n createNewCommunication,\r\n updateNotif,\r\n addNotification,\r\n channelChange,\r\n commChange,\r\n dropdownFilter,\r\n communicationChange,\r\n enrolledNotif,\r\n getCurrentNotification,\r\n beautifyPhone,\r\n createDrop,\r\n createDrop1,\r\n setCommunicationValue,\r\n setCardCommunication,\r\n updateDisableSave,\r\n sendEventAttribute,\r\n compareChanges,\r\n resetChanges,\r\n };\r\n },\r\n);\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable max-len */\r\napp.factory('TPSCSVService', function (\r\n) {\r\n const vm = this;\r\n let formattedData = {};\r\n\r\n function exportToCSV(pageCase, newData, fileName) { /* (NewCaseToMap, Array, FileNAme) */\r\n switch (pageCase) {\r\n case 'customer':\r\n formattedData = _.map(newData, record => ({\r\n Name: record.name,\r\n 'Street Address': record.streetAddress,\r\n City: record.city,\r\n State: record.state,\r\n 'Zip Code': record.zipCode,\r\n Telephone: record.telephoneNo,\r\n 'Account Number': record.accountNumber,\r\n }));\r\n\r\n saveAsCSV(formattedData, fileName);\r\n break;\r\n\r\n case 'property':\r\n formattedData = _.map(newData, record => ({\r\n 'Billing Name' : record.customerBillingName,\r\n 'First Name': record.customerFirstName,\r\n 'Last Name': record.customerLastName,\r\n 'Street Address1': record.streetAddress1,\r\n 'Street Address2': record.streetAddress2,\r\n City: record.city,\r\n State: record.state,\r\n 'Zip Code': record.zipCode,\r\n 'Account Number': record.accountNumber,\r\n 'Account Status': record.accountStatus\r\n }));\r\n\r\n saveAsCSV(formattedData, fileName);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function saveAsCSV(dataFormatted, fileName) {\r\n const csvFile = Papa.unparse(dataFormatted, {\r\n header: true,\r\n });\r\n\r\n const blob = new Blob([csvFile], { type: 'text/plain;charset=utf-8' });\r\n saveAs(blob, `${fileName}.csv`);\r\n }\r\n\r\n return {\r\n exportToCSV,\r\n };\r\n});\r\n"]}